必须加--target-dir且目录须为空或不存在;增量备份严格基于上一次成功备份的根目录(含xtrabackup_checkpoints),不可跳过或误指;恢复时须按链式顺序--apply-log--redo-only合并,最后去掉--redo-only完成最终一致性。

必须加 --target-dir,且目录不能存在或必须为空;增量必须严格基于上一次成功备份的根目录,不是“任意一个备份目录”。
全量备份命令里最常漏掉的关键参数
直接运行 xtrabackup --backup 会报错,因为缺少 --target-dir。它不是可选参数,是强制要求:
-
--target-dir=/backup/full_20260929必须显式指定,路径不能已存在(xtrabackup 不覆盖) - 若用非 root 用户执行,
user和password必须写在/etc/my.cnf或/root/.my.cnf的[client]段,否则报Access denied for user ''@'localhost' - 不要在命令行里写
-p明文密码,有安全审计风险 - 生产环境建议加
--throttle=100控制 IO,避免拖慢业务
增量备份必须对准 xtrabackup_checkpoints 所在目录
增量不是“对比时间”,而是对比 LSN(日志序列号)。--incremental-basedir 必须指向一个含有效 xtrabackup_checkpoints 文件的目录 —— 这个目录只能是上一次成功完成的备份根目录(全量或前一个增量),不能是子目录、不能是空目录、不能是手动改名过的目录。
- 第一次增量:用
--incremental-basedir=/backup/full_20260929 - 第二次增量:必须用
--incremental-basedir=/backup/inc_20260930,而不是再次指回全量目录 - 误指后 xtrabackup 可能静默生成无效备份,恢复时才暴露问题
- 可用
cat /backup/inc_20260930/xtrabackup_checkpoints | grep to_lsn查下一次增量的起点
恢复时合并顺序错不得、--redo-only 不能少
恢复不是把文件拷回去就完事。InnoDB 需要重放 redo 日志才能一致,而增量日志必须按链式顺序合并进全量,否则数据页损坏。
- 先处理全量:
xtrabackup --apply-log --redo-only --target-dir=/backup/full_20260929 - 再依次合并增量(顺序绝对不能乱):
xtrabackup --apply-log --redo-only --target-dir=/backup/full_20260929 --incremental-dir=/backup/inc_20260930 - 最后一个增量合并完,去掉
--redo-only再跑一次--apply-log,才算最终一致性状态 - 漏掉某次增量,或顺序颠倒,
--apply-log会卡住或报LSN mismatch
最容易被忽略的是:每次 --apply-log --redo-only 后,全量目录里的 xtrabackup_checkpoints 会被更新,to_lsn 变成新值 —— 这就是下一次增量的起点依据。整个链条靠这个文件维系,别手动删、别挪动、别用 rsync 同步时忽略它。











