MAC 下编译调试 MySQL8.0 源码
最近遇到几个关于 MySQL 死锁的问题,但是查看网上的资料发现并不能解决我遇到的问题,于是决定从源码寻找答案,所以在这里记录一下自己编译 MySQL 源码的过程。
环境配置如下:
- macOS Ventura 版本 13.1
- CLion 2022.2.4
- MySQL version: 8.0.31
1 编译 MySQL 源码
1.1 下载源码
我们可以直接从官方的 GitHub 上下载最新的源码:
# 进入你要放源码的文件夹
cd ~/CLionProjects
# 下载源码
git clone https://github.com/mysql/mysql-server.git
# 如果下载地址比较慢的话,可以使用 gitee 下载
git clone https://gitee.com/mirrors/mysql-server.git
1.2 配置 CLion
下载好源码之后,我们就可以使用 CLion 打开我们的 MySQL 源码
打开后需要先设置工具链,如图所示:
在这里我们使用 CLion 自带的 CMake 就行了,不需要自己去安装。
接着我们需要配置 CMake 参数:
在 CMake 选项那里,填入如下内容:
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=~/CLionProjects/mysql-server/boost
-DCMAKE_BUILD_TYPE=Debug
-DCMAKE_INSTALL_PREFIX=~/CLionProjects/mysql-server/build_out
-DMYSQL_DATADIR=~/CLionProjects/mysql-server/build_out/data
-DSYSCONFDIR=~/CLionProjects/mysql-server/build_out
-DMYSQL_UNIX_ADDR=~/CLionProjects/mysql-server/build_out/data/mysql.sock
-DMYSQL_MAINTAINER_MODE=false
其中比较重要的有:
- DDOWNLOAD_BOOST: 为 1 则会下载 boost
- DWITH_BOOST: 指定 boost 路径,可以直接指向源码文件夹下的 boost 文件夹;
- DCMAKE_BUILD_TYPE: 表示是 debug,方便后续代码调试;
- DCMAKE_INSTALL_PREFIX: 表示编译状态的路径,选择源码文件夹之外的一个自建的 build_out 文件夹
- DMYSQL_DATADIR:表示 MySQL 默认的数据目录,选择 build_out 文件夹下的 data 文件
点应用配置后,CLion 就会自动帮我们编译,只需要静静等待编译完成就行了。
2 调试 MySQL 源码
如果 CLion 的 CMake 执行成功后,就会出现对应的 Run / Debug Configurations 选项,如下所示:
我们找到名称为 mysqld 的选项,它就是 MySQL Server 启动的选项。可以先用该选项执行 MySQL数据库目录的初始化操作,生成对应的配置文件和用户名密码,然后再使用该选项来启动 MySQL Server。要注意,两个操作对应的参数不一样。
初始化的参数如下:
--initialize-insecure --user=mysql
然后再使用下面参数启动:
--user=mysql
最后使用登录命令进行登录,直接回车就可以,因为我们初始化的时候并没有设置密码
mysql -uroot -p
然后我们就可以在 CLion 上打上断点,对 MySQL 进行调试了。