写点什么

TiKV 多副本丢失的故障修复演练

  • 2022 年 7 月 11 日
  • 本文字数:1774 字

    阅读完需:约 6 分钟

作者: 信仰在空中飘扬原文来源:https://tidb.net/blog/74682d73


v5.0.1 版本 tidb 集群故障演练


参考文章:



Tidb 灾难恢复演练 - 多副本丢失 运维实战


数据库是每个公司的重中之重,它往往存储了公司的核心数据,一旦出现永久性损坏,对公司的打击会是灾难性的。分布式数据库虽然采用数据多副本备份机制来保证数据的可靠性,但同样也会面临多副本丢失的风险。灾难出现如何快速恢复也是 DBA 需要面对的问题,本案通过对具体示例的理解与操作介绍了分布式 NEWSQL 数据库 Tidb 对多副本丢失问题的处理。 一、TiDB 的整体架构: TiDB 集群主要包括三个核心组件:T…



一篇文章带你玩转 TiDB 灾难恢复 运维实战


一篇文章带你玩转 TiDB 灾难恢复 一、背景 高可用是 TiDB 的另一大特点,TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,不影响整个集群的可用性。下面分别说明这三个组件的可用性、单个实例失效后的后果以及如何恢复。 TiDB TiDB 是无状态的,推荐至少部署两个实例,前端通过负载均衡组件对外提供服务。当单个实例失效时,会影响正在这个实例上进行的 Session,从应用的角度看,会…


https://docs.pingcap.com/zh/tidb/stable/tikv-control


演练背景 & 目标:


目的是打造双云机房部署 tidb 集群,在主机房故障时可以紧急使用少数的 pd 节点和 tikv 节点恢复服务


pd 节点的演练文档: 使用 pd-recover 恢复 pd 多数节点故障的场景


测试环境部署信息:


A,B 两个机房: 所有的 region 的 leader 调度到 A 机房


使用 label 标签保证 B 机房的那个 tikv 节点拥有完整的数据副本



1. 设置标签 (如果之前是单机房可通过如下设置新的标签)


» config set location-labels dc,host» store  label  4 dc bjtx» store label 24045 dc bjtx» store label 1001 dc bjtx» store label  22508 dc bjbd-- 查看store 基本信息» store --jq=".stores[].store |{id,address,state_name,labels}"{"id":24045,"address":"172.29.238.197:20174","state_name":"Up","labels":[{"key":"host","value":"tikv4"},{"key":"dc","value":"bjtx"}]}{"id":4,"address":"172.29.238.238:20174","state_name":"Up","labels":[{"key":"host","value":"tikv1"},{"key":"dc","value":"bjtx"}]}{"id":1001,"address":"172.29.238.146:20174","state_name":"Up","labels":[{"key":"host","value":"tikv1"},{"key":"dc","value":"bjtx"}]}{"id":22508,"address":"192.168.149.156:20174","state_name":"Up","labels":[{"key":"host","value":"tikv3"},{"key":"dc","value":"bjbd"}]}
复制代码


2. 使用 pd-ctl 将所有 region 的 leader 调度到 bjtx 机房,并通过监控确认所有的 region leader 是否都调度到 A 机房


» config show label-property{}» config set label-property reject-leader dc bjbdSuccess!» config show label-property{  "reject-leader": [    {      "key": "dc",      "value": "bjbd"    }  ]}-- 查看bjbd机房是否包含了所有的region副本数据(保证在主机房挂掉后备用机房拥有完整的数据副本)» region --jq=".regions[] | {id: .id, peer_stores: [.peers[].store_id] | select(all(.!=22508))}"
复制代码


模拟 tikv 主机房故障 (手动快速 kill 主机房的 pd 节点以及 tikv 节点,并 mv 相关数据目录)


pd 服务的恢复见上面链接。在 pd 恢复服务之后, 进行 tikv 的恢复


1. 使用 tiup 关闭健康的 tikv 节点 192.168.149.156:20174


2. 使用 tikv-ctl 对所有 Region 移除掉所有位于故障节点上的 Peer


bin/tiup ctl tikv --db /data/tidb/data/tikv-20174/db  unsafe-recover remove-fail-stores -s 24045,4,1001 --all-regionsremoving stores [24045, 4, 1001] from configurations...success-- 注意此操作需要在每一个健康的tikv 节点上执行该命令。因此需要在每个tikv 节点上部署tikv-ctl 工具
复制代码


a. 此时 reload pd,tikv 是失败的 (报错如下图)



b. 使用 scale-in 操作下线故障的 tikv 节点, 集群整体状态大致如下图所示。此时 reload pd,tikv 还是失败的



c. 使用–force 强制下线故障的 tikv 节点 (3 个)


bin/tiup  cluster  scale-in tidb-louis_cluster   -N 172.29.238.146:20174  --force ......
复制代码


3.reload pd,tikv


bin/tiup  cluster  reload  tidb-louis_cluster -R=pd,tikv
复制代码



再次查看监控大盘如下



4. 根据实际情况再次扩容 tikv,pd 节点


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021.12.15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TiKV 多副本丢失的故障修复演练_故障排查/诊断_TiDB 社区干货传送门_InfoQ写作社区