增量备份命令为:xtrabackup --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/full --user=backup_user --password=xxx;第二次增量必须基于前一次增量目录,即--incremental-basedir=/backup/inc1,严格链式递进,不可跳过中间备份。

必须用 xtrabackup 8.0 版本,且增量备份只能按链式顺序合并,跳过中间备份会导致恢复失败。
增量备份命令怎么写(MySQL 8.0)
增量不是独立生成的,它依赖上一次成功备份的 LSN(日志序列号),所以 --incremental-basedir 必须指向那个目录:
- 全量备份后,先确认
/backup/full下有xtrabackup_checkpoints文件,里面包含to_lsn值 - 第一次增量:用全量目录作 base
xtrabackup --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/full --user=backup_user --password=xxx - 第二次增量:必须用
/backup/inc1作 base,不能跳过直接用/backup/fullxtrabackup --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1 --user=backup_user --password=xxx - 所有备份建议统一使用配置文件(如
/etc/my.cnf或/root/.my.cnf的[client]段),避免命令行明文密码
合并增量时为什么加 --apply-log-only
这个参数控制是否“停止在一致性点”——它是增量合并的关键开关:
- 全量准备阶段:
xtrabackup --prepare --target-dir=/backup/full→ 默认会回滚未提交事务,使全量可直接启动 - 合并第一次增量:
xtrabackup --prepare --apply-log-only --target-dir=/backup/full --incremental-dir=/backup/inc1→ 只重放增量日志、不回滚,为下一次合并留出空间 - 合并最后一次增量:
xtrabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/inc2→ 不加--apply-log-only,最终完成回滚与前滚,得到完整一致状态 - 漏掉
--apply-log-only或加错位置,会导致LSN mismatch错误,xtrabackup_checkpoints里的to_lsn对不上
合并失败常见报错及定位方法
实际执行中卡在 --prepare 阶段,多数是路径或 LSN 断链,不是权限或磁盘问题:
-
innodb: Error: log file ./ib_logfile0 is of different size:说明目标目录被手动清空或覆盖过,不是干净的全量备份起点 -
Failed to find valid checkpoint in incremental backup:/backup/inc1/xtrabackup_checkpoints里from_lsn不等于/backup/full/xtrabackup_checkpoints的to_lsn - 检查每层
xtrabackup_checkpoints的三个字段:backup_type(应为full-prepared/incremental)、from_lsn、to_lsn,必须严格递增衔接 - 不要用
rsync或cp复制备份目录,LSN 元数据不会自动更新;必须用xtrabackup --backup重新生成
生产环境必须绕开的坑
脚本自动化时最容易忽略的细节,往往导致恢复演练失败:
- MySQL 8.0 的
datadir路径必须和备份时完全一致,否则--copy-back会报failed to open file—— 尤其宝塔等面板默认把数据放在/www/server/data,而非/var/lib/mysql - 恢复前必须停掉 MySQL:
systemctl stop mysqld,且确保ps aux | grep mysql无残留进程,否则--copy-back会静默失败 -
--parallel和--compress-threads在合并阶段无效,只在--backup阶段起作用;别在--prepare里加它们 - 增量备份目录名不能含中文、空格或特殊符号,
xtrabackup会解析失败(例如/backup/增量1不行,必须是/backup/inc1)
LSN 链断裂比磁盘满更难排查,每次新增备份层级后,务必用 cat xtrabackup_checkpoints 手动核对三处数值是否首尾相接。











