XtraBackup的備份原理與應用示例

2022-07-29 20:21:12 字數 2345 閱讀 8462

innodb儲存引擎是基於表空間(table space)進行儲存的,表空間中被分成多個塊(盤區),將資料分散儲存至這些盤區中,每個盤區都有自己的編號,每當資料修改一次,日誌序列號就增加1。在完全備份時,是將所有的盤區進行一次物理備份,而增量備份則是根據被修改的盤區號所導致的epoch變化選擇性備份相對完全備份所被修改的盤區。例如下圖中為某個資料庫innodb引擎的盤區,完全備份是將1-5盤區全部備份,後來資料庫被修改了,修改的資料是盤區1和3的資料,做增量備份時會將1和3號盤區進行備份。在做還原時會先還原完全備份中的1-5,再還原增量中的1和3。

需要注意的是,在xtrabackup中,是將完全備份和所有的增量合併之後才進行對資料庫還原操作的,不是在還原時合併的,是在還原之前就將所有資料合併好。

percona官方站點安裝:

~]# yum

install percona-xtrabackup-24-2.4.7-2.el7.x86_64.rpm percona-xtrabackup-test-24-2.4.7-2.el7.x86_64.rpm

1 ~]# rpm -ql percona-xtrabackup-24

2 /usr/bin/innobackupex #主程式,核心元件,一般都是用這一工具進行備份

3 /usr/bin/xbcloud

4 /usr/bin/xbcloud_osenv

5 /usr/bin/xbcrypt

6 /usr/bin/xbstream #流式化工具,將資料流式化處理,便於傳輸儲存

7 /usr/bin/xtrabackup

8 /usr/share/doc/percona-xtrabackup-24-2.4.7

9 /usr/share/doc/percona-xtrabackup-24-2.4.7/copying

10 /usr/share/man/man1/innobackupex.1

.gz11 /usr/share/man/man1/xbcrypt.1

.gz12 /usr/share/man/man1/xbstream.1

.gz13 /usr/share/man/man1/xtrabackup.1.gz

上面已經介紹了xtrabackup支援增量備份的核心元件是lsn(日誌序列號)。在恢復前需要先進行合併操作。

全量備份格式:

innobackupex --user=dbuser --password=dbuserpass /path/to/backup-dir/
選項:--no-timestamp :儲存的備份目錄不加時間戳

--defaults-file=/tmp/other-my.cnf :配置檔案路徑

/path/to/backup-dir/ :指明將備份儲存在哪個目錄

全量恢復前需要先做preparing,將備份本身的事務按實際情況做回滾或提交:

然後執行:

innobackupex --copy-back base-dir #base-dir為備份的路徑
增量備份需要基於全量備份來實現,在第一次做增量備份時指令中需要制定基於哪乙個全量備份來做增量備份,之後的增量備份則都要基於上一次的增量備份來做,而差異備份則每一次都是基於全量備份,如圖:

innobackupex --incremental /data/backups --incremental-basedir=basedir
--incremental /data/backups :指明

增量備份儲存的路徑

--incremental-basedir=basedir :指明增量備份基於哪乙個全量備份

每一次備份後xtrabackup會儲存乙個檔案,在這個檔案中記錄了,備份的型別、lsn的起始點和結束點。例:

1 backup_type = full-backuped

2 from_lsn = 0

3 to_lsn = 1291135

在還原全量+增量時,全量有事務日誌被備份,增量也有事務日誌被備份,這時需要將全量中的已提交(commited)的事務做還原,而未提交的部分不用做處理,待與增量中的事務合併後在進行回滾,因為全量中的事務可能在增量中有變化。

先對全量操作,:

--redo-only :只恢復事務中已提交的

再對增量操作,將全量與增量合併:

最後進行一次回滾:

還原:

innobackupex --copy-back base-dir
檢視innobackupex指令幫助:

innobackupex --help

xtrabackup的備份還原

1 簡介 xtrabackup有兩個主要的工具 innobackupex和xtrabackup,xtrabackup只能備份innodb和xtradb資料表,innobackupex封裝了xtrabackup,可以備份myisam資料表。yum install perl dbd mysql.x86 ...

xtrabackup備份說明

通過最簡單的備份事例,說明備份所包含的內容等資訊 xtrabackup backup target dir tmp backup指定用於備份,預設全備 target dir指定備份檔案目錄 生成備份目錄xtrabackup backupfiles cd xtrabackup backupfiles ...

xtrabackup 備份問題

個人認為percona 對mysql最大的貢獻就是它提供了mysql 的熱備份工具xtrabackup.對於v2版本中有乙個問題是 從備份檔案中恢復資料時,對於備份前新建立的表,是無法完全利用工具恢復.frm 式檔案。不過這並不影響使用 貌似網上有人已經做了修改 由於我們預設的儲存引擎是innodb...