tidb性能竞赛-tikv/pd#2950-pd-编译修改pd

1,057 阅读4分钟

tidb性能竞赛-tikv/pd#2950-pd-编译修改pd

#技术/TiDB

实验目标:创建一个region,修改代码pd代码,调度这个region到指定store。 不要先看pd讲解的文章,先把这个实验完成。

计划:

  1. 因为没接触过go所以先熟悉下go,找了一个评价好的短视频Go / Golang Crash Course - YouTube
    1. 看完了
  2. 运行tidb,能创建数据库。
  3. 编译pd。
  4. 修改pd,再编译pd。

老师查询进度了,提醒还是直接修改PD代码才能跟上进度,如果从头搞这种步骤是不合理的,所以我觉得应该尽可能直接做PD相关的,和PD不直接相关的不懂的可以先跳过,不要非要搞懂的了再进行。

开发环境

目录说明 为了区分多人tidb实验环境 /home/tidb-dc/git/tidb-test /home/tidb-dc/git/pd

/data/tidb-dc/tidb-deploy /data/tidb-dc/tidb-data pd 中 /tmp 替换为 /data/tidb-dc/tmp

tidb

还是参考官方文档吧,感觉还是官方文档最全,因为所有博客都是抄的官方文档,改代码的除外。

第一种:使用 TiUP Playground 快速部署本地测试环境

最基础的 TiDB 测试集群通常由 2 个 TiDB 实例、3 个 TiKV 实例和 3 个 PD 实例来构成。

下载并安装TiUP curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

声明全局环境变量 在当前session执行以下命令启动集群 tiup playground直接运行 tiup playground 命令会运行最新版本的 TiDB 集群,其中 TiDB、TiKV 和 PD 实例各 1 个 tiup playground v4.0.0 --db 2 --pd 3 --kv 3 --monitor上述命令会在本地下载并启动一个 v4.0.0 版本的集群,--monitor 表示同时部署监控组件。 最新版本可以通过执行 tiup list tidb 来查看。 tiup list tidb列出了TiDB版本 TiDB 使用开源时序数据库 Prometheus 作为监控和性能指标信息存储方案,使用 Grafana 作为可视化组件进行展示。 - TiDB 监控框架概述 | PingCAP Docs

CLUSTER START SUCCESSFULLY, Enjoy it ^-^
To connect TiDB: mysql --host 127.0.0.1 --port 4000 -u root
To connect TiDB: mysql --host 127.0.0.1 --port 4001 -u root
To view the dashboard: http://127.0.0.1:44669/dashboard
To view the Prometheus: http://127.0.0.1:40205
To view the Grafana: http://127.0.0.1:41157

tiup clean --all # 测试完成后清理集群,绿色环保。通过 ctrl-c 停掉进程后,执行以下命令

第二种:使用 TiUP cluster 在单机上模拟生产环境部署步骤

tiup是tidb的安装工具,可以理解为类似Ubuntu的apt tiup update --self && tiup update cluster # 升级tiup tiup update 就类似 apt update all tiup cluster # cluster是做什么用的,先不管 vi /etc/ssh/sshd_config # 将MaxSessions 开启并调至 20 service sshd restart # 重启服务 tiup list tidb # 查看当前支持部署的 TiDB 版本

cd ~/git && git clone gitee.com/eatcosmos/t… # 实验用到的文件都放这个目录了 vi topo.yaml # 把里面的host换成当前服务器的公网ip,试了下应该是替换成127.0.0.1,里面的user也改个吧tidb-dc,deploy_dir、data_dir也修改个吧 cd /home/tidb-dc/git/tidb-teest && tiup cluster deploy tidb-dc-test v4.0.8 ./topo.yaml --user root -p

发现这个布局还是符合强迫症的,结构清爽。

总是报错,这怎么办呢?浪费了很长时间 看了半天/root总感觉不对劲,估计是权限问题,还是把路径改到tidb自己创建的系统用户吧

deploy_dir: "/data/tidb-dc/tidb-deploy" data_dir: "/data/tidb-dc/tidb-data"

tiup cluster start tidb-test-dc # 这下可以运行了,启动集群,之前tidb输入成tide了,启动成功了,看下效果呢 tiup cluster stop tidb-test-dc # 停止集群

mysql -h 10.0.1.1 -P 4000 -u root # 访问 TiDB 数据库,密码为空

http://127.0.0.1:3000 # 使用vscode的反向代理,就可以映射到本地了 http://127.0.0.1:2379/dashboard # 访问集群 TiDB Dashboard 监控页面,默认用户名为 root,密码为空

tiup cluster list # 执行以下命令确认当前已经部署的集群列表

tiup cluster display tidb-test-dc # 执行以下命令查看集群的拓扑结构和状态

接下来应该直接修改PD源码了,其他模块都不要动,其实你早就应该看一下PD的文档,其实PD是独立的模块,完全不是你想的那样需要tidb、tikv齐活了才能玩起来。

go

cd /root/git && wget golang.org/dl/go1.15.5… # 下载慢,本地下载,然后用FileZilla tar -C /usr/local -xzf go1.15.5.linux-amd64.tar.gz vi ~/.profile export PATH=PATH:/usr/local/go/binsourcePATH:/usr/local/go/bin source HOME/.profile go version

编译失败是个什么原理?make没反应,这个不太友好啊,原因需要到Makefile里面找 BASIC_TEST_PKGS := (filterout(filter-out (INTEGRATION_TEST_PKGS),$(TEST_PKGS)) # 把这行注释掉

cd /home/tidb-dc/git && git clone github.com/eatcosmos/p… cd /home/tidb-dc/git/pd cd /home/tidb-dc/git/pd && git fetch github.com/tikv/pd git checkout -b issue-2950

可能是要修改deploy_dir、data_dir的路径了,因为只要PD代码,所以先把前面的集群停了并清理

编译pd

GitHub - eatcosmos/pd: Placement driver for TiKV cd /home/tidb-dc/git/ && git clone github.com/eatcosmos/p… cd pd git checkout -b issue-2950-dc /tmp 替换为 /data/tidb-dc/tmp make 这次可以成功了

修改pd