為了保障數(shù)據(jù)的安全,需要定期對數(shù)據(jù)進行備份。備份的方式有很多種,效果也不一樣。一旦數(shù)據(jù)庫中的數(shù)據(jù)出現(xiàn)了錯誤,就需要使用備份好的數(shù)據(jù)進行還原恢復。從而將損失降到最低。
1、為什么要備份
災難恢復、審計、測試等操作需求,都需要對數(shù)據(jù)庫進行備份。
2、備份方案設計的建議
在生產(chǎn)實踐中,對于大數(shù)據(jù)庫來說,物理備份是必需的,因為邏輯備份太慢并受到資源限制,而且從邏輯備份中恢復也需要很長的時間。
保留多個備份集
定期從邏輯備份(物理備份)中抽取數(shù)據(jù)進行恢復測試
保存二進制日志用于基于故障時間點的恢復。expire_logs_days參數(shù)應該設置得足夠長,到少可以從最近兩次物理備份中做基于時間點的恢復。
監(jiān)控備份和備份過程,并驗證備份是否正常。
測算恢復所需要的資源和時間。
3、邏輯備份與物理備份
1)邏輯備份
就是將數(shù)據(jù)包含在一種MySQL能夠解析的格式中,要么是SQL,要么是以某個符號分隔的文本。
邏輯備份的優(yōu)點:
備份與恢復簡單、靈活
與存儲引擎無關(guān)。因為是從MySQL服務器中提取數(shù)據(jù)而生成,所以消除了底層數(shù)據(jù)存儲的影響。
有助于避免數(shù)據(jù)損壞。
備份文件可以普通的文本
邏輯備份的缺點:
必須由數(shù)據(jù)庫服務器完成生成邏輯備份的工作,因此需要更多的服務器資源。
邏輯備份在某些場景下比數(shù)據(jù)庫文件本身更大。
無法保證導出后再還原出來的一定是同樣的數(shù)據(jù)。
從邏輯備份中還原需要MySQL加載和解釋語句,轉(zhuǎn)化為存儲格式。
2)物理備份
直接復制原始文件到要備份的位置。
物理備份的優(yōu)點:
基于文件的備份,只需要將需要的文件復制到其他地方即可完成。
物理備份的恢復比較簡單,取決于存儲引擎。
物理備份的恢復更快。因為不需要執(zhí)行任何SQL或構(gòu)建索引。
物理備份的缺點:
InnoDB的原始文件通常比生意人邏輯備份要大的多。
物流備份不總是可以跨平臺、操作系統(tǒng)及MySQL版本。
4、備份什么
恢復的需求決定需要備份什么,最簡單的策略是只備份數(shù)據(jù)和表定義。主要考慮如下內(nèi)容:
數(shù)據(jù)
二進制日志和InnoDB事務日志
代碼:觸發(fā)器、存儲過程等
復制配置:(二進制日志、中繼日志、日志索引文件和.info文件)
服務器配置(my.cnf文件等)
操作系統(tǒng)文件(定時任務相關(guān)配置等)
5、增量備份和差異備份
當數(shù)據(jù)量很大時,一個常見的策略就是做定期的增量或者差異備份,它們之間的區(qū)別是:差異備份是對自上次全備份后所有改變的部份而做的備份,增量備份則是從任意類型的上次備份后所有修改做的備份。