以mysql為列:
規劃容災備份時,有兩個參考依據,1:恢復點目標(PRO),2:恢復時間目標(RTO)。他們定義了可以容忍丟失多少數據,以及恢復數據需要多少時間。而且一定要走出一個誤區,復制就是備份,只有備份才能滿足備份的要求。
個人認為備份方案類型如下:
1:在線備份或者離線備份,通常關閉mysql做離線備份是最簡單最安全的,服務器不提供應用訪問服務,可以更快完成備份,但是,這樣會導致服務中斷,同時,重啟mysql也需要一定的時間成本,對于已經上線的系統,基本不可取。在線備份的最大一個問題是,mysql可能鎖住大量的表,除非鎖被釋放,否則會有大量的io請求被阻塞。
綜上所述,我們在規劃備份的時候需要考慮一下幾點:
a:鎖時間。
b:備份時間。
c:備份負載對服務器的影響有多大。
d:恢復備份時間需要多久。
2:邏輯備份還是物理備份。
(1):邏輯備份有以下優點:
a:邏輯備份文件恢復非常簡單。只需要使用mysqlimport即可。
b:在我們只想查看數據,不想恢復的時候可以使用grep或者sed命令查看。
c:邏輯備份與存儲引擎沒有關系,我們可以跨存儲引擎恢復數據,比如:從InnoDB表中備份,用很小的工作量就可以把數據恢復到MyISAM中。
邏輯備份也會有以下缺點:
a:必須有數據庫服務器完成備份工作,增加服務器工作負荷。
b:邏輯備份文件某些場景比數據庫本身文件還大。
c:無法保證導入導出的數據是一樣的,比如浮點型數據。
d:恢復的時候需要重建索引,速度會慢。
(2):物理備份有以下優點:
a:基于文件的物理備份,只需要復制操作到目標目錄即可。
b:恢復的時候只需要將文件copy到要恢復的目錄即可。InnoDB可能需要停止服務和其他一些操作。
c:物理備份中恢復速度塊,而且容易垮平臺和操作系統和mysql數據庫版本。
物理備份也會有以下缺點:
a:文件名大小寫敏感,浮點格式數據可能會遇到麻煩。
b:物理備份通常包含很多未使用的空間。
3:增量備份和差異備份。增量備份和差異備份只是局部備份,主要是思想就是不備份沒有改變的表,但是會減少服務器的開銷,備份時間等。
4:二進制日志備份。通常數據小,我們可以頻繁的備份,同時,基于時間點的恢復,二進制日志備份是一個很有效的手段。
5:文件系統快照,通過創建鏡像達到恢復的目的。
對于一個好的開發人員來說,有好的備份容災規劃和計劃是必不可少的。這樣可以提高我們在線系統的持續運行能力。更好的服務我們系統的用戶。我個人最喜歡的備份方式就是從文件系統快照中直接復制數據文件。
以上是個人的見解,希望對你有一定的幫助。謝謝。