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

TiDBCommunityTechPortal發表於2022-04-12

1.背景

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

2.準備工具

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

3.原始碼下載

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

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

4.編譯軟體下載配置

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

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

5.編譯過程

經過上面的步驟,基本一切環境已經就緒,接下來我們就可以自己編譯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,至此編譯完成。 在這裡插入圖片描述

6.最後

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



原文作者:@Jiawei  發表時間:2022/2/24

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015299/viewspace-2886712/,如需轉載,請註明出處,否則將追究法律責任。

相關文章