PD存储信息与tikv存储信息不一致

【 TiDB 使用环境】生产环境
【 TiDB 版本】v3.0.3
【遇到的问题:】
pd-ctl查询region信息


tikv-ctl查询region信息直接就找不到

下面这个也是对应不上
图片

是之前有什么操作么?然后才出现的这个状况

1 个赞

1.之前有一台服务器宕机 ,这台服务器上有4个tikv节点,服务器起来后,重新拉起集群,只有两个tikv节点起来了,使用unsafe-recover移除这两个节点,完事后这两个节点没有剔除集群,重启集群后这两个节点也起来了,但是集群使用过程中报region unavailble;
2.查看了集群中存在down-peer和3个miss-peer,调大limit后数量下降到一定程度就不动了,手动将down-peer转移清零后,仍然是报region unavailble,并且重启集群后down-peer的数量又会上升上去;
2.然后根据社区的朋友建议将这两个节点下线,但是到最后有region和leader下线不了,使用pd-ctl 驱逐leader ,调度leader、transfer-region等都不生效,他们的operator操作pd-leader的日志里面最后都是timeout;
3.然后将这两个tikv节点设置为墓碑模式、remove-tombstone,然后recreate部分region,在这个过程中发现tikv-ctl查看region的状态和pd-ctl的状态不一致;


这个是一个up状态tikv的日志,下面报的peer is not leader for region的我使用pd-ctl查了看都是有leader的

现在使用中有其它的报错么

现在还是这个 9005 region unavailble

unsafe-recover 是用来恢复用的,恢复中如果出现问题,则只能通过 recreate重建了

等于是坏节点,还在PD中有记录,并没有完全移除,然后操作一直在继续?

有几个问题,你得好好看看:

  • 数据是否有备份?
  • 数据丢失是否能接受?
  • 以上两个问题都是 “否定”,则只能挑这条路走了,最难的
    • 确定坏节点副本丢失的范围
    • 重建的 region 和 PD 的 region 不一致的范围
    • 将核对不一致的region 强制移除后,继续recreate ,保证PD 和 tikv 一致
    • 恢复集群的工作状态,重新开启副本调度能力

以上的操作之后,可能还是会丢数据(取决于单副本的数据是否完整)
其实在所有的操作之前,最好的办法,就先先扩节点,保证副本安全之后,再去解决坏的节点…

1 个赞


是不是和报的tikv这个里面region版本不一致问题导致

之前未下线的region,通过unsafe-recover也移除不了,现在是不是要通过recreate全部重新重建,集群就正常了

  • 重建的 region 和 PD 的 region 不一致的范围
  • 将核对不一致的region 强制移除后,继续recreate ,保证PD 和 tikv 一致

这两个步骤有具体的操作命令吗

没有,纯手工核对了… very hard 模式了… :rofl:

1 个赞

可以接受收据丢失 还有什么办法

重建拉倒了… :upside_down_face:

最好用新版 LTS

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