數據庫備份方案
數據庫備份方案
一 為什麽需要備份數據?
在生產環境中我們數據庫可能會遭遇各種各樣的不測從而導致數據丟失, 大概分為以下幾種.
- 硬件故障
- 軟件故障
- 自然災害
- 黑客攻擊
- 誤操作 (占比最大)
所以, 為了在數據丟失之後能夠恢復數據, 我們就需要定期的備份數據, 備份數據的策略要根據不同的應用場景進行定制, 大致有幾個參考數值, 我們可以根據這些數值從而定制符合特定環境中的數據備份策略
- 能夠容忍丟失多少數據
- 恢復數據需要多長時間
- 需要恢復哪一些數據
二 數據的備份類型
數據的備份類型根據內容主要分為以下幾組
- 完全備份
- 部分備份
完全備份指的是備份整個數據集
而部分備份又分為以下兩種
- 增量備份
- 差異備份
增量備份指的是備份自上一次備份以來(增量或完全)以來變化的數據; 特點: 節約空間、還原麻煩
差異備份指的是備份自上一次完全備份以來變化的數據 特點: 浪費空間、還原比增量備份簡單
三 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
進行增量備份或差異備份 - 各大備份方法對比表
備份方法 |
備份速度 |
恢復速度 |
方便程度 |
功能性 |
實用場景 |
引擎支持 |
備份方式 |
Cp |
快 |
快 |
一般,靈活性不高 |
弱 |
數據量不大 |
所有 |
冷備 |
mysqldump |
慢 |
慢 |
一般、可無視存儲引擎的差異 |
一般 |
少量數據 |
所有 |
溫備,對於InnoDB存儲引擎支持熱備 |
lvm2快照 |
快 |
快 |
一般、支持幾乎熱備、速度快 |
一般 |
中小型數據量的備份 |
所有 |
熱備, |
xtrabackup |
較快 |
較快 |
實現innodb熱備、對存儲引擎有要求 |
強大 |
較大規模的備份 |
InnoDB |
熱備 |
六數據庫備份工具設計與實現
數據庫備份工具屬於軟件附屬工具,他應具有按計劃,按任務,可配置,可存儲,可長時間運行的能力。
6.1按計劃
是指在規定的時間條件下執行指定的任務,並且周期性的執行
6.2 按任務
是指將要備份的數據庫一些列操作的定義,他應包括要備份的數據庫相關屬性,如地址,端口,其他參數
6.3 可配置
是指該工具所有運行參數可修改,可增加,可刪除
6.4 可存儲
是指將備份好的數據庫文件存儲到指定地址,如本地或者是上傳到遠程主機
6.5 工具設計
開發一款windows桌面程序,他附屬於配套的mssp平臺,受控於看門狗程序管理。可獨立部署,可以根據配置文件進行工作,並且有自己的工作目錄。並且支持配置文件,mongodb數據庫備份,對不同類型的數據庫,配置文件備份采用插件式設計
6.6 備份方法
本次采用cp備份方法,因為他簡單高效,非常適合公司的軟件產品
數據庫備份方案