【 TiDB 使用环境】生产环境
【 TiDB 版本】V4.0.9
【复现路径】线上迁移问题,正在发生
【遇到的问题:问题现象及影响】无法迁移,可能存在数据丢失
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
建议先核查 placement-rule 配置、PD 调度状态,同时备份数据再逐步排障。
这都两年前的问题了,升级会好很多吧
先核对 TiKV 副本健康与 Region 迁移限速,查看 PD 调度日志定位迁移阻塞的 Region;校验上下游集群快照、增量同步数据一致性,用checksum table校验防丢失。
V4.0.9 版本较老,跨 k8s 集群迁移且涉及 placement-rule,风险较高。既然是正在发生的线上问题,优先保数据:先确认各 PD、TiKV 节点状态和 Region 健康度(pd-ctl region check miss-peer / down-peer),看是否有 Region 缺副本。placement-rule 配置错误常导致副本无法调度到目标集群节点,检查 rule 的 label 约束与新集群节点 label 是否匹配。迁移未完成前不要下线原集群节点,避免副本数不足丢数据。建议贴出 pd-ctl config placement-rules show 和 region 健康统计,以便判断是否有真实的数据丢失风险。
- 暂停所有 TiDB 数据迁移任务
- BR 全量备份 / 增量同步:暂停 backup/restore 任务;
- DM/CDC 数据同步链路:暂停 task,停止上下游写入同步;
- TiDB Operator 迁移调度:冻结 Pod 调度、暂停 TiKV 节点扩缩容、暂停 store 迁移调度。
- 冻结 PD Placement Rule 动态下发
bash
# 关闭PD自动调度、副本搬迁、balance调度(临时锁死拓扑,避免PD乱搬迁分片造成脏数据)
pd-ctl config set schedule-limit 0
pd-ctl config set max-store-down-time 30m
pd-ctl scheduler pause all
- 锁定所有 TiKV Store 状态,禁止 PD 发起 leader/peer 迁移
bash
pd-ctl store limit all 0
目的:PD 不再主动调度分片迁移,杜绝因同步故障引发分片漂移、副本缺失带来的数据丢失。