如何在mysql中使用Percona XtraBackup进行备份

来源:这里教程网 时间:2026-02-28 20:13:49 作者:

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-full

2. 停止 MySQL 服务并清空数据目录

systemctl stop mysql rm -rf /var/lib/mysql/*

3. 恢复数据

xtrabackup --copy-back --target-dir=/data/backups/mysql-full

4. 修改数据目录权限

chown -R mysql:mysql /var/lib/mysql

5. 启动 MySQL

systemctl start mysql

增量备份(可选)

基于全量备份,可以创建增量备份以减少备份体积和时间。

1. 创建第一次增量备份

xtrabackup --backup --target-dir=/data/backups/incremental1 --incremental-basedir=/data/backups/mysql-full

2. 第二次增量基于第一次增量

xtrabackup --backup --target-dir=/data/backups/incremental2 --incremental-basedir=/data/backups/incremental1

3. 恢复时依次应用:

准备全量备份:
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 的使用并不复杂,但能有效保障生产环境的数据安全。

相关推荐