XtraBackup 是什么
Percona XtraBackup 是 MySQL 与 MariaDB 的物理热备工具:它直接拷贝 InnoDB 数据文件,同时记录备份期间产生的重做日志,最后通过准备阶段把日志应用进数据文件,得到一份可启动的一致副本。大库的备份与恢复速度明显优于逐条 SQL 回放,适合作为数据库备份的主干方案。
基本信息
| 类型 | 物理热备,不长时间阻塞事务引擎写入 |
|---|---|
| 核心流程 | 备份、准备、拷回三个阶段 |
| 版本要求 | 工具大版本须与数据库系列匹配 |
| 账号权限 | 需要重载、加锁、查看进程等权限 |
| 常见补充 | 可与日志归档配合实现时间点恢复 |
全量备份与准备
全量备份与准备
xtrabackup --backup --user=root --password=*** --target-dir=/backup/xtra/full
xtrabackup --prepare --target-dir=/backup/xtra/full
# 查看备份中的位点信息,供后续日志回放
grep -E 'binlog' /backup/xtra/full/xtrabackup_binlog_info
# 恢复时先把准备后的目录拷回数据目录
# xtrabackup --copy-back --target-dir=/backup/xtra/full三个阶段
| 阶段 | 动作 | 要点 |
|---|---|---|
| 备份 | 拷贝数据文件并记录重做日志 | 过程中数据库保持在线,副本处于崩溃一致状态 |
| 准备 | 回放重做日志使数据文件一致 | 未准备好的备份不能直接启动 |
| 拷回 | 把目录复制回数据目录并调整属主 | 需要实例停机,之后由数据库完成启动检查 |
使用要点
- 版本必须匹配:工具与数据库大版本错配会直接拒绝或行为异常
- 准备阶段可以只做一次,但增量备份需要按顺序逐层应用后再统一准备
- 备份目录要预留空间:准备阶段会写入额外数据,容量估算要留余量
- 恢复前确认实例已停止并确认数据目录属主,权限错误会导致启动失败
- 把备份的位点信息与目录一起保存,缺少它会削弱时间点恢复能力
备份目录未经准备不可用于恢复;准备前的副本处于崩溃一致状态,直接启动可能触发数据文件校验失败。
工具会自动跳过从未使用过的数据块,因此物理备份体积通常小于数据文件总大小,配合压缩后差异更明显。