WARN] [region.go:1908] ["scan regions failed"] [outputMustContainAllKeyRange=false] [error="[PD:region:ErrRegionNotAdjacen

一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题

【TiDB 使用环境 测试环境
【TiDB 版本】
【部署方式】/机器部署
【操作系统/CPU 架构/芯片详情】
【机器部署详情】CPU大小/内存大小/磁盘大小
【集群数据量】300 G
【集群节点数】 3
【问题复现路径】集群停电后,重建集群后,部分数据库的表无法显示,打开提示 pd timeout ,查看日志 报错
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面


【复制黏贴 ERROR 报错的日志】

[2026/02/10 11:57:04.155 +08:00] [WARN] [region.go:1908] [“scan regions failed”] [outputMustContainAllKeyRange=false] [error=“[PD:region:ErrRegionNotAdjacent]key range[7480000000000005ffc15f720000000000fb, 7480000000000005ffc15f72fb00000000fb) found a hole region in the last, the last scanned region is [, 7480000000000005ffc15f720000000000fb), [7480000000000005ffc15f720000000000fb, 7480000000000005ffc15f72fb00000000fb) is missing”]

[2026/02/10 11:30:06.723 +08:00] [WARN] [region.go:1908] [“scan regions failed”] [outputMustContainAllKeyRange=false] [error=“[PD:region:ErrRegionNotAdjacent]key range[7480000000000001ffaa5f728000000000ff0ad56b0000000000fa, 7480000000000001ffaa5f728000000000ff0ad56c0000000000fa) found a hole region in the last, the last scanned region is [, 7480000000000001ffaa5f728000000000ff0ad56b0000000000fa), [7480000000000001ffaa5f728000000000ff0ad56b0000000000fa, 7480000000000001ffaa5f728000000000ff0ad56c0000000000fa) is missing”]

【其他附件:截图/日志/监控】

修复步骤
1、确认空洞 Region 的 key 范围 :从错误日志中提取缺失的 key range
2、停止所有健康 TiKV 节点的实例(避免文件锁冲突),执行tikv-ctl --db /path/to/tikv-data/db unsafe-recover recreate-region命令,根据 PD 中的元数据(start key、end key)重新创建空 Region。该操作会生成一个无数据的空 Region,填补 key range 的缺失,确保 PD 扫描时 key range 连续。(若使用 PD-ctl,可通过pd-ctl unsafe remove-failed-stores清理故障节点的元数据后,由 PD 自动触发CreateEmptyRegion计划(参考 PD 的unsafe_recovery_controller逻辑),生成空 Region 补足空洞。)
3、重启 PD 和 TiKV 节点,检查 Region 健康度(通过 PD 的 Region health 监控图表,如参考资料 2 中的Region health图表),确认空洞 Region 已被修复,且 TiKV 能正常上报该空 Region 的心跳。

1 个赞

etc集群不能成功交换元数据了吗