首页/数据/备份与容灾速查/XtraBackup 增量备份与合并
数据库与云备份56 条

XtraBackup 增量备份与合并

基于 LSN 的增量物理备份:只拷贝上次备份以来的变化页,配合 --apply-log-only 按顺序合并,压缩备份窗口与空间占用。

备份与容灾速查数据更新于 2026-10-13

XtraBackup 增量备份是什么

增量备份只拷贝上次备份以来发生变化的数据页,依据是每页记录的 LSN(日志序列号)。恢复时把增量按顺序合并进全量副本:全量和中间增量都用 --apply-log-only 保留尚未完成的状态,只有最后一次合并不加该参数。链条越长合并步骤越多,实践中会定期重做全量重开链条。

基本信息

适用平台MySQL 8.0 / Percona Server,配合 XtraBackup 8.x
判定依据LSN:页面上的日志序列号,与上次备份的检查点比对
合并规则全量与中间增量用 --apply-log-only,仅最后一步不带该参数
基础目录--incremental-basedir 必须指向链条中紧邻的上一次备份
周期建议按备份窗口与合并耗时定,通常每周重做一次全量

典型使用场景

  • 缩短备份窗口:日增量只传变化页,配合周全量控制总体时间
  • 降低存储占用:增量体积远小于全量,适合多副本保留
  • 频繁备份点:RPO 要求高时用短间隔增量,减少单次数据量
  • 大库日常运维:全量放在周末,工作日只跑增量避免影响业务
  • 灾备链管理:全量加增量形成可追溯的恢复链,配合目录登记

增量链的备份与合并顺序

增量链的备份与合并顺序
# 1) 全量备份完成后 prepare,并保留 redo 供后续合并
xtrabackup --backup --target-dir=/backup/xtra/full
xtrabackup --prepare --apply-log-only --target-dir=/backup/xtra/full
# 2) 基于全量做增量,basedir 指向紧邻的上一次备份
xtrabackup --backup --target-dir=/backup/xtra/inc1 --incremental-basedir=/backup/xtra/full
# 3) 合并增量:中间步骤加 --apply-log-only,最后一次不加
xtrabackup --prepare --apply-log-only --target-dir=/backup/xtra/full --incremental-dir=/backup/xtra/inc1
# 4) 合并完成后按普通全量执行 copy-back
xtrabackup --copy-back --target-dir=/backup/xtra/full

链条管理要素

要素正确做法做错后果
basedir 指向紧邻的上一次备份目录跳层备份 LSN 对不上,合并报错或数据缺失
apply-log-only全量与中间增量都加,最后一步不加顺序错误会污染全量副本,只能重做
链条长度按周期重做全量重开链条链条过长导致合并耗时长、单点风险集中
目录登记记录每份增量所属的链条与位置恢复时无法判断该取哪些增量
增量链越长,合并步骤越多、越容易出错;按周期(如每周)重做全量并重开链条,是控制复杂度的常规做法。
合并会修改全量备份目录:一旦中间步骤写错,受影响的是整条链。合并前后都要保留原始备份或在独立副本上操作。

易错点

  • 合并顺序错误(如全量 prepare 时漏掉 --apply-log-only):污染全量副本,只能整条链重做
  • incremental-basedir 指向非紧邻的备份:LSN 对不上,合并报错或静默丢数据
  • 链条过长而不重做全量:合并步骤多、耗时长,出错概率随之上升
  • 增量未登记到备份目录:恢复时无法判断该取哪些增量,实际只能靠最近全量

数据来源与参考

  • Percona XtraBackup 文档(Incremental backups)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌