因为在写MySQL日志订阅服务时候,须要肯定在什么event以后保存position,因此就开始研究MySQL的源码,刚开始采用最原始的打印输出的方式去调试,而后每次改完编译运行,效率好低,让我很绝望,而后我花了些时间研究下怎么使用CLion Debug MySQL。html
获取源码mysql
git clone https://github.com/mysql/mysql-server
编译安装初始化数据库git
cd mysql-server cmake \ -DCMAKE_INSTALL_PREFIX=/path/mysql/install \ -DMYSQL_DATADIR=/path/mysql/data \ -DSYSCONFDIR=/path/mysql/etc \ -DMYSQL_UNIX_ADDR=/path/mysql/mysql.sock \ -DWITH_DEBUG=1 \ -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/path/mysql-server/ -DDOWNLOAD_BOOST_TIMEOUT=60000 make -j 4 make install -j 4 mysqld --initialize-insecure --user=root --datadir=/path/mysql/data
启动MySQL,测试下是否安装成功 github
/path/install/bin/mysqld --defaults-file=/path/mysql/etc/my.cnf
使用CLion新建工程并打开源码目录以后,设置CLion sql
CMake Options和你编译安装时的选项一致数据库
-DCMAKE_INSTALL_PREFIX=/path/mysql/install -DMYSQL_DATADIR=/path/mysql/data -DSYSCONFDIR=/path/mysql/etc -DMYSQL_UNIX_ADDR=/path/mysql/mysql.sock -DWITH_DEBUG=1
而后在CLion里,Reload CMake Project架构
在Run/Debug列表里就能够看到不少选项了学习
找到mysqld配置下启动参数 测试
mysqld --defaults-file=/path/mysql/etc/my.cnf
而后以Debug模式启动,看下成功的效果 调试
学习MySQL源码的文档
https://dev.mysql.com/doc/internals/en/
能够找到想要学习的功能的源码位置,不至于没头苍蝇,好比主从同步功能(replication)
https://dev.mysql.com/doc/internals/en/replication-source-code-files.html
更多架构、PHP、GO相关踩坑实践技巧请关注个人公众号:PHP架构师