`

【转】编译安装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 &
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics