天天看點

Percona XtraBackup備份資料庫介紹

XtraBackup是Percona旗下一款開源軟體,能夠對Mysql及MariaDB進行線上備份。

其特點如下:

備份過程快速、可靠;

備份過程不會打斷正在執行的事務;

能夠基于壓縮等功能節約磁盤空間和流量;

自動實作備份檢驗;

還原速度快;

工作原理:

XtraBackup是實體備份+邏輯備份的組合。在備份innodb表的時候,它拷貝ibd檔案,并一刻不停的監視redo log的 變化,并不斷的追加到自己的事務日志檔案。在拷貝ibd檔案過程中,ibd檔案本身可能會被多次擦寫,導緻表空間資料與最初的不一緻,其實這并不是問題,因為在拷貝完成後的第一個prepare(準備)階段,Xtrabackup采用類似于innodb崩潰恢複的方法,把資料檔案恢複到與日志檔案一緻的狀态,并把未送出的事務復原。如果同時需要備份myisam表以及innodb表結構等檔案,那麼就需要用flush tables with lock來獲得全局鎖,開始拷貝這些不再變化的檔案,同時獲得binlog位置,拷貝結束後釋放鎖,也停止對redo log的監視。

Percona XtraBackup下載下傳位址:

https://www.percona.com/software/mysql-database/percona-xtrabackup

Percona XtraBackup手冊:

https://learn.percona.com/hubfs/Manuals/Percona_Xtra_Backup/PerconaXtraBackup-2-2-13.pdf?t=1474412110937

下載下傳:

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/Percona-XtraBackup-2.4.4-rdf58cf2-el6-x86_64-bundle.tar

解壓:

tar -xvf Percona-XtraBackup-2.4.4-rdf58cf2-el6-x86_64-bundle.tar

解壓出三個檔案:

percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm

percona-xtrabackup-24-debuginfo-2.4.4-1.el6.x86_64.rpm

percona-xtrabackup-test-24-2.4.4-1.el6.x86_64.rpm

安裝:

rpm -ivh percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm

安裝過程報錯:

libev.so.4()(64bit) is needed by percona-xtrabackup-2.3.2-1.el6.x86_64

解決方法:

wget ftp://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/libev-4.04-2.el6.x86_64.rpm

安裝libev:

rpm -ivh libev-4.04-2.el6.x86_64.rpm

重新安裝:

rpm -ivh percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm

正常,再安裝另外兩個:

rpm percona-xtrabackup-24-debuginfo-2.4.4-1.el6.x86_64.rpm

rpm percona-xtrabackup-test-24-2.4.4-1.el6.x86_64.rpm

一、備份處理:

1、建立mysql使用者,授權(略過,用root了)。

2、完全備份:

innobackupex --user=root --password=123456 /data/backup #/data/backup是備份檔案夾

3、增量備份:

innobackupex --user=root --password=123456 --incremental /data/backup --incremental-basedir=/data/backup/2016-09-23_15-56-06

其中,--incremental-basedir指的是完全備份所在的目錄,此指令執行結束後,innobackupex指令會在/data/backup目錄中建立一個新的以時間命名的目錄以存放所有的增量備份資料。另外,在執行過增量備份之後再一次進行增量備份時,其--incremental-basedir應該指向上一次的增量備份所在的目錄。

需要注意的是,增量備份僅能應用于InnoDB或XtraDB表,對于MyISAM表而言,執行增量備份時其實進行的是完全備份。

二、還原備份

service mysqld stop  

rm -rf /usr/local/mysql/data/*  #删除資料目錄

innobackupex --apply-log --redo-only /data/backup/2016-09-23_15-56-06

innobackupex --apply-log --redo-only /data/backup/2016-09-23_15-56-06 --incremental-dir=/data/backup/2016-09-23_17-56-06

如果存在多次增量備份的話,就需要多次執行.如

innobackupex --apply-log --redo-only BACKUPDIR

innobackupex --apply-log --redo-only BACKUPDIR --incremental-dir=INCREMENTDIR-1

innobackupex --apply-log --redo-only BACKUPDIR --incremental-dir=INCREMENTDIR-2

BACKUP是全備目錄,INCREMENTDIR是增量備份目錄,上面是有2次增量備份,如果存在多次增量備份,則需要多次運作如上的指令

innobackupex --copy-back /data/backup/2016-09-23_15-56-06 #恢複資料

chown -R  mysql:mysql /usr/local/mysql/data/ #修改目錄權限

service mysqld start

完成。

Xtrabackup的備份壓縮

Xtrabackup對備份的資料檔案支援“流”功能,即可以将備份的資料通過STDOUT傳輸給tar程式進行歸檔,而不是預設的直接儲存至某備份目錄中。要使用此功能,僅需要使用--stream選項即可。如:

innobackupex --user=root --password=123456 --stream=tar  /data/backup | gzip > /data/backup/`date +%F_%H-%M-%S`.tar.gz

另:MariaDB是mysql的分支。XtraDB是MariaDB的存儲引擎,類mysql的innodb。

更多請支援:http://www.webyang.net/Html/web/article_278.html

繼續閱讀