- PD leader (PD01) 节点出现重启,日志出现错误:range failed to find revision pair
- TiDB 在 PD leader 挂掉之后三分钟服务不可用
- 已知信息
版本 3.0.3 ,PD 在 2019-12-12 02:10:12 左右出现重启,在 40s 后新 leader 正常选举
- 分析步骤
根据 PD 重启时间以及 leader 切换正常,共耗时 40s,之后两分钟出现服务不可用,查看 tidb.log
tidb.log 中出现大量的 PD server timeout 信息
- 问题原因
从 PD 重启到正常提供服务持续三分钟服务不可用原因:pd 切换 leader 的时候重新加载 region 数据的时候有 bug,可能会误删更新的 region 信息导致出现空洞,tidb 此时询问 pd 该 region 范围的 key 就会返回 region not found,只能等该 region 下次上报(默认 60s 上报一次),同时加载时间跟 region 个数成正比,导致不可用时间加长
恢复时误删 region 信息在 3.0.8 会修复,对应 PR。PD 挂掉问题是 etcd bug,在 3.0.8 修复。同时为了加快 region load,在做一个同步 region 到 cache 的功能,这样不需要从盘重新 load(已经合到 master)