TiKV 2节点宕机集群不可用

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
【概述】4 TiKV节点,宕机2台,集群不可用,无法加入新的TiKV节点,请问是否能恢复?
【背景】2台TiKV节点宕机
【现象】业务能连到数据库,但是无法查询到任何数据
【业务影响】业务中断,集群不可用
【TiDB 版本】V5.3.0
【附件】

  1. TiUP Cluster Display 信息

  2. TiUP Cluster Edit Config 信息

  3. TiDB- Overview 监控

  • 对应模块日志(包含问题前后1小时日志)

是3副本一次性宕了两个节点?

是的,请问有办法恢复吗?

参考下这个文章,建议操作前先备份整个目录
https://asktug.com/t/topic/183387

6 个赞

非常感谢大佬

清理故障store的region(4.3.2)报错
[tidb@tidb-srv001 bin]$ ./tikv-ctl --data-dir /data/tidb-data/tikv-20160 unsafe-recover remove-fail-stores -s 17041,17095 --all-regions
[2022/01/28 15:17:39.608 +08:00] [INFO] [mod.rs:118] [“encryption: none of key dictionary and file dictionary are found.”]
[2022/01/28 15:17:39.608 +08:00] [INFO] [mod.rs:479] [“encryption is disabled.”]
[2022/01/28 15:17:39.609 +08:00] [WARN] [config.rs:587] [“compaction guard is disabled due to region info provider not available”]
[2022/01/28 15:17:39.609 +08:00] [WARN] [config.rs:682] [“compaction guard is disabled due to region info provider not available”]
thread ‘main’ panicked at ‘called Result::unwrap() on an Err value: Os { code: 2, kind: NotFound, message: “No such file or directory” }’, cmd/tikv-ctl/src/main.rs:123:57
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace

指定的 db 目录不对吧,并且需要停止 tikv 实例执行
https://docs.pingcap.com/zh/tidb/stable/tikv-control/#强制-region-从多副本失败状态恢复服务慎用

上面路径确实错了,正确路径应该是/data/tidb-data/tikv-20160/db,但是我改成这样还是报错
[tidb@tidb-srv001 bin]$ ./tikv-ctl --data-dir /data/tidb-data/tikv-20160/db unsafe-recover remove-fail-stores -s 17041,17095 --all-regions
[2022/02/07 15:47:28.831 +08:00] [INFO] [mod.rs:118] [“encryption: none of key dictionary and file dictionary are found.”]
[2022/02/07 15:47:28.831 +08:00] [INFO] [mod.rs:479] [“encryption is disabled.”]
[2022/02/07 15:47:28.832 +08:00] [WARN] [config.rs:587] [“compaction guard is disabled due to region info provider not available”]
[2022/02/07 15:47:28.832 +08:00] [WARN] [config.rs:682] [thread ‘"maincompaction guard is disabled due to region info provider not available’ panicked at ‘"called Result::unwrap() on an Err value: Os { code: 2, kind: NotFound, message: “No such file or directory” }]’,
cmd/tikv-ctl/src/main.rs:123:57
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
image

抱歉,我这边和您的场景不一样,您是删除文件,我这边是关机节点

  1. 请问您是在物理机还是虚拟机部署的? 那两个节点是什么原因无法启动?
  2. 从报错看,tikv-ctl 似乎访问不到路径里的文件,请检查下 tikv-ctl 的属主和权限,是否 TiDB 用户有权限
  3. 麻烦手工 touch 一个文件,或者读取一个已有文件,在 /data/tidb-data/tikv-20160/db 试试,是否有权限?这个挂载目录当前是正常的吗?
  4. tiup pd ctl 展示下 store 信息,多谢。

看漏了信息,tikv-ctl需要在原来的正常节点执行,我跑到后面加的tikv节点执行了,导致总是找不到文件

目前恢复了吗? 还有什么问题吗?

:+1:实用 ,大佬啊

恢复了,按照步骤操作应该没啥问题,记住执行命令的节点不能错,节点错了可能就报错了!多谢各位大佬指点!

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