一直想深入了解下MySQL的內(nèi)核上線,也陸陸續(xù)續(xù)買了些關(guān)于MySQL的書籍眷昆,然而,進(jìn)展不大汁咏,MySQL是個很復(fù)雜亚斋、很大的系統(tǒng),雖然知道只想了解InnoDB的實現(xiàn)機(jī)制攘滩,也苦苦找不到地方下手帅刊,網(wǎng)上也有解析InnoDB實現(xiàn)的blog,確實極大提高了對InnoDB的了解漂问,只不過有點隔靴搔癢的感覺赖瞒。
偶然之間發(fā)現(xiàn)了blog女揭,在Linux下搭建MySQL環(huán)境,試試在Mac下也搭建冒黑,不成想還挺順利的田绑,簡述步驟如下勤哗,以備以后再次搭建時查看抡爹;
工具
CLIon:
官網(wǎng)下載地址
送佛送到西,注冊碼Mysql源碼
官網(wǎng)下載地址 ,選擇源碼下載即可boost 下載
從源碼中可以看到芒划,是需要1.65.0 下載對應(yīng)的boost
準(zhǔn)備工作
- 確定MySQL源碼目錄:/Users/shiyibo/Sc/mysql-8.0.4-rc
- 確定MySQL編譯工作目錄[basedir]:/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc
- 確定MySQL編譯后的數(shù)據(jù)目錄[datadir]:/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc/data
搭建
- 編譯MySQL
// 第一步 進(jìn)入源碼目錄
cd /Users/shiyibo/Sc/mysql-8.0.4-rc
// 第二步 cmake
cmake \
-DCMAKE_INSTALL_PREFIX=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc \
-DMYSQL_DATADIR=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc/data \
-DSYSCONFDIR=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc \
-DMYSQL_UNIX_ADDR=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc/data/mysql.sock \
-DWITH_DEBUG=1 \
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/Users/shiyibo/Sc/boost_1_65
// 第三步 make
make -j 4
// 第四步 安裝
make install -j 4
// 第五步 初始化數(shù)據(jù)庫
cd /Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc/bin
./mysqld --basedir=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc --datadir=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc/data --initialize-insecure --user=shiyibo
clion 配置
-
導(dǎo)入mysql源碼項目
選擇路徑:/Users/shiyibo/Sc/mysql-8.0.4-rc, 導(dǎo)入后冬竟,clion會默認(rèn)用系統(tǒng)自動的makefile文件make一遍,如果系統(tǒng)自帶的boost不是1.65.0的話民逼,會有報錯泵殴,不用處理,接下來cmake配置后拼苍,不會有這問題笑诅;
-
cmake 配置
clion -> Preferences -> Build,Execution,Deployment -> CMake
image.png
// 1 設(shè)置Name 為mysqld(這個地方參考文獻(xiàn)1中的圖,錯誤設(shè)置為mysqld疮鲫,后面配置debug時不能用mysqld吆你,而使用了mysqld2)
// 2 BuildType: 設(shè)置為Debug
// 3 Cmake Option 設(shè)置為:
-DCMAKE_INSTALL_PREFIX=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc \ -DMYSQL_DATADIR=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc/data \ -DSYSCONFDIR=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc \ -DMYSQL_UNIX_ADDR=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc/data/mysql.sock \ -DWITH_DEBUG=1 \ -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/Users/shiyibo/Sc/boost_1_65
- 配置debug
起先,找了很久的debug配置俊犯,后來發(fā)現(xiàn)妇多,人挺傻帽的,直接上圖
點擊Edit Configurations.... 就可以了
繼續(xù)上圖
// 1 中的Target和Executable 都選擇mysqld
// 2 中寫一個Name燕侠,由于上一步已經(jīng)寫了mysqld者祖,這里再次寫mysqld,提示已經(jīng)有應(yīng)用是mysqd了绢彤,這里寫的是mysqld2
// 3 中寫的是
--basedir=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc --datadir=/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc/data
// 4 中是MySQL編譯后的Home路徑
- 至此七问,該配置的就配置好了,點擊debug臭蟲茫舶,就可以啟動MySQL
調(diào)試
// 找到sql/sql_parse.cc 的do_command函數(shù)械巡,設(shè)置斷點
// 登錄MySQL,需要進(jìn)入/Users/shiyibo/Sc/mysql_data/mysql-8.0.4-rc/bin下面執(zhí)行奇适, 直接enter回車即可,root初始化密碼為空密碼
mysql -uroot -h127.0.0.1 -P3306 -p
// 程序就可以正常運行到斷點處坟比,接下來,就可以繼續(xù)研究了
總結(jié):
主要參考了大牛在Linux下的設(shè)置嚷往,監(jiān)獄Linux和Unix的親緣關(guān)系葛账,整個執(zhí)行下來也是蠻順利的,將自己的執(zhí)行方法記錄下來皮仁,以備后續(xù)溫習(xí)籍琳;
文筆不好菲宴,組織沒有大牛流暢,不明白的可以移步大牛博客處趋急,再次向大牛學(xué)習(xí)喝峦,敬禮!N卮铩谣蠢!
參考文章:
1、https://blog.csdn.net/d6619309/article/details/75201876