linux学习之数据库备份工具xtrabackup

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.在目标主机上还原

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

4.验证
可以查看到目标主机数据库已被还原


image.png

二、增量+binlog还原
1.新增数据


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

2.再次新增数据


image.png
第二次增量备份
xtrabackup -uroot -p123456 --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1

3.拷贝到还原主机

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

4.备份主机开始还原

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

5.验证,可以查看到目标主机数据库已被还原:


image.png

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


image.png

这时需要用binlog来进行还原
查看二次增备后的binlog 的位置
image.png
#将二进制日志拷贝到备份主机
[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

6.验证数据


image.png

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容