机房整体搬迁,IP变化后可以通过修改IP直接拉起集群吗

【TiDB 使用环境】生产备库
【TiDB 版本】
【部署方式】物理机器部署
【操作系统/CPU 架构/芯片详情】x86
【机器部署详情】
【遇到的问题:现在需要把tidb机器关机整体搬迁后另外一个机房,所有节点IP地址都会更改,可以通过修改集群元数据IP地址,在新机房直接拉起来吗?这样就不用重建集群,物理恢复数据

首先,流程复杂。
其次,未知风险太多,强烈不建议。
最后,通常建议扩缩容的方式,或者备份后铲掉环境重新部署(铲掉其实也有风险,万一备份不可用呢。。)

别改 IP 硬拉,这条路上没官方支持。PD 里存着每个 store 的地址、每个 region peer 的地址和 etcd 成员地址,TiKV、TiDB 的启动参数里也写死了 PD 地址。机器搬到新机房换了 IP,就算配置文件全改一遍勉强起来,store 也会被当成新注册的,立马触发一轮全量调度,生产备库一样扛不住。

稳的就两条路。一是网络侧把 IP 保住,同网段搬过去,或者新机房用同 IP 起来、中间走大二层打通,集群完全不用动,开机就能跑。二是按官方路径重建:新机房先原样部署一套,老集群用 BR 全量备份恢复到新集群,校验完再切流,老的留着回退。

你版本和节点数没填,补一下我好把 BR 的并发、限速这些参数给你具体点。备份恢复看 TiDB 备份与恢复概述 ,新机房部署看 使用 TiUP 部署 TiDB 集群

感谢,tidb备份重建这条路已经很熟悉了,发帖主要是想看看整体搬迁通过改ip有没有可能性

有可能,但不是改配置文件就行,得走 PD Recover 那套重建流程。三台 PD 全停,选一个数据目录完整的节点用 --force-new-cluster 起成单节点,紧接着跑 pd-recover --from-old-member 把元数据和 alloc id 修好,然后正常启动、按新 IP 扩容回三副本,最后把 TiKV、TiDB 启动参数里的 PD 地址改成新的再依次拉起来,TiKV 会用新地址重新注册 store。流程和命令在这个文档里 PD Recover 使用文档

坑有几个。pd-recover 会把 alloc id 直接抬一个亿,TSO 它不修,所以机器时间必须晚于你停机那一刻,时钟一退就是数据错乱,这个最要命;另外这是灾难恢复流程,不是给搬机房改 IP 用的,官方对这个用法不算支持,出了事没兜底。起来之后 admin check table 全库跑一遍,统计信息重建,Dashboard、Prometheus、Grafana 的 target 也得挨个改。

所以关键看 PD 三台的 IP 能不能保住。能保住的话只动 TiKV 和 TiDB,基本就是重启加改 target 的事;PD 也要换 IP 才轮到上面这套,停机窗口得留足,有条件先拿个测试集群演练一次再碰生产。

学到了

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。