mysql5.6利用xtrabackup全備及增量備份

1.xtrabackup安裝mysql

wKioL1Wl8x7DJM-GAAE5jG_ZhOQ428.jpg

2.全備及恢復sql

(1)全備數據庫

查看數據庫app

wKioL1Wl84mx9d74AAIB-jOdUq0536.jpg

[root@local-db opt]# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456 /bak/mysql/ide

該語句將拷貝數據文件(由my.cnf裏的變量datadir指定)至備份目錄下(/bak/mysql/),注意:若是不指定--defaults-file,默認值爲/etc/my.cnf。測試

備份成功後,將在備份目錄下建立一個時間戳目錄(本例建立的目錄爲/bak/mysql/2015-07-08_18-52-43),在該目錄下存放備份文件。spa

wKioL1Wl8y7SvLYqAACmcgZ_ULQ942.jpg

(2)恢復日誌

刪除數據庫test123,嘗試恢復blog

wKiom1Wl8V6SmyAsAADORLkMdjY006.jpg

恢復以前,要先關閉數據庫,而且刪除數據文件和日誌文件。事務

wKioL1Wl80OQJVL6AAB-SB40w8o427.jpg

wKiom1Wl8WqA3Xc_AACUUkYv2TM009.jpg

[root@local-db opt]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --apply-log /bak/mysql/2015-07-08_18-52-43/

[root@local-db opt]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456  --copy-back /bak/mysql/2015-07-08_18-52-43/

恢復分爲兩個步驟:

第1步是apply-log,爲了加快速度,通常建議設置--use-memory,這個步驟完成以後,目錄/bak/mysql/2015-07-08_18-52-43/下的備份文件已經準備就緒。

第2步是copy-back,即把備份文件拷貝至原數據目錄下。恢復完成以後,必定要記得檢查數據目錄的全部者和權限是否正確。

wKiom1Wl8XyjgkXjAADnTEmKT0k497.jpg

wKioL1Wl81axInYgAACruTPVzNU191.jpg


3.增量備份及恢復

注意:innobackupex 增量備份僅針對InnoDB這類支持事務的引擎,對於MyISAM等引擎,則仍然是全備。

(1)增量備份

增量備份須要基於全備,咱們已經有了一個全備(/bak/mysql/2015-07-08_18-52-43/),咱們須要在該全備的基礎上作增量備份。

測試新建庫,導入新數據,作增量備份。

wKiom1Wl8evC_m9FAACvnqlXuqg068.jpg

wKiom1Wl8evS8eSKAAC0qv0B26A606.jpg

[root@local-db mysql]# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456 --incremental-basedir=/bak/mysql/2015-07-08_18-52-43/ --incremental /bak/mysql/ 

wKioL1Wl89uxZjleAABYqxRRGi8411.jpg

其中--incremental-basedir指向全備目錄,--incremental指向增量備份的目錄。

上面語句執行成功以後,會在--incremental執行的目錄下建立一個時間戳子目錄(本例中爲:/bak/mysql/2015-07-08_19-46-30),在該目錄下存放着增量備份的全部文件。

在備份目錄下,有一個文件xtrabackup_checkpoints記錄着備份信息,全備的信息以下:

wKiom1Wl8g_SIMqCAACseLV8Ox0437.jpg

基於該全備的增量備份的信息以下:

wKioL1Wl8_KjAj1vAADQ_W92QGU297.jpg

從上面能夠看出,增量備份的from_lsn正好等於全備的to_lsn。

那麼,咱們是否能夠在增量備份的基礎上再作增量備份呢?答案是確定的,只要把--incremental-basedir執行上一次增量備份的目錄便可,以下所示:

[root@local-db mysql]# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456 --incremental-basedir=/bak/mysql/2015-07-08_19-46-30/ --incremental /bak/mysql/

wKiom1Wl8iLAaZSNAABxDrxZu6o385.jpg

它的xtrabackup_checkpoints記錄着備份信息以下:

wKioL1Wl9ATDhqlBAAFdcnuwZWA232.jpg

能夠看到,該增量備份的from_lsn是從上一次增量備份的to_lsn開始的。

(2)恢復

刪除數據庫test456,嘗試恢復

wKioL1Wl9A2hf6-_AAGld3rtD3c819.jpg

恢復以前,要先關閉數據庫,而且刪除數據文件和日誌文件。

wKiom1Wl8kSylz_xAAB-SB40w8o654.jpg

wKioL1Wl9B2jcg_9AACUUkYv2TM881.jpg

增量備份的恢復比全備要複雜不少,第一步是在全部備份目錄下重作已提交的日誌,如:

[root@local-db mysql]# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456  --apply-log --redo-only /bak/mysql/2015-07-08_18-52-43/

[root@local-db mysql]# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456  --apply-log --redo-only /bak/mysql/2015-07-08_18-52-43/ --incremental-dir=/bak/mysql/2015-07-08_19-46-30/

[root@local-db mysql]# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456  --apply-log --redo-only /bak/mysql/2015-07-08_18-52-43/ --incremental-dir=/bak/mysql/2015-07-08_21-01-19/

其中/bak/mysql/2015-07-08_18-52-43/是指全備目錄,/bak/mysql/2015-07-08_19-46-30/是指第一次的增量備份,/bak/mysql/2015-07-08_21-01-19/是指第二次的增量備份,以此類推。

以上語句執行成功以後,最終數據在全備目錄下。

第一步完成以後,咱們開始第二步:回滾未完成的日誌:

[root@local-db mysql]# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456  --apply-log  /bak/mysql/2015-07-08_18-52-43/

上面執行完以後,/bak/mysql/2015-07-08_18-52-43/裏的備份文件已徹底準備就緒,最後一步是拷貝:

[root@local-db mysql]# innobackupex --defaults-file=/etc/my.cnf  --user=root --password=123456 --copy-back /bak/mysql/2015-07-08_18-52-43/

修改目錄權限,啓動mysql。

wKioL1Wl9C7xF2LPAAEM0FD8_eo215.jpg

修改目錄權限,啓動mysql。

恢復完成,以下圖

wKiom1Wl8l7Bgh7iAADWtnSS1fk302.jpg

相關文章
相關標籤/搜索