特性概述
主备重建是GaussDB数据库服务高可用(HA)体系中的核心修复特性,它通过从主节点或完整备节点进行全量或增量同步数据的方式,解决因备节点数据延迟、磁盘损坏、日志断裂等原因导致其与主节点数据不一致的问题,从而实现备节点的快速纳管与集群可用性的恢复。该特性是实现集群高可用性、保证数据最终一致性的关键技术保障。
功能定义
通过基于WAL日志的物理复制与回放技术,解决因备节点故障、宕机或数据损坏导致的数据不一致问题,实现备节点数据的自动化或手动化全量/增量重建,确保主备集群的数据最终一致性,保障集群的持续高可用。
用户场景
- 行业领域:金融(支付、清算)、电信(计费、账务)、政务(一网通办)等对数据可靠性与服务连续性要求极高的行业。
- 业务痛点:
- 硬件故障:备节点所在服务器磁盘损坏,导致数据文件丢失或不可用。
- 网络故障:备节点长时间与主节点网络中断,积压的日志已被主节点清理,导致日志断点,无法通过常规日志回放进行同步。
- 人为误操作:在备节点上执行了误写操作,污染了数据。
- 常见触发条件:
- 集群内HA自动恢复
- WAL segment removed:备节点所请求的日志LSN在主节点上不存在,导致主备日志复制出现脱节现象。
- System id not match:备节点上记录的system identifier与主节点不一致。通常发生于集群安装阶段或节点替换、升副本等有新节点加入集群中时,需要通过全量重建方式进行数据同步。
- DCF log loss:基于dcf的一致性复制协议,当备节点发现本地记录的最大dcf index在主节点上不存在时,需要通过重建方式进行恢复。
- 手动触发
例如:在业务高峰期下,主节点网络资源和计算资源受限,无法触发自动恢复,需要等到业务低峰期再进行重建修复的场景。
- 集群管理流程中触发
- 容灾集群的搭建和加回。
- 节点修复/替换。
- 备份恢复。
- 集群内HA自动恢复
规格约束
- 兼容性:
- 版本支持:(具体版本号请以实际发布为准)。
表1 主备重建版本支持情况 特性
版本
主备全量/增量重建
GaussDB V500R001C00及以上版本
备机到备机的增量重建
GaussDB 505.1及以上版本
异步build
GaussDB 505.2.1 spc0800、GaussDB 507.0及以上版本
并行重建和并行压缩重建
GaussDB 506.0及以上版本
- 生态工具:可通过OM(运维管理服务)、CM(数据库管理服务)、gs_ctl命令行工具进行操作。
- 版本支持:(具体版本号请以实际发布为准)。
- 性能限制:
- 网络带宽:重建过程涉及数据传输,对网络带宽存在消耗,建议避开业务高峰时段。
- 主节点负载:重建期间,主节点需要承担读取数据页和发送数据的任务,会对主节点性能产生一定影响(CPU、I/O压力增大)。
- 磁盘I/O:目标备节点需要接收并写入大量数据,在网络不受限制的场景下,磁盘I/O会是主要瓶颈。
- 功能约束:
- 主节点唯一性:同一时刻,CM只会让主节点为一个备节点提供重建服务(但主节点支持为多个备节点同时进行数据重建)。
- 重建过程互斥:一个备节点不能同时从两个不同的源节点进行重建。
- 级联备节点:级联备节点(Cascade Standby)的重建源只能是其直接上游节点。
技术架构
GaussDB主备重建的核心架构流程如下图所示,主要涉及CM、WAL Sender、WAL Receiver、Data Sender、Data Receiver和WAL Redo等核心组件:
核心组件说明:
- CM: 集群高可用管理服务。负责检测节点状态,在备节点异常时决策是否需要触发重建,并协调重建任务的开始与停止。
- WAL Sender: 主节点上的WAL日志发送线程。负责将重建期间产生的WAL日志数据发送到备节点。在重建任务的开始和结束,都会向备机发送一个一致性快照点(checkpoint),作为回放的起点和终点。
- Data Sender : 主节点上的数据发送线程。负责从磁盘读取完整的数据文件,并将其流式传输到备节点。
- WAL Receiver: 备节点上的WAL日志接收进程。负责接收从主节点发送来的WAL日志数据。
- Data Receiver : 备节点上的数据接收线程。负责接收来自主节点的数据文件,并将其写入到本地磁盘。
- WAL Redo: 备节点上的WAL日志回放线程。在接收完全量数据,备节点拉起后,会回放重建起点之后的所有WAL日志,最终使备节点数据与主节点完全一致。
数据流向:
- 数据链路:全量数据文件从主节点Data Sender流向备节点Data Receiver并落盘。
- 日志链路:WAL日志从主节点WAL Sender流向备节点WAL Receiver并落盘,等待备节点启动后,由WAL Redo线程进行回放。
决策点:
- 重建模式选择:除特殊场景外,当前CM服务默认下发重建模式为Auto Build,优先进行增量重建,若增量重建三次失败,转全量重建。
核心组件说明:
- CM: 集群高可用管理服务。负责检测节点状态,在备节点异常时决策是否需要触发重建,并协调重建任务的开始与停止。
- WAL Sender: 主节点上的WAL日志发送线程。负责将重建期间产生的WAL日志数据发送到备节点。在重建任务的开始和结束,都会向备机发送一个一致性快照点(checkpoint),作为回放的起点和终点。
- Data Sender : 主节点上的数据发送线程。负责从磁盘读取完整的数据文件,并将其流式传输到备节点。
- WAL Receiver: 备节点上的WAL日志接收进程。负责接收从主节点发送来的WAL日志数据。
- Data Receiver : 备节点上的数据接收线程。负责接收来自主节点的数据文件,并将其写入到本地磁盘。
- WAL Redo: 备节点上的WAL日志回放线程。在接收完全量数据,备节点拉起后,会回放重建起点之后的所有WAL日志,最终使备节点数据与主节点完全一致。
数据流向:
- 数据链路:全量数据文件从主节点Data Sender流向备节点Data Receiver并落盘。
- 日志链路:WAL日志从主节点WAL Sender流向备节点WAL Receiver并落盘,等待备节点启动后,由WAL Redo线程进行回放。
决策点:
- 重建模式选择:除特殊场景外,当前CM服务默认下发重建模式为Auto Build,优先进行增量重建,若增量重建三次失败,转全量重建。