下载地址:https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/
方法1
yum localinstall https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.24/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.24-1.el7.x86_64.rpm
方法2
https://www.percona.com/doc/percona-xtrabackup/2.4/installation/yum_repo.html
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum list | grep percona
yum install percona-xtrabackup-24.x86_64
[root@zhh73 ~]# xtrabackup -v xtrabackup: recognized server arguments: --datadir=/var/lib/mysql --server-id=1 --log_bin=mysql-bin xtrabackup version 2.4.24 based on MySQL server 5.7.35 Linux (x86_64) (revision id: b4ee263)
备份
PASS=$(base64 -d <<< QWJjNzc4ODk5IQo=) innobackupex --user=root --password=$PASS /backup/
恢复
先模拟故障
[root@zhh73 lib]# cd /var/lib/ [root@zhh73 lib]# mv mysql mysql.bk
恢复数据
[root@zhh73 ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/2021-10-22_00-59-49/
root@zhh73 ~]# ls /var/lib/mysql
ib_buffer_pool ibdata1 mysql performance_schema sys tidb_binlog xtrabackup_info zhh
[root@zhh73 ~]# chown mysql -R /var/lib/mysql
[root@zhh73 ~]# systemctl restart mysqld
完整+增量的备份
完整备份后 新增一些数据
增量备份 需要指定上一次增量备份的目录
[root@zhh73 ~]# innobackupex --user=root --password=$PASS --incremental /increnment/ --incremental-basedir=/backup/2021-10-22_00-59-49/
基于增量备份 再创建备份
新增一些数据
基于第一次的增量 做增量备份
[root@zhh73 2021-10-22_01-23-23]# innobackupex --user=root --password=$PASS --incremental /increnment/ --incremental-basedir=/increnment/2021-10-22_01-23-23/
xtrabackup 把备份过程中可能有尚未提交的事务或已经提交但是未同步数据文件的事务,写到xtrabackup_logfile文件,所以要先通过这个日志文件回滚,把未完成的事务同步到备份文件,保证数据文件处于一致性
[root@zhh73 2021-10-22_01-36-37]# innobackupex --apply-log --redo-only /backup/2021-10-22_00-59-49/
合并第一次增量的备份
[root@zhh73 2021-10-22_01-36-37]# innobackupex --apply-log --redo-only /backup/2021-10-22_00-59-49/ --incremental-dir=/increnment/2021-10-22_01-23-23/
检查 完整备份和增量备份的checkpoint
合并后就可以恢复了
rm -rf /var/lib/mysql
innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/2021-10-22_17-33-01/
chown mysql:mysql -R /var/lib/mysql
systemctl restart mysqld
查看数据
合并第二次增量备份
[root@zhh73 backup]# innobackupex --apply-log --redo-only /backup/2021-10-22_17-33-01/ --incremental-dir=/increnment/2021-10-22_17-39-44/
查看checkpoint
恢复数据
rm -rf /var/lib/mysql
innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/2021-10-22_17-33-01/
chown mysql:mysql -R /var/lib/mysql
systemctl restart mysqld
备份文件归档发送到备份服务器
[root@zhh73 ~]# innobackupex --databases=tidb_binlog --user=root --password=$PASS --stream=tar /mysql_backup 2>/mysql_backup/bak.log |ssh root@172.18.109.74 "cat - > /mysql_backup/`date +%F`.tar"
解压
[root@zhh74 mysql_backup]# tar -ixvf 2021-10-22.tar
归档备份
[root@zhh73 mysql_backup]# innobackupex --user=root --password=$PASS --stream=tar /mysql_backup > /mysql_backup/`date +%F`.tar
压缩归档备份
[root@zhh73 backup]# innobackupex --user=root --password=$PASS --stream=tar /mysql_backup |gzip >/backup/`date +%F`.tar.gz