xtrabackup實現(xiàn)全量+增量+binlog恢復庫
一酱虎、利用xtrabackup實現(xiàn)完全備份及還原
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
#目標主機無需創(chuàng)建/backup目錄,直接復制目錄本身
[root@centos7 ~]#scp -r /backup/ 目標主機:/backup1
3.在目標主機上還原
#預準備:確保數(shù)據(jù)一致,提交完成的事務,回滾未完成的事務
[root@centos7 ~]#xtrabackup --prepare --target-dir=/backup1/base
#復制到數(shù)據(jù)庫目錄
#注意:數(shù)據(jù)庫目錄必須為空券时,MySQL服務不能啟動
[root@centos7 ~]#xtrabackup --copy-back --target-dir=/backup1/base
#還原屬性
[root@centos7 ~]#chown -R mysql:mysql /data/mysql
#啟動服務
[root@centos7 ~]#systemctl start mysqld
4.驗證
可以查看到目標主機數(shù)據(jù)庫已被還原
image.png
二多糠、增量+binlog還原
1.新增數(shù)據(jù)
image.png
#第一次增量備份
[root@centos7 ~]#xtrabackup -uroot -p123456 --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base
2.再次新增數(shù)據(jù)
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
#復制到數(shù)據(jù)庫目錄陵霉,注意數(shù)據(jù)庫目錄必須為空琅轧,MySQL服務不能啟動
[root@centos7 ~]#xtrabackup --copy-back --target-dir=/backup/base
#還原屬性:
chown -R mysql.mysql /data/mysql
#啟動服務:
[root@centos7 ~]#systemctl start mysqld
5.驗證,可以查看到目標主機數(shù)據(jù)庫已被還原:
image.png
截至第二次增備的數(shù)據(jù)都已經(jīng)恢復,但是第二次增備后原數(shù)據(jù)庫還有可能會寫入數(shù)據(jù)
第二次增備后新增數(shù)據(jù):
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; #關(guān)閉Binlog
mysql> source /backup/binlog.sql
mysql> set sql_log_bin=1; #開啟Binlog
6.驗證數(shù)據(jù)
image.png
到此利用 xtrabackup+binlog的完全恢復已經(jīng)完成踊挠。