GBase 8a数据库故障事件日志产生场景与原理讲解
南大通用GBase 8a MPP 集群gbase database设计了一套称为 feventlog故障事件日志 的自愈机制通过“记录-恢复”的闭环流程自动化处理节点故障确保分布式系统的数据完整性与服务连续性。以下将对其产生场景与原理进行深入解析。1、触发场景当一个或多个数据节点被标记为故障状态节点硬件宕机、节点之间网络不通、核心进程卡住不响应、表分片状态异常等时Coordinator调度节点会暂停直接下发 SQL 到故障节点转而对操作过程进行日志记录记录内容包括事件 ID、操作类型、表名、分片 ID、故障节点 IP、SCN系统变更号以及具体的 SQL 语句等关键信息供后续系统自动恢复使用。2、记录升级逻辑DDL只要有一个节点执行成功其他失败节点就会记录ddlfeventlog。ddlfeventlog一般指元数据或者表结构不一致。DML执行过程中部分节点未执行成功导致某些分片主备出现数据不一致但是执行成功的有一组可用的完整数据分片执行失败节点分片记录dmlfeventlog。dmlfeventlog一般指表的数据内容不一致。Dmlstoragefeventlog指表数据存储发生了异常一般是磁盘物理损坏或者表的数据文件损坏可由DML或者DQL触发记录。普通的DML操作失败只会记录成普通的dmleventlog事件不会触发高等级告警但如果操作的时候碰到因磁盘损坏、数据文件损坏这类物理存储层面的问题系统会自动把这条记录升级成dmlstorageeventlog直接触发存储故障告警提醒运维优先处理。3、gcrecover 进程机制GBase 8a集群一旦发生了主副本数据文件不一致自动恢复由部署在所有 Coordinator调度节点上的 gcrecover 服务负责其运行受 gcmonit 服务监控。gcrecover 的底层运行机制包括主节点选举集群中仅选举一个 Coordinator 的 gcrecover 为主恢复节点防止多节点同时调度引发冲突。事件轮询机制主节点按固定间隔轮询集群所有 VC 的 feventlog 表按 ddlevent → dmlevent → dmlstorageevent 的优先级顺序处理事件优先保障元数据一致。