【TiDB 4.0 PCTA 学习笔记】- 3.9.4 Mutil Site Disaster Recovery (TiDB 跨数据中心部署方案)@2班+邱育珍

课程名称:3.9.4 Mutil Site Disaster Recovery (TiDB 跨数据中心部署方案)

学习时长:10min

课程收获:

在多副本异常情况下,保障集群正常可用

课程内容:

1.造成数据丢失的几种情况

  • 常见情况

    • 某些region的全部副本在故障中丢失
    • 某些region的大部分副本在故障中丢失,而剩余的副本又没有收到最近的写入
  • 造成数据丢失的原因

2.数据恢复流程

  • 恢复数据前
    要记录重要信息:集群版本、sync-log参数配置、宕机的TiKV数量和日志 等
    找到超过一半副本在故障节点的region,并记录ID
    数据恢复思路主要是:
    更改 raft group configure,使剩余成员具有选举条件;
    对所有region都丢失的情况,需要空region,来解决region is unavailable错误,使其仍可正常提供服务。

  • 数据恢复流程

  • 调整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 (curl http:// ),根据reigon id确认上述region属于那些表,对丢失数据进行处理


除了前述方法根据region id 找到丢失的表,
其实最有效的手段是 确定故障前几分钟 写入了哪些表,是否有ddl操作,是否可以重新消费更上游的数据重新写入。重导这部分数据,是最简单最完美的处理方式。否则只能对最重要的表和索引进行数据校验,保证集群的数据准确。
最后需要还原PD参数