在 MySQL 升级过程中,从 5.7 升级到 8.0 是一个常见但风险较高的操作。尤其在生产环境中,大数据量数据库如果使用逻辑备份(mysqldump)会导致:
-
迁移时间长
-
锁表风险高
-
恢复不可控
因此,本文采用 Percona XtraBackup 物理备份方案 实现低停机迁移.
二、适用场景
适用于以下情况:
-
MySQL 5.7 → MySQL 8.0 升级
-
数据量较大(GB ~ TB级)
-
需要低停机迁移
-
允许短暂停写窗口
-
使用 InnoDB 引擎为主
三、CentOS / RHEL(yum 安装)
如何离线环境可以在本地下载离线包,然后在远程上安装即可.针对5.7版本和8.0版本的不一样,根据自己的版本选择相应的包安装.
安装 Percona 官方源 yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm 启用 XtraBackup 仓库 MySQL 5.7(XtraBackup 2.4) percona-release enable tools release 安装 XtraBackup yum install -y percona-xtrabackup-24 验证安装 xtrabackup --version 安装 Percona 8.0 工具链 percona-release setup ps80 安装 XtraBackup 8.0 yum install -y percona-xtrabackup-80 验证 xtrabackup --version
四、数据备份(核心步骤)
数据备份主要是针对xtrabackup的用法,这里不管是5.7版本的还是8.0版本的,使用方法是一样的.
1️⃣ 执行全量备份 xtrabackup \ --user=root \ --password='******' \ --backup \ --target-dir=/data/backup/full_2026 2️⃣ prepare 备份 xtrabackup --prepare --target-dir=/data/backup/full_2026 3️⃣ 校验备份文件 ls -lh /data/backup/full_2026
确保包含:
-
ibdata1
-
*.ibd
-
xtrabackup_checkpoints
六、恢复到 MySQL
还原也是一样的,把备份的文件copy到目标节点,然后恢复数据,自动会写到数据库的数据目录里,然后赋予权限,启动即可,这样数据就同步过来了
1️⃣ 停止 MySQL 8.0 systemctl stop mysqld 2️⃣ 清理数据目录 ⚠️ 确保是新库环境 rm -rf /var/lib/mysql/* 3️⃣ 恢复数据 xtrabackup \ --copy-back \ --target-dir=/data/backup/full_2026 4️⃣ 修复权限 chown -R mysql:mysql /var/lib/mysql
针对数据迁移主要是用在主从,或者同步场景,使用xtrabackup进行同步和备份还原比较适合,而且针对binlog同步或者GTID同步都是不错的选择.

您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏