Unsafe recovery 一直处于运行状态

【 TiDB 使用环境】测试Poc
【 TiDB 版本】7.5.4
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】

尝试重建整个TiKV集群,于是把所有TiKV Node 断电然后尝试从PD 执行 unsafe remove-failed-nodes

第一次得到了成功的消息

pd-ctl unsafe remove-failed-stores 335055,335113,335092,335112,335036,335111 --pd
Success !

但是后续检查似乎 这个过程一直处于进行中。

pd-ctl unsafe remove-failed-stores 335055,335113,335092,335112,335036,335111 --pd ${PD_ADDR} --key ${KEY} --cert ${CERT} --cacert ${CACERT}
Failed! [500] “[PD:unsaferecovery:ErrUnsafeRecoveryIsRunning]unsafe recovery is running”

有什么办法可以检查Unsafe reovery 的过程吗。或者说有没有更好的建议来重新建立整个TiKV 集群

【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】

pd-ctl unsafe remove-failed-stores show 查看恢复进

1 个赞

手动停止任务,重启下集群, 再次尝试执行 unsafe-recover

你的理解可能有点问题。所有的tikv都掉线是没法从unsafe recovery恢复的,只能从br备份恢复。

在3副本的情况下,丢失1个副本,pd会调度其他还有空间的tikv补副本回到3副本的状态,这个不需要人工干预。
但是丢失2个副本,则会造成raft组已经不能保证多数派在线,会导致集群不可用。这个时候没法做到无损恢复,必须人工干预。这个人工干预的方法就是unsafe recovery。丢失的数据就是leader 到follower之间的这一小段。

所以当你的tikv全部掉线,unsafe recovery是没有办法完成的。你起码要保证1个副本能用,才能用unsafe recovery的方法,以丢失小部分数据为代价从1副本恢复到3副本。

在tikv全掉的情况下,只能通过br的pitr备份来恢复了。

:thinking:在没有UPS的情况下,集体断电,丢失数据的概率很大。
另外需要注意 unsafe recovery的适用场景和前提条件。


https://docs.pingcap.com/zh/tidb/stable/online-unsafe-recovery#适用场景