TiDB 原始碼系列之沉浸式編譯 TiDB
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會呼叫哪些程式碼中的哪些函式。函式的位置可以參考官方部落格原始碼解析進行斷點測試。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015299/viewspace-2886712/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TiDB 原始碼閱讀系列文章(五)TiDB SQL Parser 的實現TiDB原始碼SQL
- TiDB - 如何在國內編譯TiDB編譯
- TiDB 原始碼閱讀系列文章(二十)Table PartitionTiDB原始碼
- TiDB 原始碼閱讀系列文章(十九)tikv-client(下)TiDB原始碼client
- TiDB Operator 原始碼閱讀 (三) 編排元件控制迴圈TiDB原始碼元件
- TiDB 原始碼閱讀系列文章(十六)INSERT 語句詳解TiDB原始碼
- TiDB 原始碼閱讀系列文章(十四)統計資訊(下)TiDB原始碼
- TiDB 原始碼閱讀系列文章(十二)統計資訊(上)TiDB原始碼
- TiDB 原始碼閱讀系列文章(十)Chunk 和執行框架簡介TiDB原始碼框架
- TiDB EcoSystem Tools 原理解讀系列(二)TiDB-Lightning Toolset 介紹TiDB
- 帶著問題讀 TiDB 原始碼:Hive 後設資料使用 TiDB 啟動報錯TiDB原始碼Hive
- TiDB 原始碼閱讀系列文章(二十三)Prepare/Execute 請求處理TiDB原始碼
- 帶著問題讀 TiDB 原始碼:Power BI Desktop 以 MySQL 驅動連線 TiDB 報錯TiDB原始碼MySql
- Android FrameWork 之原始碼編譯AndroidFramework原始碼編譯
- newsql新品TiDB之儲存SQLTiDB
- newsql新品TiDB之排程SQLTiDB
- TiDB 查詢優化及調優系列(一)TiDB 優化器簡介TiDB優化
- TiDB 原始碼閱讀系列文章(二十一)基於規則的優化 IITiDB原始碼優化
- TiDB 查詢優化及調優系列(二)TiDB 查詢計劃簡介TiDB優化
- Dubbo原始碼之動態編譯原始碼編譯
- TiDB、TiDB Cloud 均已正式登陸 AWS Marketplace。TiDBCloud
- Vue 原始碼解讀(10)—— 編譯器 之 生成渲染函式Vue原始碼編譯函式
- 探索TiDB Lightning的原始碼來解決發現的bugTiDB原始碼
- TiDB 6.0:讓 TSO 更高效丨TiDB Book RushTiDB
- TiDB Ecosystem Tools 原理解讀系列(三)TiDB-DM 架構設計與實現原理TiDB架構
- 《Vue不看原始碼懂原理》系列——Vue模板編譯Vue原始碼編譯
- Kubernetes原始碼編譯原始碼編譯
- Spring原始碼編譯Spring原始碼編譯
- TiDB叢集安裝TiDB
- tidb叢集部署TiDB
- TiDB at 豐巢:嚐鮮分散式資料庫TiDB分散式資料庫
- TiDB 社群成長足跡與小紅花 | TiDB DevCon 2019TiDBdev
- 使用 TiDB Vector 搭建 RAG 應用 - TiDB 文件問答小助手TiDB
- TiDB Online DDL 在 TiCDC 中的應用丨TiDB 工具分享TiDB
- 原始碼編譯Vim 8原始碼編譯
- MongoDB(0)- 原始碼編譯MongoDB原始碼編譯
- XCode 編譯 PAG 原始碼XCode編譯原始碼
- Docker編譯Azerothcore原始碼Docker編譯原始碼