一不小心删除了2个节点tidb-data目录下的pd目录,使用pd-recover恢复时,问题请教

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

【TiDB 版本】
v4.0.10
【问题描述】
一、一不小心删除了2个节点tidb-data目录下的pd目录,使用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
看官网上:


针对这个问题,我想问:官网上的步骤是:1、停掉原来的集群;2、删掉pd的data目录;3、部署新的pd集群;4、pd-recover恢复嘛?5、这个部署新的集群是怎么部署的?

二、我直接重新启动pd组件后:display时报这个错误:
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


针对这个,我想问:这个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””]


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

可以先参考下这个测试的帖子解决下:

1 个赞

好的,谢谢,我看完了,这个第四步部署一套新的PD集群,额,就直接是删除这个目录嘛?:thinking:


我也删除了这个目录,但是,我执行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

这一步是删除旧的数据目录,之后需要启动 pd 集群,然后再使用 pd-recover 进行恢复。

哦,好的,就是删除对应目录,然后启动pd集群是吧,然后再pd-recover是吧,但是启动pd集群后,好像会自动生成pd的data目录吧。。。。。
我再来试试,有情况再反馈,先谢谢大神了

是的,启动完后,确实好了,谢谢大神了

不客气,有问题可重新开贴提问。

ok,谢谢,辛苦啦,最后,这一步是关闭和启动集群,我们线上环境,应该不能这么操作吧,有其他方法嘛?

如果是线上环境需要使用 pd-recover 恢复 pd 集群,说明之前集群已经不能对外提供服务了,这里重启集群也就没什么问题了。

ok,好的,辛苦啦,谢谢:+1:
那么多问一句,所有pd都挂掉了,应该就不能对外提供服务了吧,我试过,MySQL客户端连不上了:thinking:

是的,所有 pd 挂掉整个集群就不能正常对外提供服务了

ok,好的,谢谢!辛苦辛苦:slightly_smiling_face:

:handshake:

对了,大神你好,我想了解一下pd、tikv内部的工作原理,以及pd挂掉一个或者两个后,pd内部的etcd的leader和pd的leader选取机制等一些相关知识,tikv挂掉一个的内部机制什么,这个有具体的有什么网址嘛?辛苦您了:smiley:

可以先参考下这两篇博客:

好的,谢谢,我先看一下

好的,如果有其他问题请重新开贴提问 :handshake:

ok,辛苦啦

:+1:

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