您好,登錄后才能下訂單哦!
這篇文章給大家介紹innobackupex的備份和恢復(fù)是怎么樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
原理
階段:備份backup – 預(yù)恢復(fù)prepare -- 恢復(fù)restore
表文件時(shí)可能包含不完整事務(wù),需要prepare將其變?yōu)?/span>consistent數(shù)據(jù)文件,這樣復(fù)制出來的文件肯定是不一致的,然后對每個(gè)文件進(jìn)行崩潰恢復(fù)處理,最終達(dá)到一致.
在啟動(dòng)的時(shí)候會(huì)記錄一個(gè)LSN(log sequence number),然后就把所有的Innodb數(shù)據(jù)文件復(fù)制出來,這樣復(fù)制出來的數(shù)據(jù)文件是不一致的,但是XtraBackup會(huì)在后臺(tái)運(yùn)行一個(gè)進(jìn)程把所有對redo log file的修改記錄下來;
二進(jìn)制程序(比如xtrabackup_55)完成的,如果使用innobackupex 腳本,剛才的步驟完成以后,innobackupex就會(huì)去備份MyISAM表和.frm文件,這時(shí)要保證數(shù)據(jù)的一致性就會(huì)先鎖表了,通過FLUSH TABLES WITH READ LOCK命令鎖表然后把文件復(fù)制出來,再釋放掉這個(gè)鎖。
(recovery)和restore兩個(gè)步驟。在prepare結(jié)束以后,Innodb的表恢復(fù)到了復(fù)制Innodb文件結(jié)束的時(shí)間點(diǎn),這個(gè)時(shí)間點(diǎn)也就是鎖表復(fù)制MyISAM表的起點(diǎn),所以最終數(shù)據(jù)是一致的。一般我們在恢復(fù)的時(shí)候執(zhí)行兩次prepare,是因?yàn)榈诙?/span>prepare會(huì)幫助我們生成redo log文件,從而加快MySQL數(shù)據(jù)庫啟動(dòng)的速度。
將數(shù)據(jù)庫備份放在BACKUP-DIR目錄,默認(rèn)新建一個(gè)子目錄,--no-timestamp會(huì)跳過此功能;選項(xiàng)指定所用內(nèi)存以加快進(jìn)度,默認(rèn)100M;讀取datadir/innodb_data_home_dir/innodb_data_file_path等變量;
表是innodb表,最后為logfile;--data-dir目錄必須為空
增量備份文件,內(nèi)容如下
文件內(nèi)容如下
有點(diǎn)復(fù)雜,如果對base backup執(zhí)行事務(wù)一致性恢復(fù),則其不能再用于增量備份恢復(fù),為此須指定—redo-only選項(xiàng);
恢復(fù)單表提供了restore datafile,針對壞塊也有blockrecover,即盡可能的避免全庫恢復(fù);也提供了類似功能,允許恢復(fù)單個(gè)表空間;讓innodb采用slow shutdown(full purge + change buffer merge),以保證表空間處于一致性并被import;
數(shù)據(jù)字典的dump,5.6起不是必需;
創(chuàng)建相同結(jié)構(gòu)的表復(fù)制到數(shù)據(jù)目錄
基于時(shí)間點(diǎn)的恢復(fù),記錄備份binlog時(shí)數(shù)據(jù)庫當(dāng)前位置,這也是數(shù)據(jù)庫一致性恢復(fù)的終點(diǎn);
執(zhí)行時(shí)間點(diǎn)恢復(fù)
--start-position=57 --stop-datetime="11-12-25 01:00:00" | mysql -u root –p
在slave執(zhí)行備份
須留意以下兩個(gè)參數(shù)
--從屬信息
此選項(xiàng)在備份復(fù)制從屬服務(wù)器時(shí)非常有用。它打印主服務(wù)器的二進(jìn)制日志位置和名稱。它還將此信息作為更改主命令寫入xtrabackup_slave_info文件。通過在此備份上啟動(dòng)從屬服務(wù)器,并使用保存在xtrabackup\u slave\u info文件中的二進(jìn)制日志位置發(fā)出CHANGE master命令,可以設(shè)置此主服務(wù)器的新從屬服務(wù)器。
--安全從備份
停止從屬SQL線程并等待啟動(dòng)備份,直到“顯示”狀態(tài)下的從屬打開臨時(shí)表為零。如果沒有打開的臨時(shí)表,將進(jìn)行備份,否則將啟動(dòng)和停止SQL線程,直到?jīng)]有打開的臨時(shí)表。如果在--safe Slave backup timeout秒后Slave_open_temp_tables未變?yōu)榱?,備份將失敗。備份完成后,從屬SQL線程將重新啟動(dòng)。
關(guān)于innobackupex的備份和恢復(fù)是怎么樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。