51ak带你看MYSQL5.7源码2:编译现有的代码
从事DBA工作多年
MYSQL源码也是头一次接触
尝试记录下自己看MYSQL5.7源码的历程
申明:个人Python编程很溜,但是C++还停在白痴水平,源码理解方面有点弱,如发现有错误的地方,轻喷
目录:
51ak带你看MYSQL5.7源码1:main入口函数 (2018-03-21)
51ak带你看MYSQL5.7源码2:编译现有的代码 (2018-03-22)
51ak带你看MYSQL5.7源码3:修改代码实现你的第一个Mysql版本 (2018-03-23)
51ak带你看MYSQL5.7源码4:实现SQL黑名单功能(2018-04-11)
现在把刚才在VSCODE里看到的源码,安装成服务。
测试机:CENTOS6 (虚机配置为4c+4g ),
YUM安装相关组件
yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison
执行完成后看一下现有的BOOTST版本 如果有删掉
root@wjz-3-227 ~]# rpm -qa boost* boost-filesystem-1.41.0-18.el6.x86_64 boost-system-1.41.0-18.el6.x86_64 [root@wjz-3-227 ~]# yum -y remove boost-* Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Remove Process Resolving Dependencies --> Running transaction check
上传我们编辑好的文件到测试机,放在/work目录下
拷贝安装BOOST
root@wjz-3-227 mysql-server]# ll total 108 drwxr-xr-x. 8 root root 4096 Mar 22 2018 boost_1_59_0 -rw-r--r--. 1 root root 160 Dec 28 12:00 filter-provides.sh -rw-r--r--. 1 root root 176 Dec 28 12:00 filter-requires.sh drwxr-xr-x. 32 root root 4096 Mar 22 2018 mysql-5.1.72 drwxr-xr-x. 35 root root 4096 Mar 22 2018 mysql-5.7.21 -rw-r--r--. 1 root root 88859 Dec 28 12:00 mysql.spec [root@wjz-3-227 mysql-server]# cp -r boost_1_59_0 /usr/local/boost
执行以下脚本
groupadd mysql mkdir /home/mysql mkdir /home/mysql/data useradd mysql -g mysql -d /home/mysql cd mysql-5.7.21/ mkdir debug cd debug
开始MAKE
cmake .. \ -DCMAKE_INSTALL_PREFIX=/home/mysql \ -DMYSQL_DATADIR=/home/mysql/data \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DMYSQL_TCP_PORT=3306 \ -DMYSQL_USER=mysql \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=/usr/local/boost
出现 下图表示成功。
make -j 4
漫长的等待,编译成功(测试机性能太次)
下面安装和初始化:
make install make clean rm -f CMakeCache.txt cd /home/mysql chown -R mysql:mysql . ll bin/mysqld --initialize --user=mysql --basedir=/home/mysql --datadir=/home/mysql/data #这一步记住生成的密码,一会要用 ll data/ vim /etc/my.cnf vim mysql.server cp mysql.server /etc/init.d/mysqld3306 chmod 755 /etc/init.d/mysqld3306 cd .. ll service mysqld3306 start bin/mysql -h127.0.0.1 -uroot -p
好,今天到此为止