爲什麼要備份?
由於使用MySQL時自己的一些誤操作導致數據丟失或者是開發寫程序時刪除了不該刪的數據,我們知道企業中數據是最重要的,那麼此時爲了數據的安全性,我們就必須的提前把數據給備份好,萬一出問題時,也好挽救回來。
其實導致數據災難的原因有很多的,舉一些基本的例子:硬件故障、軟件故障、自然災害、******、誤操作等都會導致數據丟失,那麼在生產環境中我們備份數據就成爲了必不可少的環節了。
一般來說公司內部部署的環境一般有三種,生產環境、測試環境、開發環境。有一點很重要的是當我們把災難中的數據拯救回來後,不要以爲就萬事大吉了,一個必須的環節是你需要測試一下拯救回來的數是否都是完整的,以防自己恢復時少了什麼步驟而遺漏要恢復的數據,所以測試環節必須的進行。當然不是說就單單是恢復的數據需要做備份,同樣我們備份的數據也要隨機抽取一些盤,測試我們備份的數據是否是完整的。
這裏有幾個需要注意的要點:
可容忍丟失多少數據;
恢復需要在多長時間內完成;
需要恢復什麼;
下面說說備份類型有哪些?
完全備份,部分備份:
部分備份:僅備份其中的一張表或多張表;
完全備份,增量備份,差異備份
完全備份:對所指定的庫所有數據進行備份
增量備份:僅備份從上次完全備份或增量備份之後變化的數據部分;
差異備份:僅備份從上次完全備份之後變化的數據部分;
熱備份、溫備份和冷備份:根據服務器是否在線分類
熱備份:在線備份,讀寫操作不受影響;
溫備份:在線備份,讀操作可繼續進行,但寫操作不允許;
冷備份:離線備份,數據庫服務器離線,備份期間不能爲業務提供讀寫服務;
MyISAM: 支持溫備
InnoDB: 熱備
從備份時,是實現數據直接導入導出還是直接複製數據文件進行備份,分爲:
物理備份和邏輯備份:
物理備份:直接複製數據文件進行的備份; 物理備份在有些場景下不能跨平臺(Linux下執行的備份不一定能恢復到windows上去);
邏輯備份:從數據庫中“導出”數據另存而進行的備份;支持網絡連接的方式恢復和備份
規則備份時需要考慮的因素:
持鎖的時長
備份過程時長
備份負載
恢復過程時長
備份什麼?
數據、額外的數據(二進制日誌和InnoDB的事務日誌)、代碼(存儲過程和存儲函數、觸發器、事件調度器等)、服務器配置文件
設計備份方案通常都是完全備份加增量備份
一週一次完全備份,每天都進行增量備份
備份工具:
mysqldump: 邏輯備份工具,適用於所有存儲引擎,溫備;完全備份,部分備份;對InnoDB存儲引擎支持熱備;(增量備份時,只需要備份從完全備份後的二進制日誌)
cp, tar等文件系統工具:物理備份工具,適用於所有存儲引擎;冷備;完全備份,部分備份;
lvm2的快照:幾乎熱備;藉助於文件系統工具實現物理備份;
mysqlhotcopy : 幾乎冷備;僅適用於MyISAM存儲引擎;
備份方案之備份工具的選擇:
mysqldump+binlog(主要用來基於時間點還原): mysqldump:完全備份,通過備份二進制日誌實現增量備份;
lvm2快照+binlog:幾乎熱備,物理備份
xtrabackup:
對InnoDB:熱備,支持完全備份和增量備份(不是通過備份二進制日誌實現的,其自身會實現增量備份),都屬於物理備份
對MyISAM引擎:溫備,只支持完全備份