Percona XtraBackup 是开源 MySQL 热备份工具,支持 InnoDB/XtraDB 在线物理备份。安装需添加 Percona 源并 yum/apt 安装对应版本包。全量备份使用 xtrabackup --backup --target-dir=指定路径,建议通过 ~/.my.cnf 配置避免密码明文。恢复时先 --prepare 准备备份,再停止 MySQL、清空数据目录,用 --copy-back 恢复数据,最后修改权限并启动服务。增量备份基于全量或前一次增量进行,使用 --incremental-basedir 指定基础目录;恢复时依次 --prepare 全量和各增量(中间步骤加 --apply-log-only),最后 copy-back。注意目录权限、路径及 prepare 顺序即可安全完成备份恢复。

Percona XtraBackup 是一个开源的 MySQL 热备份工具,支持 InnoDB 和 XtraDB 存储引擎的在线物理备份,可以在不中断数据库服务的情况下完成备份操作。以下是使用 Percona XtraBackup 进行备份的基本流程和常用命令。
安装 Percona XtraBackup
在使用前需要先安装 Percona XtraBackup。以 CentOS/RHEL 为例:
- 添加 Percona 软件源:
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm - 安装 XtraBackup:
yum install percona-xtrabackup-80(根据 MySQL 版本选择对应包,如 80 对应 MySQL 8.0)
对于 Debian/Ubuntu 系统,使用 apt 安装,具体步骤参考 Percona 官方文档。
全量备份操作
执行一次完整的物理备份,命令如下:
xtrabackup --backup --target-dir=/data/backups/mysql-full --user=root --password=your_password说明:
- --backup:表示执行备份操作。
- --target-dir:指定备份文件存储路径,需确保目录存在且有写权限。
- 若使用 MySQL 8.0 且启用了 caching_sha2_password 认证插件,建议通过配置 ~/.my.cnf 避免密码明文:
[client] user=root password=your_password
然后可简化命令为:
xtrabackup --backup --target-dir=/data/backups/mysql-full恢复备份数据
恢复过程分为两个阶段:准备(prepare)和还原(restore)。
1. 准备备份(应用日志,保证数据一致性)
xtrabackup --prepare --target-dir=/data/backups/mysql-full2. 停止 MySQL 服务并清空数据目录
- systemctl stop mysql
- rm -rf /var/lib/mysql/*
3. 恢复数据
xtrabackup --copy-back --target-dir=/data/backups/mysql-full4. 修改数据目录权限
chown -R mysql:mysql /var/lib/mysql5. 启动 MySQL
systemctl start mysql增量备份(可选)
基于全量备份,可以创建增量备份以减少备份体积和时间。
1. 创建第一次增量备份
xtrabackup --backup --target-dir=/data/backups/incremental1 --incremental-basedir=/data/backups/mysql-full2. 第二次增量基于第一次增量
xtrabackup --backup --target-dir=/data/backups/incremental2 --incremental-basedir=/data/backups/incremental13. 恢复时依次应用:
- 准备全量备份:
xtrabackup --prepare --apply-log-only --target-dir=/data/backups/mysql-full - 应用第一个增量:
xtrabackup --prepare --apply-log-only --target-dir=/data/backups/mysql-full --incremental-dir=/data/backups/incremental1 - 应用第二个增量:
xtrabackup --prepare --target-dir=/data/backups/mysql-full --incremental-dir=/data/backups/incremental2 - 最后执行 copy-back 恢复
基本上就这些。只要注意权限、目录路径和 prepare 步骤的顺序,XtraBackup 的使用并不复杂,但能有效保障生产环境的数据安全。










