作者:陈超

【是否原创】是

【首发渠道】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​​ 报错

使用TiUP 修改集群目录实践_重启

看报错是和pd通信失败,因为步骤2整个集群都已经关闭,所以报这个错也符合预期。根据官方文档说明,​​tiup cluster reload​​​会执行两个操作,刷新所有节点配置并且重启指定节点。​​--skip-restart​​参数可以仅刷新配置,不重启任何节点,这样刷新的配置也不会应用,需要等对应服务下次重启才会生效,于是加该参数进行尝试。

​tiup cluster reload tidb-test --skip-restart​

reload成功

使用TiUP 修改集群目录实践_重启_02

​tiup cluster display tidb-test​

检测集群正常,目录替换成功

使用TiUP 修改集群目录实践_配置文件_03



四、测试其他版本

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通信。

使用TiUP 修改集群目录实践_配置文件_04

v4.0.0既不报错也不超时,等待1小时后Ctrl+Z手动退出

使用TiUP 修改集群目录实践_数据目录_05



四、总结

​tiup cluster reload tidb-test​​​会去连接pd,所以各个版本修改集群目录在集群关闭后reload均要带​​-skip-restart​​参数,其余步骤参考SOP即可。

参考文档:​​https://asktug.com/t/topic/63294​

感谢CTC老师的SOP文档指导

以上,如果有不严谨或者纰漏的地方请见谅。