MySQL數據庫備份: mysqldump VS xtrabackup

MySQL數據庫備份工具比較

最近使用了公司的一個項目管理工具進行團隊任務管理,本來這個工具使用起來很方便的,但是前幾天突然發現最近一段時間做的更新操作全都消失不見了,找工具的運維人員也恢復不回來,感覺這個工具再使用下去隱隱有些擔憂。從這個事情上深深體會到了數據備份的重要性,我們生產環境上的數據如果沒有做任務安全措施就跟裸奔一樣,毫無安全感,隨便出現一點狀況就可能導致數據丟失。

針對數據庫的數據保護措施通常包括主從複製和數據備份,主從複製比較強大,一方面實現了數據的備份,另外可以通過主從複製實現讀寫分離,緩解數據的負載壓力,但是主從複製搭建起來稍微麻煩一些。數據備份可以使用工具輕鬆實現,結合定時任務也能一定程度上保證我們數據的安全。今天剛好對我們的生產環境數據庫做了自動備份,這裏記錄一下工具的選擇工程。

我們產品使用MySQL作爲數據庫,目前用於對MySQL數據庫備份最常用的兩個工具是mysqldump和xtrabackup。兩個工具採用了不同的備份策略,各有自己的優勢和不足,我們在選擇的時候需要結合自己的實際場景進行選擇。

兩者對比如下:

工具名稱 mysqldump xtrabackup
備份方式 邏輯備份 物理備份
數據保存方式 sql腳本 二進制文件
是否支持熱備份
是否支持增量備份
備份過程 會鎖表 不鎖表
是否影響正常業務 影響較大 影響較小
備份和恢復性能 耗時較長 耗時較短
佔用空間 佔用空間小 佔用空間較大

那我們應該如何選擇呢?當我們的數據量比較大時,而且希望備份操作對正常業務影響儘可能小,而且我們有足夠的空間來存儲備份數據時,我們應該選擇使用xtrabackup,基於二進制文件進行備份,速度非常快,再結合打包壓縮,也能適度降低存儲空間;當我們的業務數據庫相對較小,而且沒有那麼多空閒空間存儲備份數據時,可以選擇使用mysqldump進行備份,儘量選擇在業務量較低如深夜進行備份操作。另外數據恢復時允許的數據庫停機時間也是一個參考因素,使用mysqldump進行數據恢復的停機時間會相對長很多。比如我們的數據庫備份文件在幾G大小時,使用xtrabackup進行恢復時估計只需10+秒即可恢復,但是使用mysqldump恢復數據卻可能會花上數分鐘甚至上小時,因爲需要重新對數據庫創建索引和存儲結構。

另外值得說的一點就是,我們爲數據庫做好自動化備份之後,我們需要經常演練一下恢復過程以確保備份恢復機制處於可工作狀態,以防在業務真正出現問題時才發現備份機制已經不工作很長時間了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章