TiDB 原始碼系列之沉浸式編譯 TiDB

TiDBCommunityTechPortal發表於2022-04-12

最近剛學習完PCTP,對TiDB的各種讀寫有了粗略的瞭解,但是要想研究的更細節一些的東西,
肯定離不開學習原始碼,學習原始碼的話大家可以參考官方的TiDB原始碼系列文章,但是官方的文章
都是18年發的,可能會有些滯後,所以大家可以參考這個以及結合原始碼去學。
TiDB原始碼系列解讀文章官方原始碼解讀部落格地址
然而學習原始碼肯定編譯除錯原始碼是最有效的學習途徑,經過這幾天的學習,以及請教開發大佬,
成功編譯了TiDB,所以分享給對原始碼感興趣的小夥伴。

Goland白嫖款一個(30天)
TiDB 最新款原始碼tar包一份
Mac一臺

1.首先去github上下載原始碼:原始碼下載地址
2.選擇自己想要看的版本:這裡我以最新的5.4.0版本為例。
在這裡插入圖片描述
3.解壓tar包

#1.開啟終端
#2.到對應目錄解壓tar包
tar -xzvf tidb-5.4.0.tar.gz
#解壓後就會得到一個資料夾

由於TiDB是使用的go語言編寫的,所以我們使用goland進行編譯。
1.下載一個30天白嫖版,有能力的可以直接購買付費版(支援正版)
下載地址:goland下載地址
選擇適合自己的電腦系統的進行下載:
在這裡插入圖片描述
2.安裝完成之後選擇對應開啟的專案。
在這裡插入圖片描述
3.找到自己剛才解壓的TiDB原始碼資料夾,開啟
在這裡插入圖片描述
4.開啟後可能會出現很多的報錯(如下圖),但是問題不大,基本都是因為沒有安裝go的相關module導致的。
在這裡插入圖片描述
所需的gomodule可以在程式碼中的下面檔案看到,可以看到目前都是紅色,說明缺少對應的mod。
在這裡插入圖片描述

5.開啟goland的設定,然後下載最新版的goroot,就會安裝所需的module。
在這裡插入圖片描述
然後選擇一個最新的版本下載就好。
在這裡插入圖片描述
然後在下面就會開始下載相關的依賴:
在這裡插入圖片描述
測試的時候發現只會下載一部分,所以剩下的缺少的可以點選圖片中的從github sync。
在這裡插入圖片描述
下載完成之後就會全部變綠,至此環境我們就配置好了。
在這裡插入圖片描述

經過上面的步驟,基本一切環境已經就緒,接下來我們就可以自己編譯TiDB資料庫。
1.但是會又有一個問題從哪開始執行?
這裡還是要藉助我開始說的官方原始碼系列:如何學習TiDB原始碼
作為一個非專業開發人員,只能藉助官網提示去學習。
從我上面的地址,大家可以看到TiDB原始碼檔案對應什麼,以及從哪裡開始。
在這裡插入圖片描述
2.從上面我們可以從官方部落格知道從tidb-server/main.go執行
首先main.go裡面的var就是我們系統的啟動引數,大家可以修改對應的引數進行啟動
在這裡插入圖片描述

然後下面找到main函式旁邊的綠色按鈕,大家可以選擇debug模式或者直接執行,這裡我選擇Debug模式,可以看到更多的資訊。
在這裡插入圖片描述
點選之後需要等待一會兒,螢幕下方會顯示compiling..
編譯完之後,大家就可以在debug欄看到對應的資訊:
可以看到[INFO] [server.go:246] ["server is running MySQL protocol"] [addr=0.0.0.0:4000]說明啟動成功了。
在這裡插入圖片描述
3.去訪問看看是否真正執行成功。
可以看到TiDB服務已經在執行,
使用MySQL命令列訪問TiDB,可以看到已經O K,至此編譯完成。
在這裡插入圖片描述

執行成功後,大家後續就可以透過對不同的函式打斷點,然後看自己的SQL會呼叫哪些程式碼中的哪些函式。函式的位置可以參考官方部落格原始碼解析進行斷點測試。

原文作者:@Jiawei 發表時間:2022/2/24
原文連結:TiDB原始碼系列之沉浸式編譯TiDB | TiDB 社群

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章