Xtrabackup使用指南 InnoDB數(shù)據(jù)備份工具
2024-07-09 22:47:55
供稿:網(wǎng)友
一、Xtrabackup介紹
A、Xtrabackup是什么
Xtrabackup是一個(gè)對(duì)InnoDB做數(shù)據(jù)備份的工具,支持在線(xiàn)熱備份(備份時(shí)不影響數(shù)據(jù)讀寫(xiě)),是商業(yè)備份工具InnoDB Hotbackup的一個(gè)很好的替代品。
Xtrabackup有兩個(gè)主要的工具:xtrabackup、innobackupex
1、xtrabackup只能備份InnoDB和XtraDB兩種數(shù)據(jù)表,而不能備份MyISAM數(shù)據(jù)表
2、innobackupex是參考了InnoDB Hotbackup的innoback腳本修改而來(lái)的.innobackupex是一個(gè)perl腳本封裝,封裝了xtrabackup。主要是為了方便的 同時(shí)備份InnoDB和MyISAM引擎的表,但在處理myisam時(shí)需要加一個(gè)讀鎖。并且加入了一些使用的選項(xiàng)。如slave-info可以記錄備份恢 復(fù)后,作為slave需要的一些信息,根據(jù)這些信息,可以很方便的利用備份來(lái)重做slave。
3、官方文檔:http://www.percona.com/docs/wiki/percona-xtrabackup:start
B、Xtrabackup可以做什么
在線(xiàn)(熱)備份整個(gè)庫(kù)的InnoDB、 XtraDB表
在xtrabackup的上一次整庫(kù)備份基礎(chǔ)上做增量備份(innodb only)
以流的形式產(chǎn)生備份,可以直接保存到遠(yuǎn)程機(jī)器上(本機(jī)硬盤(pán)空間不足時(shí)很有用)
MySQL數(shù)據(jù)庫(kù)本身提供的工具并不支持真正的增量備份,二進(jìn)制日志恢復(fù)是point-in-time(時(shí)間點(diǎn))的恢復(fù)而不是增量備份。Xtrabackup工具支持對(duì)InnoDB存儲(chǔ)引擎的增量備份,工作原理如下:
(1)首先完成一個(gè)完全備份,并記錄下此時(shí)檢查點(diǎn)的LSN(Log Sequence Number)。
(2)在進(jìn)程增量備份時(shí),比較表空間中每個(gè)頁(yè)的LSN是否大于上次備份時(shí)的LSN,如果是,則備份該頁(yè),同時(shí)記錄當(dāng)前檢查點(diǎn)的LSN。
首先,在logfile中找到并記錄最后一個(gè)checkpoint(“l(fā)ast checkpoint LSN”),然后開(kāi)始從LSN的位置開(kāi)始拷貝InnoDB的logfile到xtrabackup_logfile;接著,開(kāi)始拷貝全部的數(shù)據(jù)文 件.ibd;在拷貝全部數(shù)據(jù)文件結(jié)束之后,才停止拷貝logfile。
因?yàn)閘ogfile里面記錄全部的數(shù)據(jù)修改情況,所以,即時(shí)在備份過(guò)程中數(shù)據(jù)文件被修改過(guò)了,恢復(fù)時(shí)仍然能夠通過(guò)解析xtrabackup_logfile保持?jǐn)?shù)據(jù)的一致。
C、Xtrabackup備份原理
XtraBackup基于InnoDB的crash-recovery功能。它會(huì)復(fù)制innodb的data file,由于不鎖表,復(fù)制出來(lái)的數(shù)據(jù)是不一致的,在恢復(fù)的時(shí)候使用crash-recovery,使得數(shù)據(jù)恢復(fù)一致。
InnoDB維護(hù)了一個(gè)redo log,又稱(chēng)為transaction log,事務(wù)日志,它包含了innodb數(shù)據(jù)的所有改動(dòng)情況。當(dāng)InnoDB啟動(dòng)的時(shí)候,它會(huì)先去檢查data file和transaction log,并且會(huì)做二步操作:
XtraBackup在備份的時(shí)候, 一頁(yè)一頁(yè)地復(fù)制innodb的數(shù)據(jù),而且不鎖定表,與此同時(shí),XtraBackup還有另外一個(gè)線(xiàn)程監(jiān)視著transactions log,一旦log發(fā)生變化,就把變化過(guò)的log pages復(fù)制走。為什么要急著復(fù)制走呢? 因?yàn)閠ransactions log文件大小有限,寫(xiě)滿(mǎn)之后,就會(huì)從頭再開(kāi)始寫(xiě),所以新數(shù)據(jù)可能會(huì)覆蓋到舊的數(shù)據(jù)。