https://tidb.net/blog/07c99ed0#4%C2%A0%20%E4%B8%80%E4%BA%9B%E5%BB%BA%E8%AE%AE

1 region访问基本流程

tidb在访问key数据时需要获取key所在region的分布信息,在tidb 侧有一个region cache存储region信息,包含region key范围、leader+peer信息、store_id等,每次访问key时先从region cache内查找是否有相应region信息如果没有则从pd读取并放到region cache内。

由于pd或tikv不会主动将最新的region信息告知给tidb,当region发生变化时,比如leader切换、region分裂或合并,或者tikv节点无法访问等,tidb侧的region cache信息可能会过期,此时根据region cache信息访问tikv时由于region的变化tikv会返回一些错误信息,比如not leader、RegionNotFound 、EpochNotMatch 等。tidb会进行backoff,根据tikv返回的错误信息里的内容或从pd更新region信息,尝试使用新的信息访问region。

2 region is unavailable常见原因

region is unavailable 就是tidb 在backoff时由于各种问题导致超过了阈值时间(20秒)而返回的错误。常见的原因有:

1、最大副本数的半数以上tikv或tiflash不可用或同时发生重启,导致raftgroup多副本失败。需要注意的tidb集群允许问题tikv的数量是以副本数的多数可用为准,与运行tikv的主机数量没关系。

2、在backoff时间内没有leader可访问:

(1) Tikv很忙Region 在backoff时间内没有选举出leader;

(2) region已经有问题无法选出leader;

(3) Region split时间过长。

3、 Region split/merge在Follower apply慢的情况下,发生Leader切换后未能在backoff时间内同步到split/merge操作。

4、其他情况:比如版本升级过程不完全、bug等。如:https://docs.pingcap.com/zh/tidb/stable/release-5.3.3

3 排查总结

1、确认问题是偶尔出现还是每次必现。

2、检查是否有多个tikv 或tiflash异常的情况。

tiup cluster display  xxx 或查询Information_schema.tikv_store_status

3、检查tikv/tiflash的版本是否一致,状态是否与tiup一致,已缩容节点是否仍可见。

查询Information_schema.tikv_store_status 或 pd-ctl store

4、检查副本数设置max-replicas是否>=3。

pd-ctl config show

5、检查查询的表或使用的索引region是否正常。

explain SQL 检查报错表的执行计划使用索引还是表、走的tikv还是tiflash。

show table xxx regions .

pd-ctl region region_id

正常情况region中peer数应该>=max-replica数量,且其中一个为leader

6、直接查找不正常的region。

(1) 没有leader的region

pd-ctl region --jq='.regions[]|select(has("leader")|not)|{id: .id,peer_stores: [.peers[].store_id]}'

(2) region数小于一定数量的region

pd-ctl region --jq='.regions[] | {id: .id, peer_stores: [.peers[].store_id] | select(length==1) } '

(3) 检查bad region

./tikv-ctl --data-dir /data1/tidb-data/tikv-20160 bad-regions

5.x版本:./tikv-ctl --db /data1/tidb-data/tikv-20160/db bad-regions

7、检查tikv是否出现重启。

监控: TiKV detail -> cluster -> uptime或看memory趋势

8、检查follower apply是否延迟。

监控:TiKV detail -> raft Io -> appply log duration 是否过大

TiKV detail -> raft propose -> appply wait duration 是否过大

9、检查tikv是否出现server busy 或其他错误

监控:TiKV detail -> Erros

Server busy 排查

10、检查问题region的tikv/pd日志,确认是否有异常信息。

4 一些建议

1、在同一主机部署同一集群的多个tikv实例时一定要将所有tikv设置相同的label,否则会导致同一主机有某些region的多个副本存在,宕机后会出现多副本失败。

2、升级、缩容操作要处理完整。缩容处理流程可参考:

TiKV缩容下线异常处理的三板斧:https://tidb.net/blog/ddef26a5

----------------------------------------------------------------------------------------------------------------------

参考文档:Region is unavailable

[转帖]Region is unavailable的排查总结的更多相关文章

  1. tidb损坏tikv节点怎么恢复集群

    tikv节点宕机(机器再起不来),或者数据节点被rm -rf 掉了怎么办 正常情况下tikv节点down掉了.此时不要去执行store delete  store_id .数据一般可以正常访问,但是如 ...

  2. 线上问题排查-HBase写数据出现NotServingRegionException(Region ... is not online)异常

    今天线上遇到一个问题:有一台服务器的cpu持续冲高,排查发现是我们的一个java应用进程造成的,该进程在向hbase中写入数据时,日志不断地打印下面的异常: org.apache.hadoop.hba ...

  3. IIS进程池异常崩溃,导致网站 service unavailable,原因排查与记录。

    昨晚十点钟的样子,网站崩溃,开始 service unavailable,最近开始业务高峰,心里一惊,麻痹肯定进程池又异常崩溃了.又碰到什么问题?上次是因为一个异步线程的问题,导致了进程池直接崩溃,后 ...

  4. 【转帖】HBase之五:hbase的region分区

    HBase之五:hbase的region分区 https://www.cnblogs.com/duanxz/p/3154487.html 一.Region 概念 Region是表获取和分布的基本元素, ...

  5. 关于报错:'sharedApplication' is unavailable: not available on iOS (App Extension) - Use view controller based

    最近在看Extension相关知识的时候,自己写了个小demo 发现[UIApplication sharedApplication]这个方法敲不出来了, 总是报错:'sharedApplicatio ...

  6. su: cannot set user id: Resource temporarily unavailable

    今天R&D所在主机出现su: cannot set user id: Resource temporarily unavailable资源不可用报错,直接通过其他机器ssh huyuh@xxx ...

  7. 13_FCITX输入法安装及问题排查解决

    使用linux最沮丧的事情莫过于中文输入法切换不出来,甚至有人错误地认为,要使用中文输入法,必须把“区域和语言”(Region & Language)设置为中国-中文.输入法只是一个软件,和区 ...

  8. 排查 docker flow proxy 的 503 问题

    这是今天我们在开发环境下 docker swarm 集群上遇到的问题,在这篇博文中记录一下排查过程. 先登录到应用容器内检查一下其中运行的站点是否能正常访问: # docker exec -it 02 ...

  9. su: cannot set user id: Resource temporarily unavailable【转】

    今天R&D所在主机出现su: cannot set user id: Resource temporarily unavailable资源不可用报错,直接通过其他机器ssh huyuh@xxx ...

  10. [转帖] sqlserver CAL 授权模式下 只能够有20个core的使用问题

    http://www.cnblogs.com/diabloxl/p/3623640.html?utm_source=tuicool&utm_medium=referral 公司这边性能组老师进 ...

随机推荐

  1. C# 成为2023年度编程语言之王

    原文发表在公众号 腾讯云开发者:https://mp.weixin.qq.com/s/5owE5hmJVkwOLJrKMXfR6Q 导读 2023 TIOBE 年度编程语言正式揭晓,C# 在陪跑多年后 ...

  2. c#中用System.Diagnostics.Process.Start(Path.GetFullPath(“vlc.exe.lnk“), url);用vlc的快捷方式打开http的url不起作用?

    vlc.exe.lnk双击这个文件,能正常打开vlc,但是用System.Diagnostics.Process.Start(Path.GetFullPath("vlc.exe.lnk&qu ...

  3. flutter中显示年月日、星期与时间

    代码 import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'dart:async'; imp ...

  4. 一文让你彻底掌握ThreadLocal

    本文分享自华为云社区<[高并发]一文带你彻底搞懂ThreadLocal>,作者: 冰 河. 我们都知道,在多线程环境下访问同一个共享变量,可能会出现线程安全的问题,为了保证线程安全,我们往 ...

  5. 昇腾实战丨DVPP媒体数据处理图片解码问题案例

    摘要:本期就分享几个关于DVPP图片解码问题的典型案例,并给出原因分析及解决方法. 本文分享自华为云社区<DVPP媒体数据处理图片解码问题案例>,作者:昇腾CANN . DVPP(Digi ...

  6. 如何更好的分析潜在人脉?聊聊华为云图引擎GES的Cypher子查询

    摘要:本文以华为云图引擎 GES 为例,来介绍如何使用图查询语言 Cypher 表达一些需要做数据局部遍历的场景. 本文分享自华为云社区<使用 Cypher 子查询进行图探索 -- 以华为云图引 ...

  7. Python从0到1丨图像增强及运算:形态学开运算、闭运算和梯度运算

    摘要:本文主要介绍图像形态学处理,详细讲解了图像开运算.闭运算和梯度运算.数学形态学是一种应用于图像处理和模式识别领域的新方法,其基本思想是用具有一定形态的结构元素去量度和提取图像中对应形状以达到对图 ...

  8. Python中Round函数:怎么解释?怎么用?

    摘要:在本文中,介绍了什么是round函数以及如何从python内核中实现它.同时,还介绍舍入函数的一些缺点,以及如何纠正它们,如何在数据科学中广泛使用的库中发挥作用. Python中的舍入函数,返回 ...

  9. 当你运行npm run命令时,会发生什么?

    摘要:今天我们来聊一聊运行npm run命令之后会发生什么. 本文分享自华为云社区<运行npm run命令的时候会发生什么?>,作者:gentle_zhou . 先前发了一篇"运 ...

  10. 字节跳动基于DataLeap的DataOps实践

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 本文根据 ArchSummit 全球架构师峰会(深圳站)来自抖音数据研发负责人王洋的现场分享实录整理而成(有删减) ...