GBase 8a数据库feventlog故障事件日志的恢复流程
南大通用GBase 8a MPP 集群gbase database设计了一套称为 feventlog故障事件日志 的自愈机制通过“记录-恢复”的闭环流程自动化处理节点故障确保分布式系统的数据完整性与服务连续性。以下对其恢复流程进行深入解析。1、ddleventlog 严格一致性校验ddleventlog 的重做不是简单重跑 SQL而是通过以下严格流程保障分布式一致性· 元数据快照比对重做前从 gcware 拉取当前集群的全量元数据快照与日志中记录的版本比对确保无其他并发 DDL 修改同一对象。· SCN 强校验重做 SQL 前强制检查目标对象的当前 SCN系统变更号 与日志中记录的预期 SCN 是否一致。若不一致说明该对象已被其他操作修改系统会放弃重做避免元数据混乱。· 跨节点原子广播重做成功后新的元数据版本会广播给所有 Coordinator 节点更新本地缓存最后再从 gcware 中删除该 ddleventlog 记录确保全局视图一致。2、dmleventlog 数据复制恢复核心是调用gc_sync工具从同一个分片下的正常备份节点拷贝数据到故障节点。基于 gc_sync 的数据复制dmlevent 恢复调用 syncclient syncserver 组件实现点对点高速数据同步。01流程· 调用触发gcrecover 连接到故障节点拉起 syncclient 进程指定源分片、目标分片、同步模式。· 端口连接syncclient 通过 5288 端口连接源节点的 syncserver 服务。· 元数据校验syncserver 返回目标分片的元数据syncclient 通过比对两端分片的 DC数据块列表筛选差异块。· 增量同步syncserver 仅返回差异 DC 数据避免全量拷贝。· 日志落盘同步完成后执行日志写入 /gnode/log/gbase/syncclient_XXXX.log经 gcrecover 校验数据一致后清除对应的dmleventlog。02SCN 决策逻辑1如果同一分片的主副副本上都存在dmlevent系统会对比两者的SCN号并以SCN更大的副本代表数据更新为准向SCN较小的副本同步数据。2当两个副本的SCN记录均为0时则跳过revert操作直接执行从正常节点到故障节点的数据拷贝。3、dmlstorageeventlog 存储修复针对物理文件损坏恢复策略更为复杂· 表结构损坏删除损坏表 → 从正常副本获取建表语句重建 → 触发 sync 全同步模式恢复数据。· 数据文件损坏删除损坏文件 → 调用 sync 的一般模式从正常副本同步数据。