為什么需要備份數據?
在生產環境中我們數據庫可能會遭遇各種各樣的不測從而導致數據丟失, 大概分為以下幾種.
- 硬件故障
- 軟件故障
- 自然災害
- 黑客攻擊
- 誤操作 (占比最大)
所以, 為了在數據丟失之后能夠恢復數據, 我們就需要定期的備份數據, 備份數據的策略要根據不同的應用場景進行定制, 大致有幾個參考數值, 我們可以根據這些數值從而定制符合特定環境中的數據備份策略
- 能夠容忍丟失多少數據
- 恢復數據需要多長時間
- 需要恢復哪一些數據
數據的備份類型
數據的備份類型根據其自身的特性主要分為以下幾組
- 完全備份
- 部分備份
- 完全備份指的是備份整個數據集( 即整個數據庫 )、部分備份指的是備份部分數據集(例如: 只備份一個表)
而部分備份又分為以下兩種
- 增量備份
- 差異備份
- 增量備份指的是備份自上一次備份以來(增量或完全)以來變化的數據; 特點: 節約空間、還原麻煩
- 差異備份指的是備份自上一次完全備份以來變化的數據 特點: 浪費空間、還原比增量備份簡單
示意圖


MySQL備份數據的方式
在MySQl中我們備份數據一般有幾種方式
- 熱備份
- 溫備份
- 冷備份
- 熱備份指的是當數據庫進行備份時, 數據庫的讀寫操作均不是受影響
- 溫備份指的是當數據庫進行備份時, 數據庫的讀操作可以執行, 但是不能執行寫操作
- 冷備份指的是當數據庫進行備份時, 數據庫不能進行讀寫操作, 即數據庫要下線
MySQL中進行不同方式的備份還要考慮存儲引擎是否支持
- MyISAM
- 熱備 ×
- 溫備 √
- 冷備 √
- InnoDB
- 熱備 √
- 溫備 √
- 冷備 √
- 我們在考慮完數據在備份時, 數據庫的運行狀態之后還需要考慮對于MySQL數據庫中數據的備份方式
- 物理備份一般就是通過tar,cp等命令直接打包復制數據庫的數據文件達到備份的效果
- 邏輯備份一般就是通過特定工具從數據庫中導出數據并另存備份(邏輯備份會丟失數據精度)
- 物理備份
- 邏輯備份
備份需要考慮的問題
定制備份策略前, 我們還需要考慮一些問題
我們要備份什么?
一般情況下, 我們需要備份的數據分為以下幾種
- 數據
- 二進制日志, InnoDB事務日志
- 代碼(存儲過程、存儲函數、觸發器、事件調度器)
- 服務器配置文件
備份工具
這里我們列舉出常用的幾種備份工具
mysqldump : 邏輯備份工具, 適用于所有的存儲引擎, 支持溫備、完全備份、部分備份、對于InnoDB存儲引擎支持熱備
cp, tar 等歸檔復制工具: 物理備份工具, 適用于所有的存儲引擎, 冷備、完全備份、部分備份
lvm2 snapshot: 幾乎熱備, 借助文件系統管理工具進行備份
mysqlhotcopy: 名不副實的的一個工具, 幾乎冷備, 僅支持MyISAM存儲引擎
xtrabackup: 一款非常強大的InnoDB/XtraDB熱備工具, 支持完全備份、增量備份, 由percona提供
設計合適的備份策略
針對不同的場景下, 我們應該制定不同的備份策略對數據庫進行備份, 一般情況下, 備份策略一般為以下三種
- 直接cp,tar復制數據庫文件
- mysqldump+復制BIN LOGS
- lvm2快照+復制BIN LOGS
- xtrabackup
以上的幾種解決方案分別針對于不同的場景
- 如果數據量較小, 可以使用第一種方式, 直接復制數據庫文件
- 如果數據量還行, 可以使用第二種方式, 先使用mysqldump對數據庫進行完全備份, 然后定期備份BINARY LOG達到增量備份的效果
- 如果數據量一般, 而又不過分影響業務運行, 可以使用第三種方式, 使用lvm2的快照對數據文件進行備份, 而后定期備份BINARY LOG達到增量備份的效果
- 如果數據量很大, 而又不過分影響業務運行, 可以使用第四種方式, 使用xtrabackup進行完全備份后, 定期使用xtrabackup進行增量備份或差異備份
版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。
發表評論
請登錄后評論...
登錄后才能評論