boost mysql_玩转MySQL 8.0源码编译
原标题:玩转MySQL 8.0源码编译
导读
最近十年来又一次玩玩MySQL源码编译安装,挺D疼的。
这阵子结课了,闲来无事就继续折腾之前记录的一些TODO,其中一个是令人D疼的MySQL源码编译。
此前我最后一次编译MySQL源码大概10年前了,再后来有人问我怎么编译源码安装,我一般都是建议直接下载二进制包安装,其实真挺方便点的,性能上的损失也是微乎其微。
编译安装MySQL前,需要先安装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,所以需要自行下载安装。
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-5
cmake .
-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等着顺利编译安装即可。
enjoy mysql 8.0。
附录:在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
责任编辑:
boost mysql_玩转MySQL 8.0源码编译相关推荐
- 手机编译mysql_玩转MySQL 8.0源码编译
先说第一种,自带boost的源码编译 首先,下载带boost代码的MySQL源码包,在官网下载页面有相应的提示:  解压缩后,就可以开始编译了.首先,指定编译的选项: [root@yejr.me]# ...
- ambari 2.5.0源码编译安装
参考:https://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/index.html Ambari 是什么 Ambar ...
- cmake 编译curl源码_OpenCV4.0 源码编译
之前写过几篇关于OpenCV的博客,都是基于openCV 3.14写的,10月份OpenCV发布了4.0的bate版本,我就切换到4.0版本上来.之后的博客都会是基于4.0版本的.本文主要介绍一下三个 ...
- Android4.0源码编译方法以及错误解决方案
from:http://blog.csdn.net/wanjun8659/article/details/8095664 历时一个星期,终于将android4.0源码编译成功,中间经历了各种曲折,非常 ...
- postgresql 12.0 源码编译安装
postgresql 12.0 源码编译安装 1.安装相关软件包 su - root yum install -y cmake gcc gcc-c++ perl readline readline-d ...
- Atlas 2.2.0源码编译及安装步骤
Atlas 2.2.0源码编译及安装步骤 一.源码编译 1. 下载源码 2. 前置环境安装 3. 修改版本号 4. 修改源码中 atlas与kafka版本兼容问题 5. 开始编译 6. 问题锦集 二. ...
- tesseract-4.0.0源码编译安装
tesseract-4.0.0源码编译安装 安装开发工具 apt-get -y install gcc g++ make cmake autoconf automake libtool pkg-con ...
- python 3.10.0源码编译安装
python 3.10.0源码编译安装 文章目录 python 3.10.0源码编译安装 1. 安装编译依赖工具 2. 下载python 3.10.0 3. 编译安装 Python 4. 体验 1. ...
- mysql 5.7 源码编译安装_mysql-5.7.*源码编译安装
mysql-5.7.*源码编译安装 系统安装条件 官方文档说明:http://dev.mysql.com/doc/refman/5.7/en/source-installation.html 1> ...
- linux gcc-9.2.0 源码编译
目录 下载gcc-9.2.0源码 解压源码包 下载依赖 创建编译输出目录 编译配置信息 编译 安装 清理 查看GLIBCXX的版本 验证 下载gcc-9.2.0源码 http://ftp.gnu.or ...
最新文章
- linux检测病毒工具,Linux下查杀病毒工具
- Doc2Vec,Word2Vec文本相似度 初体验。
- linux进阶命令2
- php职业认证,如何用 PHP 进行 HTTP 认证
- Android 隐藏状态栏,沉浸式状态栏,状态栏背景色,状态栏字体色,透明状态工具类
- Spring Boot 终极清单
- MySQL设置数据格为空白或NULL
- 小学教师计算机应用培训通讯稿,暑期培训通讯稿
- Linux查看磁盘块大小
- 【收藏干货】axios配置大全
- Matlab 绘制箱线图
- 算法学习之路|取石子
- 界面开发控件DotNetBar for WPF教程:MobileRibbon快速入门指南
- easyui事件方法onChange()、onSelect()、 onLoadSuccess()
- 百度网盘下载速度慢的解决方式
- clickhouse UI可视化工具
- 中国鞋服行业首个AIGC准专业级设计大赛来了!
- (二)WaveDrom Editor使用教程
- 微信公众号--会员数据导出
- IntellIdea中的jsp中include出现乱码问题