打造 TiDB 本地开发测试环境

433 阅读1分钟

本文所使用环境为 mac big sur 11.2.3

Fork

登录githubfork三大组件 tidbtikvpd 。 使用git clone将其下载到本地,例如git clone https://github.com/xxxxx/${tidb or tikv or pd}

Build

TiDB

进入TiDB源码目录,执行make,出现如下内容说明build成功。

➜  tidb git:(master) make
CGO_ENABLED=1 GO111MODULE=on go build  -tags codes  -ldflags '-X "github.com/pingcap/parser/mysql.TiDBReleaseVersion=v4.0.0-beta.2-1743-ga2facf8f9" -X "github.com/pingcap/tidb/util/versioninfo.TiDBBuildTS=2021-04-14 06:37:45" -X "github.com/pingcap/tidb/util/versioninfo.TiDBGitHash=a2facf8f9c844acf1e2d28da302559781bc99589" -X "github.com/pingcap/tidb/util/versioninfo.TiDBGitBranch=master" -X "github.com/pingcap/tidb/util/versioninfo.TiDBEdition=Community" ' -o bin/tidb-server tidb-server/main.go
Build TiDB Server successfully!

编译好的binarytidb/bin/tidb-server

PD

进入PD源码目录,执行make,出现如下内容说明build成功。

+ Fetch TiDB Dashboard Go module
  - TiDB Dashboard directory: /Users/yuyang/go/pkg/mod/github.com/pingcap-incubator/tidb-dashboard@v0.0.0-20210104140916-41a0a3a87e75
+ Create asset cache directory
+ Discover TiDB Dashboard release version
  - TiDB Dashboard release version: 2021.01.04.1
+ Check embedded assets exists in cache
  - Cached archive exists: /Users/yuyang/IdeaProjects/pd/.dashboard_asset_cache/embedded-assets-golang-2021.01.04.1.zip
+ Unpack embedded asset from archive
Archive:  /Users/yuyang/IdeaProjects/pd/.dashboard_asset_cache/embedded-assets-golang-2021.01.04.1.zip
  inflating: embedded_assets_handler.go  
  - Unpacked /Users/yuyang/IdeaProjects/pd/pkg/dashboard/uiserver/embedded_assets_handler.go
CGO_ENABLED=1 go build  -gcflags '' -ldflags '-X "github.com/tikv/pd/server/versioninfo.PDReleaseVersion=v4.0.0-rc.2-466-g0e15869c-dirty" -X "github.com/tikv/pd/server/versioninfo.PDBuildTS=2021-04-14 06:44:31" -X "github.com/tikv/pd/server/versioninfo.PDGitHash=0e15869c568d0a6db7d2d674cebe7dd9d316985f" -X "github.com/tikv/pd/server/versioninfo.PDGitBranch=HEAD" -X "github.com/tikv/pd/server/versioninfo.PDEdition=Community" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.InternalVersion=2021.01.04.1" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.Standalone=No" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.PDVersion=v4.0.0-rc.2-466-g0e15869c-dirty" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.BuildTime=2021-04-14 06:44:31" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.BuildGitHash=41a0a3a87e75"' -tags " swagger_server" -o /Users/yuyang/IdeaProjects/pd/bin/pd-server cmd/pd-server/main.go
CGO_ENABLED=0 go build -gcflags '' -ldflags '-X "github.com/tikv/pd/server/versioninfo.PDReleaseVersion=v4.0.0-rc.2-466-g0e15869c-dirty" -X "github.com/tikv/pd/server/versioninfo.PDBuildTS=2021-04-14 06:45:41" -X "github.com/tikv/pd/server/versioninfo.PDGitHash=0e15869c568d0a6db7d2d674cebe7dd9d316985f" -X "github.com/tikv/pd/server/versioninfo.PDGitBranch=HEAD" -X "github.com/tikv/pd/server/versioninfo.PDEdition=Community" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.InternalVersion=2021.01.04.1" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.Standalone=No" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.PDVersion=v4.0.0-rc.2-466-g0e15869c-dirty" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.BuildTime=2021-04-14 06:45:42" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.BuildGitHash=41a0a3a87e75"' -o /Users/yuyang/IdeaProjects/pd/bin/pd-ctl tools/pd-ctl/main.go
CGO_ENABLED=0 go build -gcflags '' -ldflags '-X "github.com/tikv/pd/server/versioninfo.PDReleaseVersion=v4.0.0-rc.2-466-g0e15869c-dirty" -X "github.com/tikv/pd/server/versioninfo.PDBuildTS=2021-04-14 06:45:54" -X "github.com/tikv/pd/server/versioninfo.PDGitHash=0e15869c568d0a6db7d2d674cebe7dd9d316985f" -X "github.com/tikv/pd/server/versioninfo.PDGitBranch=HEAD" -X "github.com/tikv/pd/server/versioninfo.PDEdition=Community" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.InternalVersion=2021.01.04.1" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.Standalone=No" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.PDVersion=v4.0.0-rc.2-466-g0e15869c-dirty" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.BuildTime=2021-04-14 06:45:54" -X "github.com/pingcap-incubator/tidb-dashboard/pkg/utils/version.BuildGitHash=41a0a3a87e75"' -o /Users/yuyang/IdeaProjects/pd/bin/pd-recover tools/pd-recover/main.go

编译好的binarypd/bin/pd-server

TiKV

TikV需要Rust环境,可以使用rustup配置环境,同时需要cmake。之后进入TiKV源码目录,执行make,编译耗时较长,出现如下内容说明build成功。 跑完进度条就OK

    Building [=======================> ] 591/593: tikv-server(bin), tikv-ctl(bin)                                        
    Building [=======================> ] 592/593: tikv-ctl(bin)    

编译好的binarytikv/bin/tikv-server

Run

build成功后,需要安装TiUP--TiDB官方的部署工具。参考 在中控机上安装 TiUP 组件 这一节即可。安装完成后,通过tiup playground命令进行环境搭建,binpath就是上面提到的二进制文件路径,参考命令:

tiup playground --db.binpath ${tidb_binpath} --kv.binpath ${tikv_binpath} --pd.binpath ${pd_binpath}

出现如下输出,说明搭建成功,TiDBdashboardgrafana均可通过输出的地址访问了。

Playground Bootstrapping...
Start pd instance
Start tikv instance
Start tidb instance
Waiting for tidb instances ready
127.0.0.1:4000 ... Done
Start tiflash instance
Waiting for tiflash instances ready
127.0.0.1:3930 ... Done
CLUSTER START SUCCESSFULLY, Enjoy it ^-^
To connect TiDB: mysql --host 127.0.0.1 --port 4000 -u root
To view the dashboard: http://127.0.0.1:2379/dashboard
To view the Prometheus: http://127.0.0.1:9090
To view the Grafana: http://127.0.0.1:3000