4. 备份策略配置:全量备份、增量备份、日志备份的策略与周期设置

在变更窗口场景下,备份策略的核心目标是在有限的操作时间内,既能保障数据可恢复性,又不因备份任务本身拖垮系统性能或延长窗口。全量备份、增量备份与日志备份三者的组合,决定了恢复点目标(RPO)与恢复时间目标(RTO)的平衡点。

4.1 三种备份类型定义与适用场景

备份类型 数据范围 恢复依赖 变更窗口适用性
全量备份 整个数据库或指定表空间 独立恢复,无需其他备份 适合窗口内低频执行(如每周一次),耗时最长
增量备份 自上次全量或增量以来变更的数据块 需依赖最近一次全量+所有后续增量 适合窗口内高频执行(如每日一次),体积小、速度快
日志备份 事务日志文件(如 MySQL binlog、SQL Server tlog) 需依赖全量+增量+连续日志链 适合窗口内或窗口外持续执行,实现秒级 RPO

关键原则:变更窗口内优先执行增量备份与日志备份;全量备份尽量安排在窗口外或窗口起始阶段,避免阻塞业务流量。

4.2 典型备份周期策略

以下策略以周为周期单位,适用于大多数 OLTP 生产系统。实际周期需根据数据变更量、窗口时长、存储容量调整。

  • 全量备份:每周 1 次,建议安排在变更窗口开启前(如周日凌晨 02:00),或窗口内业务低峰期。
  • 增量备份:每日 1 次,安排在窗口内或窗口外固定时间点(如每日 22:00),与全量备份错开。
  • 日志备份:每 5~15 分钟 1 次,或根据日志生成速率动态调整,确保 RPO ≤ 15 分钟。

推荐组合:全量(周日)+ 增量(周一至周六)+ 日志(每 10 分钟)。该组合在恢复时只需加载 1 个全量 + 最多 6 个增量 + 少量日志,恢复路径清晰。

4.3 备份策略配置示例(MySQL + XtraBackup + binlog)

# 全量备份脚本(每周日 02:00)
0 2 * * 0 /usr/bin/xtrabackup --backup --target-dir=/backup/full/$(date +\%Y\%m\%d) --user=backup --password=xxx

# 增量备份脚本(周一至周六 22:00)
0 22 * * 1-6 /usr/bin/xtrabackup --backup --target-dir=/backup/inc/$(date +\%Y\%m\%d) \
  --incremental-basedir=/backup/full/$(date +\%Y\%m\%d -d "last sunday") --user=backup --password=xxx

# 日志备份脚本(每 10 分钟)
*/10 * * * * mysql -u backup -p'xxx' -e "FLUSH BINARY LOGS;" && \
  cp /var/lib/mysql/binlog.* /backup/binlog/$(date +\%Y\%m\%d)/

注意:增量备份的 --incremental-basedir 必须指向最近一次全量或增量备份目录,否则恢复时无法构建连续数据块链。建议使用脚本自动计算基准目录。

4.4 备份策略与恢复路径关系图

下图展示了一个完整周周期内,全量、增量与日志备份的时序关系,以及恢复时所需的数据链。

备份策略时序与恢复依赖链 周日 全量 周一 增量 周二 增量 周三 增量 周四 增量 周五 增量 日志备份(每 10 分钟) 恢复时需加载:全量 + 所有增量 + 日志 恢复点可精确到日志备份时间点(RPO ≤ 10 分钟) 周日 02:00 周一 22:00 周二 22:00 周三 22:00 周四 22:00 周五 22:00

4.5 备份策略配置检查清单

检查项 要求 验证方法
全量备份周期 ≤ 7 天 查看备份任务历史记录
增量备份周期 ≤ 24 小时 检查增量备份文件时间戳
日志备份间隔 ≤ 15 分钟 统计日志备份文件生成频率
备份存储冗余 至少 2 份副本(本地 + 远程) 检查备份目录与远程同步状态
恢复演练 每季度至少 1 次全流程恢复测试 执行恢复脚本并验证数据一致性
备份过期清理 保留最近 30 天全量 + 增量,日志保留 7 天 检查自动清理脚本执行日志

4.6 变更窗口内的备份执行策略

变更窗口通常持续 2~4 小时,备份任务必须与变更操作并行且互不干扰。推荐以下执行顺序:

  1. 窗口开启前 30 分钟:执行一次日志备份,确保当前日志已归档。
  2. 窗口开启时:如果当天有全量计划,先启动全量备份(后台运行,不阻塞变更);否则跳过。
  3. 变更操作期间:保持日志备份按原周期执行,不中断。
  4. 窗口关闭前 15 分钟:执行一次增量备份(如果当天有增量计划),记录变更后的数据状态。
  5. 窗口关闭后:立即执行一次日志备份,形成完整的恢复链终点。

最佳实践:在变更窗口内,将增量备份与日志备份的优先级设为高于全量备份。如果全量备份未能在窗口内完成,允许其跨窗口继续运行,但需监控 IO 压力,必要时手动暂停。

4.7 备份策略常见问题与规避

  • 全量备份与变更操作同时执行导致锁争用:使用支持热备的工具(如 XtraBackup、pg_basebackup),或设置备份优先级低于业务线程。
  • 增量备份链断裂:每次增量备份后记录基准目录,恢复时按时间顺序拼接,避免中间缺失。
  • 日志备份文件堆积:设置自动清理策略,保留最近 N 天的日志,超出部分自动删除或归档至冷存储。
  • 备份窗口与变更窗口重叠导致 IO 飙升:限制备份任务的 IO 带宽(如 XtraBackup 的 --throttle 参数),或调整备份并发数。