此前我最后一次编译 MySQL 源码大概 10 年前了,再后来有人问我怎么编译源码安装,我一般都是建议直接下载二进制包安装,其实真挺方便的,性能上的损失也是微乎其微。
编译安装 MySQL 8.0 前,需要先安装 Boost,因此有两种不同的安装方案。
提示下,编译 MySQL 8.0 版本,需要 GCC 版本 5.3.0 以上才行。我这次的编译环境是 CentOS 7.5,其 GCC 版本是 4.8.5,因此我在后面附上安装新版本 GCC 的方法,并且在编译参数中特别指定了新版本的绝对路径。
小插曲:一开始我设置了环境变量,不行;修改 Makefile 参数,也不行;后来把新版本 GCC 做个软链接就行了。最后在重庆八怪的提醒下,才知道原来还可以在编译参数里设置绝对路径。
第一种 自带 Boost 的源码编译
首先,下载带 Boost 代码的 MySQL 源码包,在官网下载页面有相应的提示:
解压缩后,就可以开始编译了。首先,指定编译的选项:
[root@yejr.me]# cd /opt/src/mysql-8.0.15/cmake . \-DWITH_BOOST=/opt/mysql-8.0.15/boost/ \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-8.0.15 \-DMYSQL_DATADIR=/data/mysql \-DWITHOUT_CSV_STORAGE_ENGINE=1 \-DWITHOUT_BLACKHOLD_STORAGE_ENGINE=1 \-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 \-DWITHOUT_MRG_MYISAM_STORAGE_ENGINE=1 \-DWITHOUT_NDBCLUSTER_STORAGE_ENGINE=1 \-DFORCE_INSOURCE_BUILD=1 \-DCMAKE_CXX_COMPILER=/usr/local/bin/g++ \-DCMAKE_C_COMPILER=/usr/local/bin/gcc
在上面的参数中,我把不常用的引擎直接给禁用了,读者们若有需要个别引擎可自行删除对应选项即可。而 DEBUG、SSL 等几个选项则建议不要禁用。
为了好玩,也为了应对某些流氓安全扫描工具(你们懂得的^@@^),我特地把 MySQL 版本号修改掉,只需修改 mysql_version.h 文件即可,例如:
[root@yejr.me]# vim include/mysql_version.h...#define MYSQL_SERVER_VERSION "3306.0.15"#define MYSQL_BASE_VERSION "mysqld-3306.0"#define MYSQL_SERVER_SUFFIX_DEF ""#define MYSQL_VERSION_ID 33060015#define LIBMYSQL_VERSION "3306.0.15"#define LIBMYSQL_VERSION_ID 33060015…
接下来就是执行 make && make install,顺利的话就完成编译并安装了。如果编译错误,则删除 CMakeCache.txt 文件后解决对应错误,重新编译即可。
编译完后看到的 MySQL 版本号就是这样的了:
[root@yejr.me]# /usr/local/mysql/bin/mysqld --verbose -V/usr/local/mysql/bin/mysqld Ver 3306.0.15 for Linux on x86_64 (Source distribution)
有没有感觉有点酷酷的,嘿。
第二种 自行安装 Boost 后再编译 (这种方式实在费劲,强烈不推荐。)
可以采用 YUM/RPM 包方式安装 Boost,也可以自己下载源码包编译安装,或在编译 MySQL 时指定参数自行下载编译(建议用这个方法)。
下面演示的版本是 Percona Server 8.0.15,要求 Boost 版本是 1.68.0 以上,而 CentOS 7.5 安装的 Boost 版本是 1.53.0,所以需要自行下载安装。
需要下载 PRM 包的话,可以在这里搜索相应版本下载
https://www.rpmfind.net/linux/rpm2html/search.php
如果没找到合适的版本,可以在下面这个地址下载 Boost-1.69.0 版本源码包。
https://sourceforge.net/projects/boost/
下载后,执行编译并安装即可。
[root@yejr.me]# ./bootstrap.sh --prefix=/usr/local/boost[root@yejr.me]# ./b2 install
安装完 Boost 后,再开始编译 MySQL。
另外,上面有提到过,如果不想事先手动安装 Boost,可以增加一个 DOWNLOAD_BOOST 参数,就像下面这样:
[root@yejr.me]# cd /opt/src/percona-server-8.0.15-5cmake . \-DOWNLOAD_BOOST=1 \-DWITH_BOOST=/opt/src/percona-8.0.15-5/boost \-DCMAKE_INSTALL_PREFIX=/usr/local/percona-8.0.15-5 \-DMYSQL_DATADIR=/data/mysql \-DWITHOUT_CSV_STORAGE_ENGINE=1 \-DWITHOUT_BLACKHOLD_STORAGE_ENGINE=1 \-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 \-DWITHOUT_MRG_MYISAM_STORAGE_ENGINE=1 \-DWITHOUT_NDBCLUSTER_STORAGE_ENGINE=1 \-DWITHOUT_TOKUDB_STORAGE_ENGINE=1 \-DWITHOUT_TOKUDB=1 \-DWITHOUT_ROCKSDB_STORAGE_ENGINE=1 \-DWITHOUT_ROCKSDB=1 \-DFORCE_INSOURCE_BUILD=1 \-DCMAKE_CXX_COMPILER=/usr/local/bin/g++ \-DCMAKE_C_COMPILER=/usr/local/bin/gcc
后面同样是执行 make && make install 等着顺利编译安装即可。
附录:在 CentOS 7.5 下安装 GCC 5.5.0 的方法
安装官方 MySQL 8.0 需要用 GCC 5.3.0 以上版本,所以需要先安装高版本 GCC,我这里选择的是 GCC-5.5.0。在这里下载:
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
解压缩后,执行下面的命令,下载其他依赖包:
[root@yejr.me]# cd gcc-5.5.0#下载mpfr、gmp、mpc、isl等依赖包[root@yejr.me]# ./contrib/download_prerequisites#开始编译gcc[root@yejr.me]# mkdir build && cd build[root@yejr.me]# ../configure --enable-checking=release \--enable-languages=c,c++ --disable-multilib[root@yejr.me]# make && make install
看起来其实挺简单的对不对 :)
参考文档
2.9.4 MySQL Source-Configuration Options,https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
Installing Percona Server for MySQL 8.0.15-5,https://www.percona.com/doc/percona-server/5.7/installation.html
Centos7 升级 gcc 学习笔记 https://www.cnblogs.com/highway-9/p/5628852.html
来源:老叶茶馆
原文:http://t.cn/EKGDRp9题图:来自谷歌图片搜索
版权:本文版权归原作者所有投稿:欢迎投稿,投稿邮箱: editor@hi-linux.com
今日思想
Freedom is not letting you do whatever you wanna but teaching you not to do the things you don't wanna do.
自由不是让你想做什么就做什么,自由是教你不想做什么,就可以不做什么。
—— 伊曼努尔·康德
推荐阅读
MySQL 5.7 多源复制实践
MySQL 5.7 并行复制实践
浅析 MySQL Replication
浅谈几种常用负载均衡架构
大话高并发架构