51ak.blogs

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

 

好,今天到此为止

 

posted on 2018-03-22 18:43  51ak  阅读(649)  评论(0编辑  收藏  举报

导航