作者:陈超
【是否原创】是
【首发渠道】TiDB 社区
【首发渠道链接】其他平台首发请附上对应链接
【正文】
一、背景
首先,不建议对集群目录进行更改,因为该操作需要重启集群,风险较大。有时也能看到社区有同学提问由于各种原因想更改集群目录并尝试使用edit-config修改失败。查阅官方文档中并没有相关操作的步骤,但是搜索社区问答发现有SOP非常详细地介绍了更改集群IP、端口和目录的步骤。(【SOP 系列 12】TiUP 修改集群 IP 、Port 和目录)于是按照步骤进行了一次测试,发现卡在reload步骤没能够成功,觉得可能是自己有哪个步骤漏了或是操作不规范,当时手头有其他事而且这种操作“800年“也用不到一回于是不了了之。后来又发现有同学在论坛遇到了相同的问题,于是趁假期闲来无事用测试集群进行了比较详细的测试。
二、集群拓扑规划
手头刚好有两台测试机10.0.0.1和10.0.0.2,配置都为8C 16G 100G。
测试集群版本为v5.4.0
实例 | 端口 | 数据目录 | IP |
PD | 2379 | /export/tidb-data/pd-2379 | 10.0.0.1 |
PD | 3379 | /export/tidb-data/pd-3379 | 10.0.0.1 |
PD | 2379 | /export/tidb-data/pd-2379 | 10.0.0.2 |
TIDB | 4000 | 10.0.0.1 | |
TIDB | 4000 | 10.0.0.2 | |
TIKV | 20160 | /export/tidb-data/tikv-20160 | 10.0.0.1 |
TIKV | 20161 | /export/tidb-data/tikv-20161 | |
TIKV | 20160 | /export/tidb-data/tikv-20160 | |
Tiflah | 9000 | /export/tidb-data/tiflash-9000 | 10.0.0.1 |
Tiflah | 9000 | /export/tidb-data/tiflash-9000 | 10.0.0.2 |
prometheus | 9090 | /export/tidb-data/prometheus-9090 | 10.0.0.1 |
三、测试过程
目标:将数据路径/export/tidb-data全部替换为/export/tidb-data-test
1.按照拓扑部署5.4.0集群(详细步骤省略)
2.停止目标集群
tiup cluster stop tidb-test
3.备份数据目录及配置文件
在10.0.0.1和10.0.0.2均操作
cp -r /export/tidb-data /export/tidb-data-bak
在中控机操作
cp ~/.tiup/storage/cluster/clusters/tidb-test/meta.yaml ~/.tiup/storage/cluster/clusters/tidb-test/meta_bak.yaml
4.修改配置文件
建议使用批量替换防止遗漏
vi ~/.tiup/storage/cluster/clusters/tidb-test/meta.yaml
:%s/tidb-data/tidb-data-test/g
5.移动部署目录
由于步骤三已备份,所以直接使用mv(10.0.0.1和10.0.0.2均操作)
mv /export/tidb-data /export/tidb-data-test/
6.删除 tikv 及tiflash的数据目录中的 last_tikv.toml
find /export/tidb-data-test -name last_tikv.toml -exec rm -rf {} \;
7.reload 和 restart 集群
使用tiup cluster reload tidb-test
报错
看报错是和pd通信失败,因为步骤2整个集群都已经关闭,所以报这个错也符合预期。根据官方文档说明,tiup cluster reload
会执行两个操作,刷新所有节点配置并且重启指定节点。--skip-restart
参数可以仅刷新配置,不重启任何节点,这样刷新的配置也不会应用,需要等对应服务下次重启才会生效,于是加该参数进行尝试。
tiup cluster reload tidb-test --skip-restart
reload成功
tiup cluster display tidb-test
检测集群正常,目录替换成功
四、测试其他版本
SOP文章的发布时间是20年底,怀疑有可能是版本差异带来的报错,因此又部署了4.0的最新版本v4.0.16(tiup 1.8.0)和v4.0.0(tiup 1.3.2)版本分别测试
v4.0.16报错与v5.4.0一样,均报无法与pd通信。
v4.0.0既不报错也不超时,等待1小时后Ctrl+Z手动退出
四、总结
tiup cluster reload tidb-test
会去连接pd,所以各个版本修改集群目录在集群关闭后reload均要带-skip-restart
参数,其余步骤参考SOP即可。
参考文档:https://asktug.com/t/topic/63294
感谢CTC老师的SOP文档指导
以上,如果有不严谨或者纰漏的地方请见谅。