课程名称:(301)3.9.4 Mutil Site Disaster Recovery(TiDB 跨数据中心部署方案)
学习时长:10min
课程收获:在多副本异常情况下,保障集群正常可用
课程内容: 查处出现异常的 region;更改 raft group config 来恢复集群使用
哪些情况会丢失数据:region的全部副本丢失;region的大部分副本丢失,但剩余副本没有收到最近的写入
哪些场景容易触发上述情况:sync-log参数没有开启;没有设置正确的lable
故障恢复时建议
记录集群版本;sysc-log的配置;异常宕机的TiKV的数量和它们的日志等
找到有超过一半副本在故障节点上的region,并记录它们的ID
恢复思路:更改raft group configure,使得剩余成员具有选举条件;对于所有region丢失的情况,创建空region
恢复步骤
region部分副本丢失时。降低异常出现的可能,调整PD配置,关闭集群的调度:通过命令,找到超过一半副本在故障节点的region,记录id。在上升故障的节点上,把上述region设置为 tombstone状态,以取消TiKV启动时对上述故障的检查tikv-ctl --db,使用的是本地模式,需要在TiKV shutdown前提下执行。
在剩余正常节点上,移除上述region在故障节点的peer信息;有副本健在的region,可以进行选举leader并提供服务,可以重启PD、重启TiKV集群、处理副本都丢失的region。
根据region id ,创建空region,解决 region is unavailable错误,现在所有的region都可以提供服务。
后续使用API ,根据reigon id确认上述region属于那些表对丢失数据进行处理。
更有效的方法:确定故障前几分钟写入了哪些表,是否有ddl操作,是否可以重新消费更上游的数据重新写入。重导这部分数据。否则只能对最重要的表和索引进行数据校验,保证集群的数据准确。
最后还原PD参数。
学习过程中遇到的问题或延伸思考:
- 问题 1:
- 问题 2:
- 延伸思考 1:
- 延伸思考 2:
学习过程中参考的其他资料
无