【轉】編譯安裝MySQL

原文地址:http://www.orczhou.com/index.php/2010/06/compile-mysql-from-source/

 

使用rpm包,或者apt-get、yum等方式安裝MySQL已經很方便了,不過我還是更喜歡編譯安裝。編譯安裝的好處:平臺無關、安裝的MySQL目錄獨立(方便清楚),據說有更好的性能和平臺耦合。缺點,編譯安裝較慢(不過現在8核CPU編譯起來也很快了)。

 

1. MySQL編譯參數

 

常用的參數有:

 

CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \
-fno-exceptions -fno-rtti" ./configure \
--prefix=/data/mysql --with-extra-charsets=latin1,gbk,utf8 \
--with-plugins=partition,heap,innobase,myisam,myisammrg,csv \
--enable-assembler
make
make install

 

“If you are using a version of gcc recent enough to understand the -fno-exceptions option, it is very important that you use this option. Otherwise, you may compile a binary that crashes randomly. Also use -felide-constructors and -fno-rtti along with -fno-exceptions.”

參考:MySQL Installation Using a Source Distribution

 

2. 多核編譯

 

可以通過 -j 參數指定編譯使用的CPU數量,之前一直沒有注意使用這個選項,以下是對比測試:

 

$date && make > make.log 2>&1 && date
Fri Apr 16 16:32:00 CST 2010
Fri Apr 16 16:39:37 CST 2010

$date && make -j 8 > make.log 2>&1 && date
Fri Apr 16 16:27:10 CST 2010
Fri Apr 16 16:28:30 CST 2010

$date && make -j 15 > make.log 2>&1 && date
Fri Apr 16 16:50:23 CST 2010
Fri Apr 16 16:51:41 CST 2010

 

看到,單核編譯花了457秒,八覈編譯花了80秒,十五覈編譯花了78秒。

 

3. 目錄結構

 

最初安裝MySQL,不用RPM包的另一個重要原因就是,編譯安裝我們可以獲得相對獨立的MySQL目錄,包括Server、Client、Data File等都可以比較好的規劃在一個目錄中。

 

在編譯時,使用--prefix=/data/mysql則可以保證,Server(mysqld_safe)、Client(mysql)等統一 在prefix所制定的目錄下;在/etc/my.cnf文件中,我們再繼續指定Data File目錄、sock文件目錄、pid文件目錄、日誌目錄、tmp目錄,這樣基本上就保證了整個MySQL的獨立性。

 

你甚至可以把/etc下的my.cnf文件都轉移到prefix指定的目錄下,這樣你就擁有一個完整而且獨立的MySQL目錄了。

 

4. 需要注意的問題

 

一般編譯安裝之後,很多生成的腳本中都會寫死目錄(prefix指定的目錄),這樣編譯好的腳本(二進制、shell、perl)如果轉移到別的目錄可能會導致無法運行。

 

例如,編譯時指定prefix=/data/ mysql,如果最後你把編譯好的文件轉移到/opt/ mysql,很多腳本可能會無法運行,甚至會發生很多怪異的現象:-(

 

5. 安裝實踐 step by step

 

下面是將MySQL安裝在/home/mysql目錄下的一個實際操作過程,這裏的prefix將指定目錄/home/mysql/mysql(你可以根據需要修改爲自己需要指定的位置)

 

# # # 新建運行MySQL的用戶
groupadd dba
useradd -g dba mysql
cp mysql-5.0.86.tar.gz /home/mysql/
chown -R mysql:dba /home/mysql/mysql-5.0.86.tar.gz

# # # 開始編譯、安裝
su - mysql
tar zxvf /home/mysql/mysql-5.0.86.tar.gz
cd mysql-5.0.86
./configure \
--prefix=/home/mysql/mysql --with-extra-charsets=latin1,gbk,utf8 \
--with-plugins=partition,heap,innobase,myisam,myisammrg,csv
make -j 8 && make install   #-j 表示希望使用cpu核數

# # # 建立配置文件
cd /home/mysql/mysql
su - root
cp mysql/share/mysql/my-medium.cnf /etc/my.cnf
chown -R mysql:dba /etc/my.cnf

# # # 修改配置文件 配置數據文件、日誌的路徑
su - mysql
vi /etc/my.cnf
basedir = /home/mysql/mysql
datadir = /home/mysql/mysql/data
socket = /home/mysql/mysql/run/mysql.sock
log-error = /home/mysql/mysql/log/alert.log
log_slow_queries = /home/mysql/mysql/log/slow.log

mkdir log run data tmp

# # # 初始MySQL配置表(用戶表 權限表等)
./bin/mysql_install_db --basedir=/home/mysql/mysql  --datadir=/home/mysql/mysql/data --user=mysql --force

# # # 啓動MySQL
./bin/mysqld_safe &
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章