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   51ak  阅读(649)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!

导航

统计

点击右上角即可分享
微信分享提示