工具与 MySQL 版本强绑定
Percona XtraBackup(PXB)是 InnoDB 的物理热备工具,通过复制数据文件与 redo 日志实现在线备份。它与 MySQL 版本强绑定:8.0 要用 PXB 8.0.x,5.7 用 PXB 2.4.x。MySQL 8.0.30 起 redo 日志改用 #innodb_redo 目录结构,备份工具必须同步升级到对应小版本,否则备份直接失败。
基本信息
| 适用平台 | Percona XtraBackup,Linux 环境为主 |
|---|---|
| MySQL 8.0 | 配 PXB 8.0.x,跟随 MySQL 小版本升级 |
| MySQL 5.7 | 配 PXB 2.4.x,该分支已进入维护期 |
| 更高版本 | MySQL 8.4 等需对应大版本工具,选型前查官方支持矩阵 |
| MariaDB | 用 mariadb-backup,不用 PXB |
| 恢复方向 | 只支持同大版本向上,8.0 的备份不能恢复到 5.7 |
典型使用场景
- 大数据量实例的全量与增量物理备份,要求备份窗口尽量短
- 用物理备份快速拉起从库或测试实例,比逻辑导入快得多
- 一致性要求高的库做在线备份,尽量少影响业务写入
- 备份落到对象存储或流式压缩传输,配合 streaming 模式
- 定期做恢复演练,验证备份可用性与实际恢复耗时
版本对齐与全备
版本对齐与全备
# 先核对工具版本与服务端版本是否匹配
xtrabackup --version
mysql -e "SELECT VERSION();"
# 全备(在线,不停业务)
xtrabackup --backup --target-dir=/data/backup/full --user=backup --password='占位口令'
# 基于全备的增量备份
xtrabackup --backup --target-dir=/data/backup/inc1 \
--incremental-basedir=/data/backup/full --user=backup --password='占位口令'
# 准备:先准备全备,再应用增量并做最后一次回滚
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/full
xtrabackup --prepare --target-dir=/data/backup/full --incremental-dir=/data/backup/inc1
# 恢复:停库、清空数据目录、回写、改属主
systemctl stop mysqld
xtrabackup --copy-back --target-dir=/data/backup/full
chown -R mysql:mysql /var/lib/mysql && systemctl start mysqld版本选择建议
| 场景 | 工具版本 | 说明 |
|---|---|---|
| MySQL 8.0 生产 | PXB 8.0.x | 官方主推线,跟随 MySQL 小版本 |
| MySQL 8.0.30 及以上 | PXB 8.0.30 或更高 | redo 目录结构变化后必须同步升级 |
| MySQL 5.7 存量 | PXB 2.4.x | 处于维护期,新特性止步 |
| MariaDB 10.x | mariadb-backup | 同源分支,备份产物不通用 |
| 跨大版本恢复 | 不支持 | 8.0 备份不能恢复到 5.7 |
升级顺序是硬约束:先升级备份工具,再升级 MySQL。反过来做会出现工具无法解析新的 redo 格式、备份直接失败,而此时往往已经没有可用的旧备份,恢复窗口只能被动延后。
增量备份的准备阶段有讲究:全备和中间增量都要加 --apply-log-only,只有最后一个增量不加,否则后续增量无法继续应用。脚本里把这一步固化下来,能避免大部分恢复演练失败。