os: centos 7.4.1708
db: mysql 8.0.20
–prepare
The --prepare step makes the files perfectly consistent at a single instant in time, so you can run InnoDB on them.
–apply-log-only
–apply-log-only should be used when merging all incrementals except the last one. Even if the --apply-log-only was used on the last step, backup would still be consistent but in that case server would perform the rollback phase.
全量恢復(base)
# 一次 prepare 全量備份
# xtrabackup --defaults-file="/etc/mysql/my.cnf" --prepare --datadir=/var/lib/mysql --target-dir=/backup/backupset/20180327_base
增量恢復(pitr)
需要增加 --apply-log-only ,會阻止發生 rollback
# 先 prepare 全量備份
# xtrabackup --defaults-file="/etc/mysql/my.cnf" --prepare --apply-log-only --datadir=/var/lib/mysql --target-dir=/backup/backupset/20180327_base
# 再 prepare 增量備份
# xtrabackup --defaults-file="/etc/mysql/my.cnf" --prepare --apply-log-only --target-dir=/backup/backupset/20180327_base --incremental-dir=/backup/backupset/20180327_inc1
# 再 prepare 全量備份
# xtrabackup --defaults-file="/etc/mysql/my.cnf" --prepare --target-dir=/backup/backupset/20180327_base
拷貝文件
# xtrabackup --copy-back --datadir=/var/lib/mysql --target-dir=/backup/backupset/20180327_base
# chown -R mysql:mysql /var/lib/mysql/*
# systemctl start mysqld.service
參考:
https://www.percona.com/doc/percona-xtrabackup/8.0/backup_scenarios/incremental_backup.html