MySQL 8.0 备份恢复如何使用 xtrabackup 工具实操?

文章导读
MySQL 8.0 备份恢复必须使用 Percona XtraBackup 8.0 版本,2.4 版本不支持 MySQL 8.0 的 redo log 格式。操作前需确认数据库用户拥有 BACKUP_ADMIN 权限,并确保备份目录磁盘空间充足。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

MySQL 8.0 备份恢复必须使用 Percona XtraBackup 8.0 版本,2.4 版本不支持 MySQL 8.0 的 redo log 格式。操作前需确认数据库用户拥有 BACKUP_ADMIN 权限,并确保备份目录磁盘空间充足。

先说结论:MySQL 8.0 环境必须配套使用 XtraBackup 8.0,且需严格处理权限与日志应用步骤。

  • 适合:MySQL 8.0 InnoDB 引擎的热备份场景
  • 先看:确认 xtrabackup 版本与 MySQL 版本匹配,检查用户权限
  • 建议:恢复后执行 chown 修正文件归属,检查错误日志

命令速用版

# 全量备份
xtrabackup `--backup` `--target-dir`=/data/backup/full `--user`=root `--password`=your_password

# 准备恢复(应用日志)
xtrabackup `--prepare` `--target-dir`=/data/backup/full

# 恢复数据
xtrabackup `--copy-back` `--target-dir`=/data/backup/full

为什么会这样

XtraBackup 通过复制物理文件实现热备份,MySQL 8.0 改变了 redo log 格式导致旧版工具无法解析。备份过程中工具会锁定表结构片刻并持续跟踪数据页变化,确保数据一致性。

分步处理

1. 安装匹配版本
下载 Percona XtraBackup 8.0 安装包,不要使用 2.4 版本。公开资料中没有看到可靠的量化数据表明特定小版本差异,建议跟随 MySQL 8.0 大版本选择对应工具。

2. 执行备份
运行备份命令,指定目标目录。确保运行用户有读取数据库文件权限。

3. 准备恢复
使用 `--prepare` 参数应用事务日志。此步骤不可跳过,否则数据无法启动。

4. 复制回数据目录
使用 `--copy-back` 将文件放回 var/lib/mysql。操作需 root 权限。

5. 修正权限
恢复后的文件归属可能变为 root,需改回 mysql 用户。

MySQL 8.0 备份恢复如何使用 xtrabackup 工具实操?

怎么验证是否生效

启动 MySQL 服务,查看 error log 确认无 InnoDB 报错。登录数据库执行 SELECT 查询业务表,确认数据完整。

常见坑

版本不匹配会导致备份失败或恢复后无法启动。copy-back 后忘记修改文件所有者会导致 MySQL 无法启动。备份期间磁盘空间不足会导致备份中断。

常见问题

XtraBackup 2.4 能备份 MySQL 8.0 吗

不能。MySQL 8.0 redo log 格式变更,2.4 版本无法识别,必须使用 8.0 版本工具。

备份需要多少磁盘空间

至少需要等同于数据目录大小的空间。公开资料中没有看到可靠的量化数据表明压缩比例,建议预留 1.5 倍余量。

恢复后 MySQL 启动失败怎么办

检查数据目录文件归属是否为 mysql 用户,查看 error log 确认是否有权限拒绝或日志错误。

参考来源

Percona XtraBackup 8.0 Documentation, Introduction and Compatibility, https://docs.percona.com/percona-xtrabackup/8.0/en/