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