Open loadlj opened 4 years ago
下载编译 TiDB/PD/TiKV 并修改源代码,使得事物启动时输出hello transaction的日志。 本机器环境MBP:
hello transaction
CPU: Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz 内存: 16 GB 2400 MHz DDR4
TiDB
git clone git@github.com:pingcap/tidb.git
TiKV
git clone git@github.com:tikv/tikv.git
pd
git clone git@github.com:pingcap/pd.git
在 tidb 目录下全文search transaction 相关的内容,在tidb/store/tikv/txn里面可以找到startTS 函数,对其进行修改即可。
tidb
transaction
tidb/store/tikv/txn
startTS
func (txn *tikvTxn) StartTS() uint64 { logutil.Logger(context.Background()).Info("hello transaction.") return txn.startTS }
Clone完成项目后发现tidb里面 go.mod 最低的环境要求是1.13,小于1.13版本的请先升级本地的Go环境,每个项目里面都有Makefile,所以我们直接make进行编译就好:
go.mod
Makefile
➜ tidb git:(v4.0.4) ✗ make CGO_ENABLED=1 GO111MODULE=on go build -tags codes -ldflags '-X "github.com/pingcap/parser/mysql.TiDBReleaseVersion=v4.0.4-dirty" -X "github.com/pingcap/tidb/util/versioninfo.TiDBBuildTS=2020-08-13 09:10:26" -X "github.com/pingcap/tidb/util/versioninfo.TiDBGitHash=c61fc7247e9f6bc773761946d5b5294d3f2699a5" -X "github.com/pingcap/tidb/util/versioninfo.TiDBGitBranch=heads/v4.0.4" -X "github.com/pingcap/tidb/util/versioninfo.TiDBEdition=Community" ' -o bin/tidb-server tidb-server/main.go Build TiDB Server successfully!
然后再以相同的命令依次编译tikv以及pd即可。编译的时候要等的时间比较长,rust的编译速度确实慢。
tikv
编译完成后,三个文件夹的二进制文件默认未知分别位于tidb/bin/tidb-server, pd/bin/pd-server, tikv/target/release/tikv-server。
tidb/bin/tidb-server
pd/bin/pd-server
tikv/target/release/tikv-server
这里需要注意如果都用线上master的编译可能不是稳定版本,出来的界面可能有一点问题,所以需要用一个统一的版本去编译。我这里统一checkout 到了 v4.0.4
v4.0.4
官方推荐用tiup进行管理集群,docker-compose 方式已废弃,直接看文章介绍即可
tiup
Flags: --db int 设置集群中的 TiDB 数量(默认为1) --db.binpath string 指定 TiDB 二进制文件的位置(开发调试用,可忽略) --db.config string 指定 TiDB 的配置文件(开发调试用,可忽略) --db.host host 指定 TiDB 的监听地址 --drainer int 设置集群中 Drainer 数据 --drainer.binpath string 指定 Drainer 二进制文件的位置(开发调试用,可忽略) --drainer.config string 指定 Drainer 的配置文件 -h, --help 打印帮助信息 --host string 设置每个组件的监听地址(默认为 127.0.0.1),如果要提供给别的电脑访问,可设置为 0.0.0.0 --kv int 设置集群中的 TiKV 数量(默认为1) --kv.binpath string 指定 TiKV 二进制文件的位置(开发调试用,可忽略) --kv.config string 指定 TiKV 的配置文件(开发调试用,可忽略) --monitor 是否启动监控 --pd int 设置集群中的 PD 数量(默认为1) --pd.binpath string 指定 PD 二进制文件的位置(开发调试用,可忽略) --pd.config string 指定 PD 的配置文件(开发调试用,可忽略) --pump int 指定集群中 Pump 的数量(非 0 的时候 TiDB 会开启 TiDB Binlog) --pump.binpath string 指定 Pump 二进制文件的位置(开发调试用,可忽略) --pump.config string 指定 Pump 的配置文件(开发调试用,可忽略) --tiflash int 设置集群中 TiFlash 数量(默认为0) --tiflash.binpath string 指定 TiFlash 的二进制文件位置(开发调试用,可忽略) --tiflash.config string 指定 TiFlash 的配置文件(开发调试用,可忽略)
所以最后我们的启动命令就是
➜ pingcap tiup playground --db.binpath ./tidb/bin/tidb-server --pd.binpath ./pd/bin/pd-server --kv.binpath ./tikv/target/release/tikv-server --db 1 --pd 1 --kv 3 Starting component `playground`: --db.binpath ./tidb/bin/tidb-server --pd.binpath ./pd/bin/pd-server --kv.binpath ./tikv/target/release/tikv-server --db 1 --pd 1 --kv 3 Use the latest stable version: v4.0.4 Specify version manually: tiup playground <version> The stable version: tiup playground v4.0.0 The nightly version: tiup playground nightly Playground Bootstrapping... Start pd instance... Start tikv instance... Start tikv instance... Start tikv instance... Start tidb instance... ........ Waiting for tikv 127.0.0.1:20160 ready Waiting for tikv 127.0.0.1:20161 ready Waiting for tikv 127.0.0.1:20162 ready Start tiflash instance... Waiting for tiflash 127.0.0.1:3930 ready ... 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
然后登陆http://127.0.0.1:2379/dashboard 查看日志结果,正常输出hello, transaction.
http://127.0.0.1:2379/dashboard
hello, transaction
TiDB HomeWork-1
目标
下载编译 TiDB/PD/TiKV 并修改源代码,使得事物启动时输出
hello transaction
的日志。 本机器环境MBP:步骤
Clone 项目到本地
TiDB
项目git clone git@github.com:pingcap/tidb.git
TiKV
项目git clone git@github.com:tikv/tikv.git
pd
项目git clone git@github.com:pingcap/pd.git
修改代码
在
tidb
目录下全文searchtransaction
相关的内容,在tidb/store/tikv/txn
里面可以找到startTS
函数,对其进行修改即可。编译
Clone完成项目后发现tidb里面
go.mod
最低的环境要求是1.13,小于1.13版本的请先升级本地的Go环境,每个项目里面都有Makefile
,所以我们直接make进行编译就好:然后再以相同的命令依次编译
tikv
以及pd
即可。编译的时候要等的时间比较长,rust的编译速度确实慢。编译完成后,三个文件夹的二进制文件默认未知分别位于
tidb/bin/tidb-server
,pd/bin/pd-server
,tikv/target/release/tikv-server
。这里需要注意如果都用线上master的编译可能不是稳定版本,出来的界面可能有一点问题,所以需要用一个统一的版本去编译。我这里统一checkout 到了
v4.0.4
启动
官方推荐用
tiup
进行管理集群,docker-compose 方式已废弃,直接看文章介绍即可所以最后我们的启动命令就是
然后登陆
http://127.0.0.1:2379/dashboard
查看日志结果,正常输出hello, transaction
.