资讯专栏INFORMATION COLUMN

TiDB 数据库故障应急操作手册

IT那活儿 / 907人阅读
TiDB 数据库故障应急操作手册
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

  
应用范围:
本文档描述为生产环境TiDB服务不可用情况下的应急手段。



名词解释

  • TiDB Server
    SQL层,对外暴露MySQL 协议的连接 endpoint,负责接受客户端的连接,执行 SQL解析和优化 ,最终生成分布式执行计划。
    TiDB层本身是无状态的,实践中可以启动多个TiDB实例,通过负载均衡组件  (如 LVS、HAProxy或F5) 对外提供统⼀的接入地址,客户端的连接可以均匀地分摊在多个TiDB实例上以达到负载均衡的效果。

    TiDB Server本身并不存储数据 ,只是解析SQL ,将实际的数据读取请求转发给底层的存储节点TiKV  (或 TiFlash)  。

  • PD Server
    整个TiDB集群的元信息管理模块,负责存储每个TiKV节点实时的数据分布情况和集 群的整体拓扑结构 ,提供TiDB Dashboard管控界面,并为分布式事务分配事务 ID。PD不仅存储元信息 ,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的TiKV节点 ,可以说是整个集群的“大脑”

    此外,PD 本身也是由至少3个节点构成,拥有高可用的能⼒。建议部署奇数个 PD 节点

  • TiKV
    负责存储数据,从外部看TiKV是⼀个分布式的提供事务的Key-Value存储引擎。存储数据的基本单位是Region ,每个Region负责存储⼀个Key Range (从 StartKey 到 EndKey的左闭右开区间)的数据 ,每个TiKV节点会负责多个Region。

    TiKV的API在KV键值对层面提供对分布式事务的原生支持 ,默认提供了 SI (Snapshot Isolation) 的隔离级别 ,这也是 TiDB 在SQL层面支持分布式事务的核心。TiDB 的SQL层做完SQL解析后 ,会将SQL的执行计划转换为对TiKV API的实际调用。所以 ,数据都存储在TiKV中。另外,TiKV 中的数据都会自动维护多副本  (默认为三副本)  ,天然支持高可用和自动故障转移。

  • TiFlash
    TiFlash是⼀类特殊的存储节点。和普通 TiKV 节点不⼀样的是 ,在 TiFlash 内部 ,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速

命令执行

  • 系统命令

    通过ssh登陆到中控机(已经安装TiUP的机器)  ,使用TiUP client连接 TiDB。

  • SQL语句
    通过MySQL Client命令行登陆到TiDB Server。在MySQL client中执行的命令 ,登陆方式如下:

mysql --host 127.0.0.1 --port 4000 -u root


常见错误码

  • 1.  Error Number: 8003

    ADMIN CHECK TABLE命令在遇到行数据跟索引不⼀致的时候返回该错误 ,在检查表中数据是否有损坏时常出现。 出现该错误时 ,请向PingCAP工程师或通过官方论坛寻求帮助。

  • 2.  Error Number: 8223

    检测出数据与索引不⼀致的错误 ,如果遇到该报错请向PingCAP工程师或通过官方论坛寻求帮助。

  • 3.  Error Number: 8027

    表结构版本过期。TiDB 采用在线变更表结构的方法。 当TiDB server表结构版本落后于整个系统的时,执行SQL将遇到该错误。遇到该错误,请检查该 TiDB server 与PD leader之间的网络。

  • 4.  Error Number: 8120

    获取不到事务的start tso,请检查 PD Server 状态/监控/日志以及TiDB Server与PD Server 之间的网络。

  • 5.  Error Number: 9001

    请求PD超时,请检查PD Server 状态/监控/日志以及TiDB Server与PD Server之间的网络。

  • 6.  Error Number: 9002

    请求TiKV超时,请检查TiKV Server状态/监控/日志以及TiDB Server与TiKV Server之间的网络。

  • 7.  Error Number: 9005

    某个Raft Group不可用,如副本数目不足,出现在 TiKV 比较繁忙或者是TiKV节点停机的时候,请检查TiKV Server状态/监控/日志。

  • 8.  Error Number: 9003

    TiKV操作繁忙,⼀般出现在数据库负载比较高时,请检查 TiKV Server 状态/监控/日志。

  • 9.  Error Number: 9012

    请求TiFlash 超时。请检查TiFlash Server状态/监控/日志以及TiDB Server与TiFlash Server 之间的网络。

  • 10.  Error Number: 9013
    TiFlash操作繁忙。该错误⼀般出现在数据库负载比较高时。请检查TiFlash Server的状态/监控/日志。

TiDB服务器宕机

场景描述:TiDB服务器宕机

业务影响:多个TiDB无影响,宕机影响SQL执行。
启动条件:

序号

步骤名称
应急处置流程
T1

识别

Ping TiDB服务器的ip地址,无法ping通。

ping

检查当前集群状态,TiDB状态显示down 
tiup cluster dipslay
T2
现场
保护
目录:/log
目录下tidb.log日志
T3
操作
步骤


检查当前集群状态,TiDB状态显示down 

tiup cluster dipslay

启动TiDB节点
tiup cluster start  
-N :
T4
验证
步骤
再次确认是否正常,检查当前集群状态,TiDB状态显示up
tiup cluster dipslay



PD服务器宕机

场景描述:PD服务器宕机
业务影响:PD服务器宕机
启动条件:
序号
步骤名称
应急处置流程
T1
场景识别
Ping PD服务器的ip地址,无法ping通。

ping

检查当前集群状态,PD状态显示down

tiup cluster dipslay

观察宕机的PD节点是否为leader
curl :/pd/api/v1/member
T2
现场保护
目录:/log
目录下tidb.log日志
T3
操作步骤
检查当前集群状态,PD状态显示down

tiup cluster dipslay

非leader节点宕机对集群无影响,恢复后可直接启动

tiup cluster start -N :

leader节点宕机后,PD需要选举 leader,在这期间可能会导致集群不可用,最长时间在10s内。此时需要确认业务是否受影响,QPS是否下降。观察监控TiDB栏Failed query OPM监控面板,确认执行失败的 SQL 语句。等服务器恢复后使用如下命令启动 PD 。
tiup cluster start -N :


TiKV服务器宕机

场景描述:TiKV服务器宕机
业务影TiKV服务器宕机
启动条件:
序号
步骤名称
应急处置流程
T1
场景识别
Ping TiKV服务器的ip地址,无法ping通。

ping

检查当前集群状态,显示TiKV组件显示Down 
tiup cluster dipslay
T2
现场保护
目录:/log
目录下tidb.log日志
T3
操作步骤
检查当前集群状态,TiKV状态显示down 

tiup cluster dipslay

两台  (含)  TiKV 服务器的 down 机不会影响集群提供服务的能力。如有 down 机,观察监控 TiDB 栏Failed query OPM监控面板,确认执行失败的 SQL 语句,可用如下命令启动TiKV节点:
tiup cluster start -N :
T4
验证步骤
再次确认是否正常,检查当前集群状态,TiKV状态显示up 
tiup cluster dipslay


本文作者:白炀斌(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129248.html

相关文章

  • Cloud + TiDB 技术解读

    摘要:作为一个开源的分布式数据库产品,具有多副本强一致性的同时能够根据业务需求非常方便的进行弹性伸缩,并且扩缩容期间对上层业务无感知。另外本身维护了数据多副本,这点和分布式文件系统的多副本是有重复的。 作者:邓栓来源:细说云计算 作为一款定位在 Cloud-native 的数据库,现如今 TiDB 在云整合上已取得了阶段性的进展。日前 Cloud TiDB 产品在 UCloud 平台正式开启...

    JouyPub 评论0 收藏0
  • TiDB Operator,让 TiDB 成为真正的 Cloud-Native 据库

    摘要:和简介作为一个开源的分布式数据库产品,具有多副本强一致性的同时能够根据业务需求非常方便的进行弹性伸缩,并且扩缩容期间对上层业务无感知。 TiDB Operator 是 TiDB 在 Kubernetes 平台上的自动化部署运维工具。目前,TiDB Operator 已正式开源(pingcap/tidb-operator)。借助 TiDB Operator,TiDB 可以无缝运行在公有云...

    singerye 评论0 收藏0
  • 听说支付宝有一个“疯起来连自己都打”的项目

    摘要:支付宝疯起来连自己都打的项目就是红蓝军技术攻防演练,他们不仅每周进行全栈级别的演练,每年还会举行规模极大的期中考试和期末考试。在支付宝,蓝军从属于蚂蚁金服技术风险部,而红军则包括及各业务部门的技术团队。 摘要: 红军 VS 蓝军,谁是更强者? ​小蚂蚁说: 自古红蓝出CP,在蚂蚁金服就有这样两支相爱相杀的队伍——红军和蓝军。蓝军是进攻方,主要职责是挖掘系统的弱点并发起真实的攻击,俗称...

    trigkit4 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<