1. 程式人生 > >TiDB之mac上搭建及調試技巧

TiDB之mac上搭建及調試技巧

一點 word 訪問 開始 是把 lec 比較 暴露 問題

此文目的

由於本人最近已經成為TiDB的粉絲,所以就開始各種研究TiDB的源碼,研究源碼這個事情,首先就需要在自己電腦上不斷的調試及修改。TiDB本身的代碼是非常容易編譯和調試的,但是要把PD、TiKV集群同時在本機上建立起來,還是有一點難度的。好在pingcap官方提供了docker-compose搭建集群的方式,可以快速的在個人電腦上啟動一個TiDB的集群。但是,我要的不只是一個集群,我還希望在我的mac上實時編譯調試TiDB服務,這個TiDB服務能夠和docker-compose的集群裏的PD和TiKV進行實時的通訊。我今天仔細分析了一下,最終總結出兩個問題需要解決:

  • PD和TiKV的端口需要暴露給宿主機;
  • 宿主機上的TiDB服務需要解決docker-compose服務內部域名調用的問題;

解決方案

第一個問題比較容易解決,docker本身就提供了解決方案,就是把docker內部的端口映射給宿主機,這樣在宿主機上就可以直接訪問這個端口。第二個問題,我還是思考了一會,最後決定使用修改本機host的方式來完成映射。

  • mac上需要增加的host如下:
127.0.0.1 pd0
127.0.0.1 pd1
127.0.0.1 pd2
127.0.0.1 tikv0
127.0.0.1 tikv1
127.0.0.1 tikv2

大家一看也就明白了,我就是想把docker集群內部這樣的api:pd0:2379,在宿主機上轉換成為:127.0.0.1:2379的方式。

  • 拉取docker-compose

由於需要把docker內部的端口映射到宿主機上,因此我修改了官方的docker-compose.yml文件,大家可以直接使用我fork並修改的tidb-docker-compose項目。

git clone https://github.com/mantuliu/tidb-docker-compose.git
  • 創建並啟用集群
cd tidb-docker-compose && docker-compose pull 
docker-compose up -d
  • 關閉集群
docker-compose down
  • 在mac上啟動TiDB服務

我的mac上是下面類似這樣的命令:

./bin/tidb-server -P 4001 --status="10081"  --path="127.0.0.1:3379,127.0.0.1:4379,127.0.0.1:5379" --config=./conf/tidb.toml

寫在最後

這種方式呢,感覺還是不太完美,但是確實解決了我當前的困境。提升了我目前研究TiDB源碼的效率,不必再依賴於具體的集群環境,我走到哪裏,都可以隨時調試和研究TiDB的源碼。後面如果我了解到更NB的方式,會隨時分享給大家。雖然文章的標題是mac上的解決方案,但是換湯不換藥,在windows平臺上也是一樣的,增加具體host映射即可。

TiDB之mac上搭建及調試技巧