1. 程式人生 > >xtrabackup安裝及全備,增量備份,及恢復

xtrabackup安裝及全備,增量備份,及恢復

關於 all 並且 -o use shutdown app 可靠 href

xtrabackup特性:
        1、支持熱備份
        2、支持對InnoDB、MyISAM,xtradb存儲引擎的備份
        3、備份過程快速、可靠
        4、備份過程不會打斷正在執行的事務
        5、能夠基於壓縮等功能節約磁盤空間和流量
        6、自動實現備份檢驗
        7、還原速度快

(一)安裝:

官網:https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.html

ubuntu:

wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb

dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb

apt-get update

apt-get install percona-xtrabackup-24

centos:

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

yum install percona-xtrabackup-24

(二)備份:

1完全備份

# innobackupex --user=<用戶名> --password=<密碼> /path/to/backup


使用innobackupex備份時,其會調用xtrbackup備份所有的InnoDB表(*.frm, *.ibd),復制所有關於表結構定義的相關文件、以及MyISAM(*.MYD,*.MYI,*.frm),MERGE, CSV和ARCHIVE表的相關文件,同時還會備份觸發器和數據庫配置信息相關的文件。這些文件會被保存至一個以時間命名的目錄中


在使用innobackupex進行備份時,還可以使用--no-timestamp選項來阻止命令自動創建一個以時間命名的目錄;如此一來,innobackupex命令將會創建一個BACKUP-DIR目錄來存儲備份數據。

2、準備(prepare)一個完全備份

一般情況下,在備份完成後,數據尚且不能用於恢復操作,因為備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步到數據文件中的事務。因此,此時數據文件仍處於不一致狀態。準備的主要作用正是通過回滾未提交的事務及同步已經提交的事務到數據文件也使得數據文件處於一致狀態。

innobackupex命令的--apply-log選項可用於實現此功能。如下面的命令:

# innobackupex --apply-log <完全備份的目錄名稱>


準備完成後,最後幾行會出現以下幾行信息:
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
160303 11:25:31 InnoDB: Starting shutdown...
160303 11:25:36 InnoDB: Shutdown completed; log sequence number 0 1617932
160303 11:25:36 innobackupex: completed OK!


在實現"準備"的過程中,innobackupex通常還可以使用--use-memory選項來指定其可以使用的內存的大小,默認通常為100M。如果有足夠的內存可用,可以多劃分一些內存給Pprepare的過程,以提高其完成速度。


3、從一個完全備份中恢復數據

innobackupex命令的--copy-back選項用於執行恢復操作,其通過復制所有數據相關的文件到mysql服務器的DATADIR目錄中來執行恢復過程。innobackupex通過backup-my.cnf來獲取DATADIR目錄的相關信息。

# innobackupex --defaults-file=/etc/my.cnf --copy-back <完全備份目錄>

註意,在實現恢復時,需要關閉MySQL,並且刪除/mydata/data下的所有東西

如果執行成功,其輸出信息的最後幾行通常如下:
innobackupex: Starting to copy InnoDB log files
innobackupex: in ‘/backup/2016-03-03_11-21-31‘
innobackupex: back to original InnoDB log directory ‘/mydata/data‘
innobackupex: Finished copying back files.

160303 11:38:02 innobackupex: completed OK!

確保如上信息的最後一行出現"innobackupex: completed ok!"

當數據恢復到數據目錄後,還需要確保所有數據文件的所屬均為正確的用戶,如mysql;否則,在啟動mysqld前還需要事先修改數據文件的所屬

# chown -R mysql.mysql /mydata/data

4、使用innobackupex進行增量備份

要實現第一次增量備份,可以使用下面的命令:

# innobackupex --incremental /backup --incremental-basedir=<完全備份目錄>

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

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

準備增量備份與準備完全備份有著一些不同,尤其要註意的是:
1)需要在每個備份(包括完全和增量備份上),將已經提交的事務進行重放。重放後,所有的備份數據將合並到完全備份上
2)基於所有的備份將未提交的事務進行回滾

於是,操作就變成了:
# innobackupex --apply-log --redo-only BASEDIR

接著執行:
# innobackupex --apply-log --redo-only BASEDIR --incremental-dir=INCREMENTAL-DIR-1

而後是第二個增量備份:
# innobackupex --apply-log --redo-only BASEDIR --incremental-dir=INCREMENTAL-DIR-2

恢復時,直接使用第1次的完全備份即可

xtrabackup安裝及全備,增量備份,及恢復