更新时间:2026-07-28 GMT+08:00
分享

特性概述

主备重建是GaussDB数据库服务高可用(HA)体系中的核心修复特性,它通过从主节点或完整备节点进行全量或增量同步数据的方式,解决因备节点数据延迟、磁盘损坏、日志断裂等原因导致其与主节点数据不一致的问题,从而实现备节点的快速纳管与集群可用性的恢复。该特性是实现集群高可用性、保证数据最终一致性的关键技术保障。

功能定义

通过基于WAL日志的物理复制与回放技术,解决因备节点故障、宕机或数据损坏导致的数据不一致问题,实现备节点数据的自动化或手动化全量/增量重建,确保主备集群的数据最终一致性,保障集群的持续高可用。

用户场景

  • 行业领域:金融(支付、清算)、电信(计费、账务)、政务(一网通办)等对数据可靠性与服务连续性要求极高的行业。
  • 业务痛点
    • 硬件故障:备节点所在服务器磁盘损坏,导致数据文件丢失或不可用。
    • 网络故障:备节点长时间与主节点网络中断,积压的日志已被主节点清理,导致日志断点,无法通过常规日志回放进行同步。
    • 人为误操作:在备节点上执行了误写操作,污染了数据。
  • 常见触发条件
    • 集群内HA自动恢复
      1. WAL segment removed:备节点所请求的日志LSN在主节点上不存在,导致主备日志复制出现脱节现象。
      2. System id not match:备节点上记录的system identifier与主节点不一致。通常发生于集群安装阶段或节点替换、升副本等有新节点加入集群中时,需要通过全量重建方式进行数据同步。
      3. DCF log loss:基于dcf的一致性复制协议,当备节点发现本地记录的最大dcf index在主节点上不存在时,需要通过重建方式进行恢复。
    • 手动触发

      在某些特殊场景下,需要手动触发重建修复的场景。

      例如:在业务高峰期下,主节点网络资源和计算资源受限,无法触发自动恢复,需要等到业务低峰期再进行重建修复的场景。

    • 集群管理流程中触发
      1. 容灾集群的搭建和加回。
      2. 节点修复/替换。
      3. 备份恢复。

规格约束

  • 兼容性
    • 版本支持:(具体版本号请以实际发布为准)。
      表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 ReceiverWAL Redo等核心组件:

图1 重建流程图

核心组件说明

  • CM: 集群高可用管理服务。负责检测节点状态,在备节点异常时决策是否需要触发重建,并协调重建任务的开始与停止。
  • WAL Sender: 主节点上的WAL日志发送线程。负责将重建期间产生的WAL日志数据发送到备节点。在重建任务的开始和结束,都会向备机发送一个一致性快照点(checkpoint),作为回放的起点和终点。
  • Data Sender : 主节点上的数据发送线程。负责从磁盘读取完整的数据文件,并将其流式传输到备节点。
  • WAL Receiver: 备节点上的WAL日志接收进程。负责接收从主节点发送来的WAL日志数据。
  • Data Receiver : 备节点上的数据接收线程。负责接收来自主节点的数据文件,并将其写入到本地磁盘。
  • WAL Redo: 备节点上的WAL日志回放线程。在接收完全量数据,备节点拉起后,会回放重建起点之后的所有WAL日志,最终使备节点数据与主节点完全一致。

数据流向

  1. 数据链路:全量数据文件从主节点Data Sender流向备节点Data Receiver并落盘。
  2. 日志链路: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日志,最终使备节点数据与主节点完全一致。

数据流向

  1. 数据链路:全量数据文件从主节点Data Sender流向备节点Data Receiver并落盘。
  2. 日志链路:WAL日志从主节点WAL Sender流向备节点WAL Receiver并落盘,等待备节点启动后,由WAL Redo线程进行回放。

决策点

  • 重建模式选择:除特殊场景外,当前CM服务默认下发重建模式为Auto Build,优先进行增量重建,若增量重建三次失败,转全量重建。

相关文档