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 源码

打开后需要先设置工具链,如图所示:

mysql编译安装脚本 mysql源码编译_mysql


在这里我们使用 CLion 自带的 CMake 就行了,不需要自己去安装。

接着我们需要配置 CMake 参数:

mysql编译安装脚本 mysql源码编译_数据库_02

在 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 选项,如下所示:

mysql编译安装脚本 mysql源码编译_mysql编译安装脚本_03


我们找到名称为 mysqld 的选项,它就是 MySQL Server 启动的选项。可以先用该选项执行 MySQL数据库目录的初始化操作,生成对应的配置文件和用户名密码,然后再使用该选项来启动 MySQL Server。要注意,两个操作对应的参数不一样。

初始化的参数如下:

--initialize-insecure --user=mysql

然后再使用下面参数启动:

--user=mysql

最后使用登录命令进行登录,直接回车就可以,因为我们初始化的时候并没有设置密码

mysql -uroot -p

然后我们就可以在 CLion 上打上断点,对 MySQL 进行调试了。