因爲在寫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架構師