首页/数据/数据库速查/XtraBackup prepare(应用 redo 到一致状态)
备份与恢复56 条

XtraBackup prepare(应用 redo 到一致状态)

恢复前的必做步骤:--prepare 在备份副本上重放 redo,把数据文件推进到一致状态;增量链要按顺序逐层 apply-log。

数据库速查数据更新于 2026-10-13

prepare 是什么

prepare 是恢复前的必做步骤:xtrabackup --prepare 在备份副本上重放 redo,把数据文件推进到一致状态——已提交事务前滚、未提交事务回滚。全备和增量链都要 prepare,而且除最后一步外都要带 --apply-log-only,否则未完成的事务会被提前回滚,后续增量就无法继续叠加。

基本信息

版本对应Percona XtraBackup 8.0 对应 MySQL 8.0,版本必须匹配
全备恢复xtrabackup --prepare --target-dir=备份目录
增量链每一步都用 --apply-log-only,仅最后一步不使用
耗时特征与需回放的 redo 量成正比
执行位置在备份副本上做,不要直接跑生产库

典型使用场景

  • 全备恢复前:先把备份 prepare 到一致状态再拷回数据目录
  • 增量链叠加:base 先 apply-log-only,再逐个叠加增量目录
  • 恢复演练:定期在测试环境完整走一遍,验证备份真的能恢复
  • 迁移到新实例:prepare 后 copy-back 到新机器再启动
  • 可恢复性巡检:抽查备份目录能否顺利完成 prepare
  • 时间评估:用 prepare 耗时推算故障时的实际恢复窗口

全备与增量链 prepare

全备与增量链 prepare
# 1) 全备先 prepare 但不做最终回滚
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base
# 2) 依次叠加增量(同样 apply-log-only)
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base \
  --incremental-dir=/data/backup/inc1
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base \
  --incremental-dir=/data/backup/inc2
# 3) 最后一个增量叠加完成后,再做一次不带 apply-log-only 的 prepare
xtrabackup --prepare --target-dir=/data/backup/base
# 4) 拷贝回数据目录(实例必须已停止)
xtrabackup --copy-back --target-dir=/data/backup/base
chown -R mysql:mysql /var/lib/mysql

步骤要点

步骤关键选项做错的后果
全备 prepare--apply-log-only去掉 only 会提前回滚,增量无法叠加
增量叠加按时间顺序逐个 --incremental-dir顺序错乱会得到不一致的数据
最后一步不带 --apply-log-only保持 only 则未完成事务未回滚,实例可能起不来
拷贝回目录--copy-back,实例已停止实例在跑时拷回会破坏数据文件
prepare 过程会产生大量 IO,建议在恢复环境或专门机器上做,避免影响生产。
备份目录里的位点信息文件记录了备份结束时的 binlog 位点或 GTID 集合,重建复制时用它作为起点,配合增量备份可以缩短追赶时间。
prepare 完成后建议先 copy-back 到测试实例启动验证,确认数据可用再动生产;把「备份到恢复成功」的完整时间算进 RTO,而不是只统计备份耗时。

易错点

  • 增量链第一步忘了 --apply-log-only,后续增量全部无法叠加,只能重做备份
  • 最后一步仍然带 --apply-log-only,未提交事务未回滚,实例启动报错
  • 把 prepare 放在生产机上跑,IO 抢占导致线上查询变慢
  • 版本不匹配(XtraBackup 8.0 备份用 2.4 恢复),直接报错或静默损坏
  • 备份后从不演练恢复,真出事才发现备份文件早已不完整

数据来源与参考

  • Percona XtraBackup 文档: prepare

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌