2个TiKV节点宕机集群不可用

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
【概述】TiKV原有3个节点,2个节点宕机之后起不来,集群不可用
【背景】2个TiKV节点宕机无法启动,集群不可用,扩容2个TiKV节点后仍然不可用
【现象】集群可连接,等待很久后无法查询到数据,提示ERROR 9002 (HY000): TiKV server timeout
查询到leader全部在故障节点上面,新加入节点无region


【业务影响】集群无法使用,查不到数据
【TiDB 版本】V5.3.0
【附件】

  1. TiUP Cluster Display 信息

  2. TiUP Cluster Edit Config 信息

  3. TiDB- Overview 监控

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

3副本只能保证一个tikv节点宕机后可用,2个节点如果都起不来了考虑下多副本丢失情况下的修复吧,参考下文章
https://asktug.com/t/topic/183387

跟上面的实验场景不一样,实验场景是删掉文件,但节点服务器正常运行;我这边是服务器宕机无法启动了

https://docs.pingcap.com/zh/tidb/stable/online-unsafe-recovery/#%E5%8A%9F%E8%83%BD%E8%AF%B4%E6%98%8E
看下这个文档用 Online Unsafe Recovery进行数据有损恢复

宕机和删文件是一样的,3副本坏2个节点就会出现一些副本多数不可用,通过多副本失败恢复后,会自动在正常tikv实例补充副本,达到多数可用后就能访问了。至于tikv实例宕的原因就是另外一个问题了

这种情况大概率会丢数据吧,三节点三副本,会均衡到保证每个节点有完整的一份副本么?

tidb绝对保证一个tikv上不会有相同副本

那就是2个kv节点宕机,也能保证数据完整性,只是不能保证可用是吧

3副本时,挂2个tikv实例是这样

:+1::+1::+1:

那如果3个节点3副本,主副本节点down掉,集群还可用么?

leader挂了,还有2个,礽是多数可用,重新选主

:thinking:春节遇到一次这个情况,那还真得查一查才行了。

一个节点挂了担心啥,3副本两个节点挂了才出现不可用

我这边春节遇到的是一个节点挂了,整个集群不可用了。就很奇怪~

执行4.3.4步骤的命令的时候报错了
[tidb@tidb-srv007 scripts]$ tikv-ctl --data-dir /data/tidb-data/tikv-20160/db unsafe-recover remove-fail-stores -s 17285,17286 --all-regions
[2022/02/08 17:44:58.847 +08:00] [INFO] [mod.rs:118] [“encryption: none of key dictionary and file dictionary are found.”]
[2022/02/08 17:44:58.847 +08:00] [INFO] [mod.rs:479] [“encryption is disabled.”]
[thread ‘main’ panicked at ‘called Result::unwrap() on an Err value: Os { code: 2, kind: NotFound, message: “No such file or directory” }’, 2022/02/08 17:44:58.847 +08:00cmd/tikv-ctl/src/main.rs:]123: 57
[note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
WARN] [config.rs:587] [“compaction guard is disabled due to region info provider not available”]
[2022/02/08 17:44:58.847 +08:00] [WARN] [config.rs:682] [“compaction guard is disabled due to region info provider not available”]

目录不加/db

是不是其他两个节点做了驱逐leader的处理,我今天刚刚强制使一个kv节点宕机,集群可用,pd查看宕机几点leader为0

没有,pd是有leader的,我当时看了。

看漏了条件,是要在原来正常节点执行tikv-ctl,我跑到后面新增的节点上面去执行了,导致找不到文件