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

 

 mysql备份恢复(二)_mysql

 

方法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

 

 

完整+增量的备份

完整备份后 新增一些数据

mysql备份恢复(二)_mysql_02

 

 

 

 

增量备份 需要指定上一次增量备份的目录



[root@zhh73 ~]# innobackupex --user=root --password=$PASS --incremental /increnment/  --incremental-basedir=/backup/2021-10-22_00-59-49/


 

mysql备份恢复(二)_sed_03

 

 

 mysql备份恢复(二)_数据文件_04

 

 

 基于增量备份  再创建备份

新增一些数据

mysql备份恢复(二)_数据_05

 

 

 

 

 

基于第一次的增量  做增量备份



[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

mysql备份恢复(二)_数据_06

 

 

合并后就可以恢复了

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

 查看数据

mysql备份恢复(二)_数据_07

 

 

合并第二次增量备份



[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

mysql备份恢复(二)_mysql_08

 

 

恢复数据

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

mysql备份恢复(二)_数据文件_09

 

 

备份文件归档发送到备份服务器

[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