在有 region 缺失的 TiDB 中,为什么 insert 也会遇到 region miss 无法插入数据呢

在一个已知的有region缺失的tidb集群中,个人理解是数据存在这个确实的region中的所有查询不可查,为什么insert 也会无法执行,无法插入呢

region miss 意味着逻辑上的表就是损坏的,可能无法读取,也无法写入。

先要进行修复了,要么恢复 region 的状态,可能会丢失数据。
要么重建表,将数据恢复进去。

region 缺失对于数据而言,是很大的问题了,3副本就是为了避免这个问题的发生。


如果有机会的话,请分享下 region miss 的过程…

1 个赞

突然之间,tikv服务器21台中有两台服务器死机,重启失败,阿里云的硬盘故障,阿里工程师给出解释是这个本地硬盘寿命到期了,无法修复

3副本坏了2个就应该是集群不可用的。

知道对应region的数据不可查询的状态下,那你想想,已经不知道这个region有什么东西了,你怎么就能肯定当前这个事务和你这个region的数据必然无关呢?没有办法保证的吧。

阿里云上那有什么本地盘,是云盘吧

资源规划的时候,没有做分区么?不同分区的云盘,才能保障数据的高可用了…

这就很扎心了 :rofl:

还是尽快unsafe recover吧,别折腾已经有问题的表了。。。

1、还得是备份!备份!备份最重要。

买的时候选的本地盘,最大1788G,当时的人看本地盘性能比云盘高一点

对的,目前我看数据涉及不到相关的 sql我查询都正常。比如这个表我查limit 100 可以。但是count(*) 就失败。目前整个集群还在使用,还在支撑业务,只是部分数据查询和插入都有问题,到但是领导们要求暂时不能全停业务

本地盘同时坏两个概率不大啊,不会是云服务商逻辑上不同盘,物理上同一个吧

region 是 TiDB 中的逻辑概念,是一段左闭右开范围的 kv 数据,insert 时根据编码出的 key 判断要插入到哪个 region,region 的多副本通过 raft 协议保证一致性,当多副本宕机时,region 无法提供读写,所以插入会失败(因为它根据 key 算出来必须要插入到这里,这个 region 又不可用)

两个不同的物理机,我们专门选不同的物理机买的。就是这么巧。同时挂两台。没有预警,现在三四天已经收到4台服务器预警,磁盘寿命不足,正在换呢

1 个赞

什么盘寿命这么垃圾,正规的企业级SSD寿命非常长

1 个赞

阿里云上的本地盘,没有买云盘SSD。

:flushed:阿里云不给兜底么~

兜底就是给你换硬盘,数据丢失,

1 个赞

region miss得修复了,看看有没有备份吧

只能将有问题的表,尽可能的将能获取出来的表数据备份出来,然后重建有问题的表吧。

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