模拟误操作删除tidb-data下的pd和tikv目录问题

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】
4.0.10
【问题描述】
3个pd,现在模拟误操作删除tidb-data下的pd和tikv目录问题:
1、删除了pd的leader节点的目录,现在导致理论上应该up的一个pd组件也是down


2、理论上应该up的pd组件报错:

好像是leader的问题,这个怎么让那个pd启动为up


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

  1. 请详细描述一下模拟误操作删除的过程
  2. 可以尝试拉起没有误删的 PD 节点,看看能否正常启动。不能的话上传一下该节点的 pd.log 。

1、就是将tidb-data下的pd-2379和tikv-20160两个目录rm删除了:


2、使用tiup cluster start tidb-test -N 172.20.146.143:2379启动有问题,一直卡在这里:

使用tiup cluster restart tidb-test -N 172.20.146.143:2379不报错,但是display还是down,

该节点pd的日志超过了限制,明明已经只剩下27MB了,我继续删掉一些,留下19号的和今天的:
![image|690x95](upload://d4qLyWtqr64UbzuEzBYf5nzIB62.png
pd.log (8.2 MB)

最新的pd的报错:
[2021/02/20 16:23:55.275 +08:00] [ERROR] [etcdutil.go:65] [“failed to get cluster from remote”] [error="[PD:etcd:ErrEtcdGetCluster]failed to get raft cluster member(s) from the given URLs"]

  1. 请问是删除了哪一台机器目录还是多台机器的目录?
  2. 如果只是删除 一台 PD 的目录的话,需要把另外两台 PD 都拉起才能恢复。

1、总共三台机器,删除了其中两台tidb-data下的pd和tikv目录
2、对剩下的这一台执行restart指令,restart提示成功,但是display还是down

三台挂了两台只能通过 PD-recover 恢复了。具体可以参考:
https://docs.pingcap.com/zh/tidb/stable/pd-recover#pd-recover-使用文档

好的,谢谢,那个你们那里有类似的案例和具体的恢复操作的步骤嘛?:thinking:
我这个第一次弄这个,最好能有个借鉴:rofl:
这个部署新的集群中:
1、停止当前的集群是指将所有up和down的pd都stop掉是吧?
2、删除旧目录是指到tidb-data下把pd相关的目录都删掉是吧?
图片上说用–data-dir指定是指在指令后面这么添加,自动删除旧的目录并且新建pd-2379目录嘛:./pd-recover -endpoints http://10.0.1.13:2379 -cluster-id 6747551640615446306 -alloc-id 10000 --data-dir {/path/to/pd-2379}
我可以进入到tidb-data目录下,手动rm嘛?

  1. 要先停掉所有的 PD 的服务。
  2. 根据文档找到相应的 **Cluster ID 和 已分配 ID **
  3. –data-dir 不是 pd-recover 的参数。是需要根据 --data-dir 清理掉旧 PD 的目录(注意备份)

哦,好的,那这个清理其实就是rm掉,对吧

我执行这条指令有问题:

你好,上午的那个一时间没有处理,下午看的时候集群大部分都好了,:joy:


现在原来本来应该是好的tikv节点没有起的来,一开始是坏的2个tikv节点反而起的来了
看了一下tikv的报错:
[2021/02/22 16:30:52.344 +08:00] [FATAL] [server.rs:590] [“failed to start node: “[src/server/node.rs:207]: cluster ID mismatch, local 6927136235037632255 != remote 6931994644593449876, you are trying to connect to another cluster, please reconnect to the correct PD””]
看了一下store,没有这个节点的store信息
这个是直接将这个节点的tikv缩容掉,然后再扩容嘛?还是这个reconnect的方法是?:thinking:

大佬,您好,刚刚把原先好的那个节点上tidb-data下的tikv-20160目录移走后,集群好了,这个恢复后,tikv中以前建立的数据库和表好像不在了,那个我想问一下,以前tikv中的数据是在哪里查看?在刚刚移走的那个tikv-20160下面嘛?我看了一下,好像没有看到具体的数据库和表?

大神,有空再看一下哈:
我今天又重新模拟了一下,但是我用pd-recover恢复时:
{“level”:“warn”,“ts”:“2021-02-23T15:50:18.327+0800”,“caller”:“clientv3/retry_interceptor.go:61”,“msg”:“retrying of unary invoker failed”,“target”:“endpoint://client-ded2b4b6-a56b-4803-b69c-727413ff7404/172.20.146.143:2379”,“attempt”:0,“error”:“rpc error: code = DeadlineExceeded desc = latest balancer error: all SubConns are in TransientFailure, latest connection error: connection error: desc = “transport: Error while dialing dial tcp 172.20.146.143:2379: connect: connection refused””}
context deadline exceeded
我看了一下,官网,说是:


我直接start了pd组件:
WARN: there is something wrong with TiKV labels, which may cause data losing:
no endpoint available, the last err was: error requesting http://172.20.146.145:2379/pd/api/v1/stores?state=0&state=1&state=2, response: “[PD:cluster:ErrNotBootstrapped]TiKV cluster not bootstrapped, please start TiKV first”
, code 500

我想问:
1、我不是很明白,我不是已经部署了集群了嘛?
2、这个tikv的话恢复怎么样再保持原来的目录基础上恢复,毕竟里面有数据。。。。。。
tikv的报错:
[2021/02/23 16:04:03.358 +08:00] [FATAL] [server.rs:590] [“failed to start node: “[src/server/node.rs:207]: cluster ID mismatch, local 6931994644593449876 != remote 6932363822692905996, you are trying to connect to another cluster, please reconnect to the correct PD””]
辛苦您了,谢谢!

TiKV 两副本 crash 之后,需要手工进行恢复,有丢失数据风险,具体可以参考之前 360 的老师分享的文章

好的,谢谢,我看一下

:+1: