技术文档库
文件管理
技术文档

GoldenDB 备份管理手册

17 章节 3 表格 docx 自动转换

备份管理的完整操作流程、参数说明与最佳实践,包含详细的命令示例和配置参数。

AIO 备份平台 GoldenDB 备份管理手册(详细版)

——平台架构 · XtraBackup集成 · Agent部署 · 数据管道 · 恢复实战

基于 AIO v5.5.2 + Percona XtraBackup 8.0.25-17 适用对象:DBA / 运维工程师 / 备份管理员 编制日期:2026年6月

1. 目 录

第一章 AIO 备份平台是什么

第二章 平台整体架构(含架构图)

第三章 GoldenDB 备份类型与策略

第四章 全量备份流程(含流程图)

第五章 XtraBackup 在 AIO 中的集成(含命令详解图)

第六章 增量备份流程(含流程图)

第七章 数据传输管道详解(含管道图)

第八章 备份存储:ZFS 卷管理

第九章 GoldenDB 元数据备份

第十章 RDB Agent 部署与权限(含架构图)

第十一章 恢复与挂载流程(含流程图)

第十二章 GTM 日志备份

第十三章 配置与环境变量

第十四章 常见问题与排查

附录 A 关键配置参数速查

附录 B 备份命令完整参考

2. 第一章 AIO 备份平台是什么

2.1 1.1 平台定位

AIO(All-In-One)是一套数据库与文件系统的备份、恢复、挂载、清理、巡检、编排平台。它不是"单纯的 Airflow 项目"或"单纯的 Python Web 项目",而是一个完整的企业级数据保护解决方案。

核心能力:

• 物理热备份:基于 Percona XtraBackup,不停库、不锁表

• 增量备份:基于 LSN 追踪变化页面,节省存储空间

• 流式传输:数据在源端本地压缩,通过 QoS 通道回传

• 快照保护:基于 ZFS 快照,秒级创建恢复点

• 元数据一致性:备份 GoldenDB 集群元数据,确保恢复后分片一致

• 多数据库支持:MySQL/GoldenDB/Oracle/PostgreSQL/GaussDB/TDSQL/OceanBase 等

2.2 1.2 支持的数据库类型

AIO 平台支持多种数据库的备份恢复,GoldenDB 是其中之一。已支持的类型包括:MySQL、GoldenDB、Oracle、PostgreSQL/GaussDB、DM(达梦)、TDSQL、PolarDB、OceanBase、AntDB、TeleDB、K8s MySQL、文件/归档等。

3. 第二章 平台整体架构

3.1 2.1 架构全景图

3.2 2.2 三层架构

AIO 平台由三层组成:

CDM 控制面(10.7.16.216:9008):负责 API、模型、元数据、任务记录、初始化、业务服务。前端是 Vue.js SPA,后端是 Flask + uWSGI + gevent。

Airflow 编排面(10.7.16.216:9080):负责 DAG 编排、调度、Worker 执行、任务日志。使用 CeleryExecutor 模式,支持分布式 Worker。

共享执行底座:负责 operator、远程执行、shell 封装、回调、数据库类型适配。包括 aio_tasks、aio_public_module、aio_lib 三个共享库。

3.3 2.3 关键配置文件

• cfg/aio.env:整套平台的输入配置源,包含数据库连接、Redis、端口等

• cfg/cdm.runtime.env:CDM 运行时环境(由 init.cdm.sh 生成)

• cfg/airflow.runtime.env:Airflow 运行时环境(由 init.airflow.sh 生成)

• cfg/airflow.cfg:Airflow 核心配置(CeleryExecutor)

• /etc/profile.d/cdm.runtime.sh:CDM shell 环境
• /etc/profile.d/airflow.runtime.sh:Airflow shell 环境

4. 第三章 GoldenDB 备份类型与策略

4.1 3.1 支持的备份类型

备份类型DAG名称说明频率建议
全量备份tiny_goldendb (full)基于XtraBackup完整拷贝每日/每周
增量备份tiny_goldendb (inc)基于LSN的变化页面拷贝每小时
GTM日志备份goldendb_gtmlog_backup备份GTM活动事务数据每小时
元数据备份goldendb_meta_backup备份集群元数据(.dat/.idx)每次全量后
日志备份goldendb_log_backup (via tiny)备份Binlog用于PITR持续

4.2 3.2 备份策略

AIO 平台支持灵活的备份策略配置,通过 CDM Web 界面或 API 设置:

• 全量备份周期:每日/每周/自定义

• 增量备份间隔:1小时/4小时/自定义

• 保留策略:按天数或按份数

• 存储位置:ZFS 卷(本地)/ S3(对象存储)

5. 第四章 全量备份流程

5.1 4.1 流程全景图

5.2 4.2 流程详解

Step 1 - CDM 接收备份请求:用户通过 Web 界面或 API 发起备份任务,CDM 校验参数后创建任务记录。

Step 2 - 触发 Airflow DAG:CDM 通过 SAL(Service Abstraction Layer)触发 Airflow DAG(tiny_goldendb),传入备份配置参数。

Step 3 - 环境检查:Worker 检查本地 XtraBackup 版本、RPC 服务、QoS 工具、lz4 是否可用;同时检查远程 Agent 连接。

Step 4 - 创建 ZFS 卷:根据源端数据大小,在 ZFS 存储池中创建或扩容卷(zvol)。

Step 5 - 下载 my.cnf:通过 RPC 从 GoldenDB 源端下载 MySQL 配置文件。

Step 6 - 获取数据大小:连接 MySQL 执行 SHOW VARIABLES 获取 datadir 和 undo 目录,通过 du -s 计算大小。

Step 7 - 启动 QoS 传输服务:在 Worker 端启动 QoS 服务,监听随机端口(12000-13000),准备接收数据。

Step 8 - 执行 XtraBackup:通过 RPC 在 GoldenDB 源端执行备份命令(详见第五章)。

Step 9 - 数据写入 ZFS 卷:备份数据通过 QoS 通道回传,解压后写入 ZFS 卷。

Step 10 - 创建 ZFS 快照:sync 后创建 ZFS 快照,确保数据一致性。

Step 11 - 备份元数据:在 GoldenDB Manager 节点调用 backup_metadata.py 导出集群元数据。

6. 第五章 XtraBackup 在 AIO 中的集成

6.1 5.1 命令结构详解

6.2 5.2 全量备份命令

AIO 在 GoldenDB 源端通过 RPC 执行的实际 XtraBackup 命令:

xtrabackup \
  --defaults-file=<my.cnf路径> \
  --host='<GoldenDB节点IP>' \
  --user='<数据库用户名>' \
  --port=<数据库端口> \
  --password='<密码>' \
  --datadir=<数据目录> \
  --parallel=<并行线程数> \
  --slave_info \
  --backup \
  --no-server-version-check \
  --stream=xbstream \
  | lz4 -B4 \
  | qos --host=<Worker_IP> --port=<QoS端口>

参数说明:

• --defaults-file:GoldenDB DN 实例的 my.cnf 配置文件路径
• --slave_info:记录从库 Binlog 位置,用于搭建从库
• --stream=xbstream:流式输出,不写本地文件
• --no-server-version-check:跳过 XtraBackup 版本与 MySQL 版本检查

• lz4 -B4:LZ4 压缩(块大小 4KB),压缩比 2:1~3:1

• qos:QoS 传输工具,将压缩数据通过网络传到 Worker 端

6.3 5.3 增量备份命令

xtrabackup \
  --defaults-file=<my.cnf路径> \
  --host='<GoldenDB节点IP>' \
  --incremental \
  --incremental-lsn=<上次全量备份的to_lsn> \
  --slave_info \
  --user='<用户名>' --port=<端口> --password='<密码>' \
  --datadir=<数据目录> \
  --parallel=<N> \
  --backup --no-server-version-check --stream=xbstream \
  | lz4 -B4 \
  | qos --host=<Worker_IP> --port=<QoS端口>
增量备份与全量的区别:多了 --incremental 和 --incremental-lsn 参数。LSN 从全量备份的 xtrabackup_checkpoints 文件中读取。

6.4 5.4 Worker 端接收命令

# Worker 端 QoS 服务接收命令
qos --server --port=<端口> | lz4 -d -B4 | xbstream -x -C '<备份目录>'

# 备份目录结构
/volmountpoint/aiopool/<volume_name>/
├── full/          # 全量备份
├── incr/          # 增量备份
└── metadata/      # 元数据

7. 第六章 增量备份流程

7.1 6.1 流程图

7.2 6.2 LSN 链条管理

增量备份的核心是 LSN(Log Sequence Number)链条:

# 读取全量备份的 to_lsn
cat /volmountpoint/aiopool/<vol>/full/xtrabackup_checkpoints
# 输出: to_lsn = 15188961605

# 增量备份使用该 LSN
xtrabackup --incremental --incremental-lsn=15188961605 ...

# 增量备份的 xtrabackup_checkpoints:
# from_lsn = 15188961605  (等于全量的 to_lsn)
# to_lsn = 15188962100

⚠️ 关键:如果增量备份的 from_lsn 不等于上次备份的 to_lsn,说明增量链断裂。

7.3 6.3 增量 Prepare

# 先 Prepare 全量(加 --apply-log-only)
xtrabackup --prepare --apply-log-only --target-dir=<full_dir>

# 再 Apply 增量(加 --apply-log-only)
xtrabackup --prepare --apply-log-only \
  --target-dir=<full_dir> \
  --incremental-basedir=<incr_dir>

# 最后一步(不加 --apply-log-only)
xtrabackup --prepare \
  --target-dir=<full_dir> \
  --incremental-basedir=<incr_dir>

8. 第七章 数据传输管道详解

8.1 7.1 管道架构图

8.2 7.2 传输模式对比

NC (旧)nc -l -p PORT | lz4 -d | xbstream -x简单不稳定,端口冲突多
QoS (新,当前使用)qos --server --port PORT | lz4 -d | xbstream -x限速、端口管理、进程守护需要额外工具

8.3 7.3 QoS 端口管理

QoS 使用端口范围 12000-13000,通过文件锁管理端口分配:

• 使用端口记录在 used_port.json 中

• 通过文件锁(fcntl)防止并发冲突

• 备份完成后自动释放端口

8.4 7.4 数据流向总结

GoldenDB 源端 → XtraBackup (本地读取) → lz4 压缩 → QoS 传输 → Worker 接收 → xbstream 解包 → 写入 ZFS 卷

关键点:数据在源端本地读取、本地压缩,不经过数据库网络协议,对业务影响最小。

9. 第八章 备份存储:ZFS 卷管理

9.1 8.1 ZFS 存储池

AIO 使用 ZFS 作为备份存储引擎,存储池名称为 aiopool,挂载点为 /volmountpoint/aiopool/

ZFS 的核心优势:

• 快照(Snapshot):秒级创建一致性恢复点,几乎不占额外空间

• 压缩(Compression):数据自动压缩,节省磁盘空间

• 校验(Checksum):自动检测数据损坏

• 卷管理(ZVol):创建固定大小的块设备,用于存储备份数据

9.2 8.2 卷创建与快照

# 创建 ZFS 卷
zfs create -V <大小>G aiopool/<volume_name>

# 创建快照(备份完成后执行)
sync && zfs snapshot aiopool/<volume_name>@<execution_batch>

# 查看快照
zfs list -t snapshot aiopool/<volume_name>

# 回滚快照(恢复时)
zfs rollback aiopool/<volume_name>@<snapshot_name>

10. 第九章 GoldenDB 元数据备份

10.1 9.1 为什么需要备份元数据

GoldenDB 是分布式数据库,除了数据节点(DN)的数据外,还有集群元数据(拓扑、分片规则、GTM 信息等)存储在 Manager 节点。只备份 DN 数据而忽略元数据,恢复后集群无法正确识别分片关系。

10.2 9.2 元数据备份流程

AIO 通过以下步骤备份 GoldenDB 元数据:

1. SSH 到 Manager 节点(10.7.16.64)

2. 切换到 Manager 用户(如 zxmanager)

3. 调用 GoldenDB 官方脚本 backup_metadata.py

4. 下载生成的 .dat/.idx 文件到备份卷

5. 打包压缩存储

# 元数据备份命令(AIO 自动执行)
sudo su - <manager_user> -c \
  'python ~/bin/backup_metadata.py --cluster_id=<ID> --backup_path=<路径>'

# 生成的文件
DBPasswdInfos.dat      # 数据库密码信息
DictionaryInfos.dat    # 数据字典
DictionaryInfos.idx    # 数据字典索引
TableIndexInfos.dat    # 表索引信息
TableIndexInfos.idx    # 表索引索引

11. 第十章 RDB Agent 部署与权限

11.1 10.1 Agent 架构图

11.2 10.2 Agent 是什么

备份一体机对 GoldenDB 的保护采用 Agent(代理)模式。源端数据库主机不直接暴露数据库端口给备份系统,而是由 Agent 在源端提供一个受控的执行与传输通道。

Agent 的核心组件:

• RPC 服务:监听指定端口,接收备份机下发的指令

• XtraBackup 8.0.25-17:物理热备份工具

• xbstream / lz4 / qos:数据打包、压缩、传输工具

• 元数据导出脚本:调用 GoldenDB 官方 backup_metadata.py

• 检测脚本:check_goldendb.sh(检测实例状态、版本、binlog 等)

11.3 10.3 安装步骤

# 1. 上传安装包到 GoldenDB 源端
tar -zxf rdb_agent_5.5.2.0_bc.x86_64.tar.gz
cd rdb_agent_5.5.2.0_bc.x86_64

# 2. 执行安装
./install

# 3. 验证安装
./verify

11.4 10.4 所需权限

数据库权限(XtraBackup 标准要求):

GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, BACKUP_ADMIN, PROCESS
ON *.* TO 'xtrabackup'@'localhost';
系统权限(sudo 免密):
• xtrabackup:物理备份

• su - <db_user>:实例检测

• du / sh:目录探测

• su - <mgr_user> -c backup_metadata.py:元数据导出

12. 第十一章 恢复与挂载流程

12.1 11.1 恢复流程图

12.2 11.2 恢复类型

AIO 支持两种恢复方式:

• 完整恢复(Physical Restore):将备份数据恢复到新的 GoldenDB 实例

• 挂载恢复(Mount):将备份卷挂载为只读,用于数据查询和验证

12.3 11.3 恢复关键步骤

1. 选择备份快照:从 CDM 界面选择要恢复的备份点

2. 创建恢复卷:基于 ZFS 快照创建可写卷

3. Prepare 备份数据:xtrabackup --prepare 应用 Redo Log
4. 拷贝数据:xtrabackup --copy-back 恢复到 MySQL 数据目录

5. 恢复元数据:调用 restore_metadata.py 恢复集群拓扑

6. 启动实例:启动 GoldenDB DN 实例

7. 验证数据:检查数据完整性和一致性

13. 第十二章 GTM 日志备份

13.1 12.1 GTM 日志是什么

GTM(Global Transaction Manager)是 GoldenDB 的全局事务管理器。GTM 日志记录了所有全局事务的活动状态,包括 GTID 分配、事务提交等信息。备份 GTM 日志可以用于:

• 恢复到指定的全局事务时间点

• 排查分布式事务问题

• 搭建新的 GTM 备节点

13.2 12.2 备份流程

GTM 日志备份的 Airflow DAG 为 goldendb_gtmlog_backup,流程为:

checkRemoteServer → get_active_tran_filename → get_data_total_size → worker_prepare → create_dir → get_active_tran_data → callback

关键步骤:

1. 检查远程服务器连接

2. 获取当前活动事务文件名

3. 计算数据大小

4. 创建存储目录

5. 下载活动事务数据

6. 完成回调

14. 第十三章 配置与环境变量

14.1 13.1 aio.env 关键配置

# /opt/aio/cfg/aio.env
AIO_HOME=/opt/aio
AIO_DB_HOSTNAME=10.7.16.216       # CDM 数据库
AIO_WEBSRV_HOST=10.7.16.216       # CDM Web 服务
AIO_WEBSRV_PORT=9008
AIO_REDIS_HOST=10.7.16.216        # Redis
AIO_REDIS_PORT=6379
AIRFLOW_WEBSRV_HOST=10.7.16.216   # Airflow Web
AIRFLOW_WEBSRV_PORT=9080
AIO_ROLE_MODE=non-separate        # CDM与Worker同机部署

14.2 13.2 备份任务参数

每次备份任务通过 Airflow dag_run.conf 传入参数,GoldenDB 相关参数包括:

• node_ipaddr:GoldenDB 节点 IP

• node_db_username / node_db_passwd:数据库用户名密码

• node_db_port:数据库端口

• node_mysql_cnf_path:my.cnf 配置文件路径

• data_dir:数据目录路径

• xtrabackup:XtraBackup 版本号(如 8.0-linux-x86_64)

• xtrabackup_parallel:并行线程数

• cluster_id:GoldenDB 集群 ID

• node_id:节点 ID

• connect_type:连接方式(agent 或 ssh)

14.3 13.3 服务管理

# 查看服务状态
python3 /opt/aio/airflow/scripts/rdb.py status

# 启动/停止服务
python3 /opt/aio/airflow/scripts/rdb.py start <service>
python3 /opt/aio/airflow/scripts/rdb.py stop <service>

# 常见服务名
web, scheduler, default_worker, worker, cdm, apscheduler

15. 第十四章 常见问题与排查

15.1 14.1 Agent 连接失败

原因:RPC 服务未启动或端口不通。

排查:检查 Agent 服务状态、防火墙规则、端口占用。

15.2 14.2 XtraBackup 版本不匹配

原因:Worker 端和源端的 XtraBackup 版本不一致。

排查:执行 xtrabackup --version 检查两端版本。

15.3 14.3 ZFS 卷空间不足

原因:存储池可用空间低于 20%。

排查:执行 zpool status aiopool 检查空间。AIO 会在备份前检查,空间不足会自动报错。

15.4 14.4 增量备份 LSN 链断裂

原因:全量备份被清理,但增量备份仍在。

排查:检查各备份的 xtrabackup_checkpoints 文件中的 LSN 范围。

15.5 14.5 元数据备份失败

原因:Manager 用户权限不足或 backup_metadata.py 脚本不存在。

排查:SSH 到 Manager 节点,手动执行 backup_metadata.py 测试。

15.6 14.6 QoS 端口被占用

原因:之前的备份进程未正常退出,端口未释放。

排查:检查 used_port.json,清理残留端口记录。

16. 附录 A 关键配置参数速查

AIO_WEBSRV_PORT9008CDM Web 服务端口
AIRFLOW_WEBSRV_PORT9080Airflow Web 服务端口
POOL_NAMEaiopoolZFS 存储池名称
VOLUME_MOUNT_POINT/volmountpointZFS 卷挂载点
PORT_RANGE_START12000QoS 端口范围起始
PORT_RANGE_END13001QoS 端口范围结束
VOLUME_DEFAULT_COMPRESS_RATIO2.0ZFS 卷默认压缩比
AIO_ROLE_MODEnon-separateCDM与Worker部署模式
snapshot_send_compresstrue快照传输是否压缩
snapshot_send_moderpc快照传输模式

17. 附录 B 备份命令完整参考

以下是 AIO 中与 GoldenDB 备份相关的所有关键命令:

# === 全量备份 ===
xtrabackup --defaults-file=<cnf> --host=<IP> --user=<USER> \
  --port=<PORT> --password=<PWD> --datadir=<DATADIR> \
  --parallel=<N> --slave_info --backup --no-server-version-check \
  --stream=xbstream | lz4 -B4 | qos --host=<DN_IP> --port=<PORT>

# === 增量备份 ===
xtrabackup --defaults-file=<cnf> --host=<IP> --user=<USER> \
  --port=<PORT> --password=<PWD> --datadir=<DATADIR> \
  --incremental --incremental-lsn=<LSN> --slave_info \
  --parallel=<N> --backup --no-server-version-check --stream=xbstream \
  | lz4 -B4 | qos --host=<DN_IP> --port=<PORT>

# === Worker 端接收 ===
qos --server --port=<PORT> | lz4 -d -B4 | xbstream -x -C '<DIR>'

# === Prepare 全量 ===
xtrabackup --prepare --target-dir=<FULL_DIR>

# === Prepare 增量(中间步骤) ===
xtrabackup --prepare --apply-log-only --target-dir=<FULL_DIR> \
  --incremental-basedir=<INCR_DIR>

# === Prepare 增量(最终步骤) ===
xtrabackup --prepare --target-dir=<FULL_DIR> \
  --incremental-basedir=<INCR_DIR>

# === 恢复 ===
xtrabackup --copy-back --target-dir=<FULL_DIR> --datadir=<DATADIR>

# === 元数据备份 ===
python ~/bin/backup_metadata.py --cluster_id=<ID> --backup_path=<PATH>

# === ZFS 快照 ===
sync && zfs snapshot aiopool/<VOL>@<BATCH>
本文档由系统自动从 docx 文件转换生成 · 如有排版问题请访问 文件管理 下载原始文档