xtrabackup实现全量+增量+binlog恢复库

 利用xtrabackup实现完全备份及还原 

1.下载并安装xtrabackup 

wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.23/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.23-1.el7.x86_64.rpm
yum -y install  percona-xtrabackup-24-2.4.23-1.el7.x86_64.rpm

 

2. 在原主机做完全备份到/backup

[root@centos7 ~]#mkdir /backup
[root@centos7 ~]#xtrabackup -uroot -p123456 --backup --target-dir=/backup/base


#
目标主机无需创建/backup目录,直接复制目录本身
[root@centos7 ~]#scp -r /backup/ 目标主机:/backup1

 3. 在目标主机上还原

1)预准备:确保数据一致,提交完成的事务,回滚未完成的事务
[root@centos7 ~]#xtrabackup --prepare --target-dir=/backup1/base
2)复制到数据库目录
注意:数据库目录必须为空,MySQL服务不能启动
[root@centos7 ~]#xtrabackup --copy-back --target-dir=/backup1/base
3)还原属性
[root@centos7 ~]#chown -R mysql:mysql /data/mysql
4)启动服务
[root@centos7 ~]#systemctl start  mysqld

 4.验证

 可以查看到目标主机数据库已被还原:

 

 

增量+binlog还原

 新增数据

第一次增量备份
[root@centos7 ~]#xtrabackup -uroot -p123456 --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base

再次新增数据

第二次增量备份

xtrabackup -uroot -p123456 --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1

 

拷贝到还原主机

 [root@centos7 ~]#scp -r /backup/ 192.168.18.133:/backup/
#
备份过程生成三个备份目录
/backup/{baseinc1inc2} 

 备份主机开始还原

 

1)预准备完成备份,此选项--apply-log-only 阻止回滚未完成的事务
[root@centos7 ~]#xtrabackup --prepare --apply-log-only --target-dir=/backup/base
2)合并第1次增量备份到完全备份
[root@centos7 ~]#xtrabackup --prepare --apply-log-only --target-dir=/backup/base --incremental-dir=/backup/inc1
3)合并第2次增量备份到完全备份:最后一次还原不需要加选项--apply-log-only
[root@centos7 ~]#xtrabackup --prepare --target-dir=/backup/base --incrementaldir=/backup/inc2
4)复制到数据库目录,注意数据库目录必须为空,MySQL服务不能启动
[root@centos7 ~]#xtrabackup --copy-back --target-dir=/backup/base
5)还原属性: 

chown -R mysql.mysql /data/mysql

 6)启动服务:
[root@centos7 ~]#systemctl start mysqld 

验证

 可以查看到目标主机数据库已被还原:

 

截至第二次增备的数据都已经恢复,但是第二次增备后原数据库还有可能会写入数据

第二次增备后新增数据:

这时需要用binlog来进行还原

查看二次增备后的binlog 的位置

 

#将二进制日志拷贝到备份主机
[root@centos7 ~]scp centos7-bin.000002 192.168.18.133:/backup/
#应用Binlog
[root@centos7 backup]# mysqlbinlog /backup/centos7-bin.000002 --start-position=1749 >/backup/binlog.sql
[root@centos7 backup]# mysql -p123456

mysql> set sql_log_bin=0;    #关闭Binlog


mysql> source /backup/binlog.sql


mysql> set sql_log_bin=1;	#开启Binlog

验证数据

到此利用 xtrabackup+binlog的完全恢复已经完成。

posted @ 2021-07-11 23:54  屈宏志  阅读(145)  评论(0编辑  收藏  举报