数据库突然报错Region is unavailable

【 TiDB 使用环境】生产环境
【 TiDB 版本】5.4.3
【复现路径】
正常业务做删除操作突然有一个报错Region is unavailable,监控告警 TiDB_tikvclient_region_err_total,过了几分钟他自动恢复了,我去pd-ctl里region check查询region都没问题,请问发生这种错误的原因是什么?
【遇到的问题:问题现象及影响】


tikv挂了?挂了不止1个?


都活的 集群使用都正常 就这段数据查询就会报错

这个报错不代表region一定有问题,有时候tikv忙碌,tikv oom,或者tidb与tikv之间的网络有问题等都有可能出现这个报错, TiDB 内部会进行 backoff 重试,只要在一定时间内,报错不是太多,不影响数据库使用,如果产生告警了,就代表过去一段时间这种报错超过阈值了,建议从下面几个方面核查
https://docs.pingcap.com/zh/tidb/stable/tidb-troubleshooting-map#11-客户端报-region-is-unavailable-错误
专栏 - Region is unavailable的排查总结 | TiDB 社区

就一段数据查询报错?还是一段时间报错?如果是一段数据报错,那就得检查下副本是不是正常了。原则上来说你也没集群故障,不至于丢副本的。可能是tikv忙导致的吧。

是的 就那段数据 直接delete有4000多行直接报错删除失败,我select * 几分钟都没出来结果

https://docs.pingcap.com/zh/tidb/v5.4/pd-control#根据副本数过滤-region
这个可以看下,是不是有region的副本数不正确。
看看监控,是不是有tikv特别忙。

上面 tidb菜鸟一只 回复的链接看看,也就这些情况。

按照上面几个手册专栏排查了一遍都没问题,可能是delete数据量太大了

你看下tidb的日志里有region id信息吗,然对着region id 去tikv 日志里找找相关信息



日志里的regionid 2435254

10.100的tikv日志,看上去是region分裂导致

从日志上看是tikv出现了锁和backoff导致的,这个应该是业务上sql造成的吧

这好像文件块损坏,后面一直在报这个错吗

持续了一段时间就不报了

后面的日志也发出来看看

tikv.log (8.3 MB)

我看tikv日志后面也有block checksum mismatch这个报错 ,也没找到2435254 region的信息。你看tidb的日志后面有报reion unavaliable没,时间是否和tikv的日志对的上。 tikv有检查bad sst文件的命令,不过需要停止tikv:
tikv-ctl bad-ssts --db /XXXXX --pd XXXXX:2379

1 个赞

今天早上我select了下那段数据又复现了


然后过了一会我手动去删除掉这段数据又不触发了

我这张表一直在频繁插入删除数据,是不是有可能也在频繁触发region的分裂合并

region达到一定大小条件后就会分裂,建议你还是先tikv挨个检查下有没有损坏的sst