//
xtrabackup備份的幾個細節
//
這個周依舊沒有上班,處于在家辦公狀态,發現在家還挺忙的,要自己做飯,洗碗,燒水,巴拉巴拉,一大堆事情~搞得還挺忙的。
今天在測試xtrabackup的一些細節部分,這裡羅列幾點很細節的地方,希望對大家有點幫助吧。
1、在使用xtrabackup進行備份的時候,有時候需要輸入--host參數,但是習慣了mysql的寫法,總是會将--host=127.0.0.1寫成簡寫:-h127.0.0.1,今天就吃了個虧,在innobackupex中,--host的簡寫是-H,而不是-h,這一點在幫助裡面可以看到。如下:
2、這個可能就更坑了,在某一次進行增量備份的時候,我寫的指令如下:innobackupex -uxxx -pxxx -Hxxx --incremetal --incremetal-basedir=/xxx/xxx/xxx /xxx/xxx
可以看出來,這是增量備份的寫法,但是其中--incremetal寫錯了,應該是--incremental,少寫了個n,但是問題是innobackupex這個工具并沒有檢測出來這個是個錯誤的寫法,在導緻恢複的時候出現了問題,增量資料丢失了。檢視備份檔案xtrabackup_checkpoint可以看到:
備份類型居然是full-backuped,可以看到,這個備份是變成了一個全量備份。這樣,在恢複的時候,就不會得到我們想要的結果了。這一點也請大家注意。
3、在使用innobackupex的時候,後面如果跟了--defaults-file參數,那麼即使你的配置檔案中有socket變量,後續如果使用本地socket連接配接的時候,也需要重新加上socket,否則備份的時候回提示錯誤。簡單講就是:
錯誤寫法:
innobackupex --defaults-file=/xxx/ /xxx/xxx
正确寫法:
innobackupex --defaults-file=/xxx/ --socket=/xxx /xxx/xxx
4、我們知道,可以在增量備份的基礎上繼續進行增量備份,在多次增量備份之後,如果我們需要使用最後一次的增量備份進行資料恢複,則需要對全量備份和之前的增量備份做apply-log的操作,在操作的過程中,需要加上--redo-only參數。
簡單講,prepare階段會變成以下幾步:
4.1、在全量備份(非最後一個增量備份)基礎上進行:
innobackupex --apply-log --redo-only base_dir
4.2、在增量備份上進行:
innobackupex --apply-log --redo-only --incremental-dir=/path/incremetal_dir base_dir
4.3、在最後一個增量備份上進行:
innobackupex --apply-log --incremental-dir=/path/incremetal_dir base_dir
至此,我們可以用base_dir來恢複出來所有的資料。
在家工作,有諸多不便,效率也比較低,就這麼多吧。
希望疫情快點過去,恢複正常的工作生活。
今天在網上看到的一個段子,感覺寫的還挺好,摘抄一下,大家也看看.
己亥末,庚子春,荊楚大疫,染者數萬,衆惶恐,舉國防,皆閉戶,道無車舟,萬巷空寂。然外狼亦動,垂涎而侯,華夏腹背芒刺。幸龍魂不死,風雨而立,醫無私,警無畏,民齊心。
政者,醫者,兵者,扛鼎逆行勇戰矣。商客,名家,百姓,仁義者,鄰邦獻物捐資。歎山川異域,風月同天,豈曰無衣,與子同裳,能者竭力,萬民同心。
月餘,疫除,終勝。
此後百年,風調雨順,國泰民安。