此文目的
由于本人最近已经成为 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.YAML 文件, 大家可以直接使用我 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 映射即可.
来源: https://www.cnblogs.com/mantu/p/10743637.html