【 TiDB 使用环境】测试
【 TiDB 版本】V6.1.2
【参考文档】【SOP 系列 12】TiUP 修改集群 IP 、Port 和目录
一:背景
一套tidb集群,由于需要机房搬迁,需要将集群所在机器迁移至另外一个机房,集群服务器的IP相应的需要更换,此文档根据参考文档进行操作,中间遇到一些问题,再pingcap公司的老师指导下,问题得以修复,记录一下过程,也希望以后有此需求的同学少踩一些坑,谢谢。
二:参考文档,备份,一定要备份
- 集群环境操作,必须先备份数据,若操作过程导致数据丢失,则可能再也无法恢复集群,至少需要备份:
- 中控机的 ~/.tiup/storage/cluster/clusters/ 目录
- ~/.tiup/storage/cluster/clusters//meta.yaml 中显示的所有数据目录(data_dir)
- IP调整都需要停止集群,线上系统请协调好停机窗口,并做好充分准备和验证工作。
- 由于调整 PD 的 ip 和 port 需要对整个 PD 集群进行重建,当原先部署了依赖于 PD 持久化数据的同步组件时(比如 TiCDC 的 changefeed 依赖于 PD),可能需要重新同步数据,因此需要权衡好调整的利弊;另外 pd 重建的方法可能跟 tiup cluster 版本有关,若最新版本不支持,可以考虑使用旧版本重建。
4.使用mysqldump 对集群内使用的数据库进行备份
mysqldump -hxxxx -uxxxx -P4000 --databases xx1 xx2 xx3 > xxx.sql
此步骤执行前,务必保证备份文件产生的目录有足够的存储空间!! - 最后重要的事情再强调三遍:调整前一定要备份!一定要备份!!一定要备份!!!
三:tiup修改集群IP
1.停止集群
tiup cluster stop clustername
tiup cluster display clustername
2.关闭机器,搬迁机器,修改机器IP地址
3.修改配置文件 meta.yaml
注意:
- 修改前请提前做好配置文件和数据目录的备份
- 按照源 IP 至目标 IP,将所有组件的IP地址由源IP修改为目标IP地址
cp ~/.tiup/storage/cluster/clusters/tidb-test/meta.yaml ~/.tiup/storage/cluster/clusters/tidb-test/meta.yaml.bak
vi ~/.tiup/storage/cluster/clusters/tidb-test/meta.yaml
注意:host: 172.16.61.111
ssh port: 22
name: pd-172.16.61.111-2379
上面的host地址修改为新的IP,name的IP也修改为新的IP
4.重建 PD 集群
1)获取 Cluster ID
从任意一台PD节点 日志获取 Cluster ID(推荐)
[tidb@localhost ~]$ cat /tidb-deploy/pd-2379/log/*.log | grep “init cluster id”
[2020/10/10 11:13:22.794 +08:00] [INFO] [server.go:343] [“init cluster id”] [cluster-id=6881824393201874622]
[2020/10/10 11:15:00.388 +08:00] [INFO] [server.go:343] [“init cluster id”] [cluster-id=6881548221407099619]
[2020/10/10 11:22:31.005 +08:00] [INFO] [server.go:343] [“init cluster id”] [cluster-id=6881548221407099619]
2)获取已分配 ID
从 任意一台PD 节点 日志获取已分配最大ID
[tidb@localhost ~]$ cat /tidb-deploy/pd-2379/log/*.log | grep “idAllocator allocates a new id” | awk -F’=’ ‘{print $2}’ | awk -F’]’ ‘{print $1}’ | sort -r | head -n 1
1000
3)移除所有 PD 旧数据目录
mv pd-2379 pd-2379_bak
注意:所有的PD节点的数据目录都需要进行备份移除
4)停止集群
这个时候由于机器修改IP后系统启动时,可能会自动又拉起集群,虽然此时的集群不正常,但是一些进程可能还存在,我们的环境就出现了这种情况
tiup cluster stop clustername
5)部署新的 PD 集群
tiup cluster reload clustername -R pd --force --skip-restart
注意:不必指定版本号,加上–skip-restart
执行成功后,可以查看一下pd节点部署目录scripts 下 run_pd.sh文件中的IP地址是否
是最新的IP地址,是新的IP才是正确的。
6)启停PD集群
tiup cluster start clustername -R pd
tiup cluster stop clustername -R pd
7)使用 pd-recover 恢复 PD 集群
这个时候由于原来安装的mirror没有pd-recover 报错,此时需要进行下面的操作(已经有tiup pd-recover命令可忽略下面的mirror merge操作):
(1)从tidb官网上下载对应版本和环境的toolkit包,并上传到中控机上
解压,tar -xzvf tidb-community-toolkit-v6.1.2-linux-amd64.tar.gz
(2) 赋予此目录文件相对应的用户权限,如果都是root用户,可忽略此操作
(3)tiup mirror show 找到原来的mirror目录位置
cd tidb-community-server-${version}-linux-amd64/
cp -rp keys ~/.tiup/
tiup mirror merge …/tidb-community-toolkit-${version}-linux-amd64
恢复 PD 集群
注意使用调整后的新 PD IP 来进行 pd-recover,pd-recover 和集群版本保持一致
tiup pd-recover -endpoints http://172.16.61.111:2379 -cluster-id 6881548221407099619 -alloc-id 10000
注意:IP cluster-id和alloc-id根据实际情况填写
8)restart集群
原来参考文章中使用reload,此时可能会报错,可以直接使用restart集群
tiup cluster stop clustername
tiup cluster start clustername
9)检查集群状态并验证数据
tiup cluster display clustername
10)验证数据无误后,删除原来备份的数据及目录,释放存储空间。