目录标题
GaussDB 分布式备份原理、备份空间计算与策略建议(优化整理版)
以下是几条关于 GaussDB(及其开源兄弟 openGauss) 备份与恢复功能的 官方文档链接,你可以直接点击查阅原文。
- 官方文档中心(华为云) — GaussDB 文档总入口:
GaussDB 文档中心 (华为文档) - 备份恢复控制函数(华为云知识库) — 介绍在线备份、恢复相关函数:
备份恢复控制函数 (华为云支持中心) - openGauss 官方文档(备份与恢复章节) — 虽然是 openGauss,但其备份恢复机制可作为 GaussDB 的参考:
备份与恢复 — openGauss 3.1.1 (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 备份空间敏感因素
- 数据压缩算法(LZ4 vs ZLIB)
- 全量备份频率
- 数据每日变更率
- 增量备份的差分方式(累积/级联)
三、备份原理与机制详解
GaussDB 物理备份由 gs_roach 完成,采用 Master-Agent 架构。
3.1 分布式备份架构(Master-Agent)
Master 进程
- 由“IP 最大的节点”自动当选
- 接收所有 Agent 的 TCP 长连接
- 管理备份的状态机
- 只在 10 分钟窗口内监听 master port
Agent 进程
- 在每个 CN/DN 节点启动
- 执行实际备份动作:扫描、压缩、上传
3.2 全量备份流程
- CM/OM 下发备份任务
- Master 启动,Agent 连接
- 强制 checkpoint
- 全局 CSN 快照获取
- DN 执行数据文件 + WAL + 配置备份
- 文件压缩 + 传输
- 备份集元数据写入
3.3 增量备份原理(基于 CBM)
GaussDB 通过 CBM(Change Block Map) 精准记录被修改的页面。
CBM 文件路径:pg_cbm/
CBM 工作流:
- WAL 写入 →
- CBM writer 解析 WAL →
- 写入 CBM 文件 →
- 增量备份读取 CBM →
- 只备份被修改的 block(4KB)
两种模式:
- 累积增量(基于同一个全量)
- 差分增量(基于上一份备份)
3.4 分布式一致性保障
采用多层机制:
- CSN 全局快照(确保一致性读)
- MVCC 多版本并发控制
- 两阶段提交(2PC)优化版
- WAL 强制 fsync
- 备份前强制 checkpoint
3.5 恢复流程(Restore)
恢复步骤:
- 停库
- 恢复最新全量
- 按顺序恢复所有增量
- 重放 WAL
- 执行一致性检查
- 重建 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 存储空间优化
- 启用 LZ4 压缩
- 历史表冷热分级(冷数据迁移)
- 定期清理过期备份
- 分区表/分布式表分层存储
4.3 高可靠性建议
- 备份失败告警(SMS + 邮件)
- 每季度恢复演练
- 启用异地备份(OBS/对象存储)
- 建立备份监控(空间 + 成功率 + 用时)
4.4 特殊场景策略
| 场景 | 建议 |
|---|---|
| 大规模导入数据前 | 暂停增量、导入后立即全量 |
| 升级前 | 强制全量备份 |
| 高峰期 | 下调备份并发数 |
| 大表 truncate/DDL 频繁时期 | 提高增量频率 |
五、总结(精炼结论)
- 在 3DN × 3副本、每DN 300GB 的架构下,整个集群的逻辑数据为 900GB。
- 采用“每周全量 + 每日增量”的标准策略,总备份空间需求约 1926GB。
- 系统提供免费备份空间约 900GB,仍会超出 约 1TB。
- GaussDB 备份基于 gs_roach Master-Agent 架构 + CBM 增量机制 + CSN 快照一致性 设计,备份性能强、可恢复性高。
- 建议结合业务特点,定期调整策略并做恢复演练。
1140

被折叠的 条评论
为什么被折叠?



