GaussDB 分布式备份原理、备份空间计算与策略建议(优化整理版)


GaussDB 分布式备份原理、备份空间计算与策略建议(优化整理版)

以下是几条关于 GaussDB(及其开源兄弟 openGauss) 备份与恢复功能的 官方文档链接,你可以直接点击查阅原文。

一、GaussDB 分布式架构概述

GaussDB 采用 Shared-Nothing 分布式架构,核心组件包括:

  • 协调节点(CN):负责 SQL 解析、计划生成与分布式调度,是系统“入口与大脑”。
  • 数据节点(DN):负责数据存储、查询执行,是系统核心的数据计算与存储层。
  • 全局事务管理器(GTM):提供全局事务 ID、快照管理(CSN)、序列控制,是分布式一致性的关键。

你的集群为 3DN × 3副本 + 3GTM + 3CN 架构,总共 12 个节点。

1.1 各组件职责

(1)CN(Coordinator Node)
  • 接收 SQL 请求并解析执行计划
  • 分发任务至所有 DN
  • 合并 DN 返回的数据结果
  • 所有 CN 共享元数据目录
(2)DN(Data Node)
  • 实际存储与执行数据
  • 支持 Paxos 三副本强一致
  • 单个 DN 的 300GB 数据 × 3 副本 = 实际存储 900GB
(3)GTM(Global Transaction Manager)
  • 分布式事务 ID 分配
  • 全局快照(CSN)
  • Sequence 统一维护
  • 支持优化版两阶段提交(2PC)

1.2 三副本强一致机制(基于 Paxos)

3 副本架构中:

  • 写入必须同时写入主副本 + 至少一个备副本(大多数派),满足 quorum
  • 公式: NR + NW > N(读副本数 + 写副本数 > 副本数)

因此:

  • 逻辑数据量:900GB(3×DN)
  • 物理占用:900GB × 3副本 = 2700GB

二、备份空间需求分析

2.1 备份类型与空间特征

类型特点空间占比恢复特点
全量备份完整拷贝所有数据原始数据 100%-150%可独立恢复
增量备份只保存变更数据变更量的 1–2×依赖全量
逻辑备份导出 SQL约 30%-50%恢复慢、结构可迁移

全量 > 增量 > 逻辑(恢复快慢顺序相反)

2.2 你的集群的空间计算

  • 逻辑数据总量:300GB × 3DN = 900GB
  • 估计全量备份压缩比(LZ4):0.5
  • 单份全量备份:900GB × 0.5 = 450GB
备份策略:每周全量 + 每日增量
  • 全量(4 周):450GB × 4 = 1800GB
  • 增量:1%变更率 × 7天:≈126GB
  • 总计 ≈ 1926GB

2.3 与系统免费备份空间对比

GaussDB 提供 = 逻辑数据存储大小 ≈ 900GB

→ 超出空间:1926 - 900 = 1026GB

2.4 备份空间敏感因素

  1. 数据压缩算法(LZ4 vs ZLIB)
  2. 全量备份频率
  3. 数据每日变更率
  4. 增量备份的差分方式(累积/级联)

三、备份原理与机制详解

GaussDB 物理备份由 gs_roach 完成,采用 Master-Agent 架构


3.1 分布式备份架构(Master-Agent)

Master 进程
  • 由“IP 最大的节点”自动当选
  • 接收所有 Agent 的 TCP 长连接
  • 管理备份的状态机
  • 只在 10 分钟窗口内监听 master port
Agent 进程
  • 在每个 CN/DN 节点启动
  • 执行实际备份动作:扫描、压缩、上传

3.2 全量备份流程

  1. CM/OM 下发备份任务
  2. Master 启动,Agent 连接
  3. 强制 checkpoint
  4. 全局 CSN 快照获取
  5. DN 执行数据文件 + WAL + 配置备份
  6. 文件压缩 + 传输
  7. 备份集元数据写入

3.3 增量备份原理(基于 CBM)

GaussDB 通过 CBM(Change Block Map) 精准记录被修改的页面。

CBM 文件路径:pg_cbm/

CBM 工作流:

  1. WAL 写入 →
  2. CBM writer 解析 WAL →
  3. 写入 CBM 文件 →
  4. 增量备份读取 CBM →
  5. 只备份被修改的 block(4KB)

两种模式:

  • 累积增量(基于同一个全量)
  • 差分增量(基于上一份备份)

3.4 分布式一致性保障

采用多层机制:

  1. CSN 全局快照(确保一致性读)
  2. MVCC 多版本并发控制
  3. 两阶段提交(2PC)优化版
  4. WAL 强制 fsync
  5. 备份前强制 checkpoint

3.5 恢复流程(Restore)

恢复步骤:

  1. 停库
  2. 恢复最新全量
  3. 按顺序恢复所有增量
  4. 重放 WAL
  5. 执行一致性检查
  6. 重建 DN 元数据:
gs_ctl rebuild -D /gaussdb/data/db1 -h <主节点IP> -p <端口>

支持 PITR(时间点恢复)


3.6 备份性能优化

技术策略:
  • 多进程并行--parallel-process
  • 多线程读取--reader-thread-count
  • 预读优化--prefetch-block
  • 限速--max-backup-io-speed
  • 断点续传--resume-backup
  • LZ4/ZLIB 压缩优化

四、备份策略建议(针对 3DN × 3副本架构)

4.1 推荐标准策略

建议
全量备份每周 1 次(周日)
增量备份每日 1 次
逻辑备份每周 1 次
保留规则全量 4 份 + 增量 7 份
运行时窗凌晨 02:00–06:00

4.2 存储空间优化

  1. 启用 LZ4 压缩
  2. 历史表冷热分级(冷数据迁移)
  3. 定期清理过期备份
  4. 分区表/分布式表分层存储

4.3 高可靠性建议

  1. 备份失败告警(SMS + 邮件)
  2. 每季度恢复演练
  3. 启用异地备份(OBS/对象存储)
  4. 建立备份监控(空间 + 成功率 + 用时)

4.4 特殊场景策略

场景建议
大规模导入数据前暂停增量、导入后立即全量
升级前强制全量备份
高峰期下调备份并发数
大表 truncate/DDL 频繁时期提高增量频率

五、总结(精炼结论)

  • 3DN × 3副本、每DN 300GB 的架构下,整个集群的逻辑数据为 900GB。
  • 采用“每周全量 + 每日增量”的标准策略,总备份空间需求约 1926GB
  • 系统提供免费备份空间约 900GB,仍会超出 约 1TB
  • GaussDB 备份基于 gs_roach Master-Agent 架构 + CBM 增量机制 + CSN 快照一致性 设计,备份性能强、可恢复性高。
  • 建议结合业务特点,定期调整策略并做恢复演练。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值