Skip to content

XtraBackup

安装

mysql5.7+XtraBackup-24

shell
#添加 Percona 仓库
sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
sudo percona-release setup ps57
sudo yum install percona-xtrabackup-24

检查或配置mysql

确保 MySQL 配置文件 [mysqld] datadir 正确指向了你的数据目录

使用XtraBackup

全量备份整个数据库

shell
xtrabackup --backup --user=root --password=xxx --target-dir=/data/backup-dir/full

增量备份

shell
xtrabackup --backup --user=root --password=xxx --target-dir=/data/backup-dir/incremental-20240512 --incremental-basedir=/data/backup-dir/full

准备备份恢复

准备全备份

shell
xtrabackup --prepare --apply-log-only --target-dir=/data/backup-dir/full
  • prepare 指示 xtrabackup 准备备份数据以供恢复
  • apply-log-only 表示在这个阶段不要将日志文件的最终更改应用到备份数据中。这样可以保持备份的开放状态,以便应用后续的增量备份。

增量1

shell
xtrabackup --prepare --apply-log-only --target-dir=/data/backup-dir/full --incremental-dir=/data/backup-dir/20240512
  • incremental-dir 指定第一个增量备份的位置。

最后一个增量

shell
xtrabackup --prepare --target-dir=/data/backup-dir/full --incremental-dir==/data/backup-dir/incremental-backup2
  • 注意,最后一个增量备份的 --prepare 命令不应该包含 --apply-log-only 选项,以确保所有更改都被应用,并且备份状态设置为可以直接恢复的。

完成备份的准备

shell
xtrabackup --prepare --target-dir=/data/backup-dir/full
  • 在应用最后一个增量备份后,您需要执行一次最终的准备操作,这次不使用 --apply-log-only 选项。这将确保所有的更改都被合并并准备好恢复到数据库中。
  • 注意如果您已经恢复了全量+部分,下次在恢复是准备全量+剩余增量

恢复备份

shell
#停止mysql
systemctl stop mysqld
#恢复数据
xtrabackup --copy-back --target-dir=/data/backup-dir/full
#更改目录权限
chown -R mysql:mysql /data/mysql
#启动mysql
systemctl start mysql