初探MySQL資料備份及備份原理
相信通過上一篇文章《資料丟失如當頭棒喝,資料備份重如山!》,很多人對於資料備份的重要性有了深刻的認識,本文將以MySQL為例帶大家進一步瞭解資料備份的原理和初步實踐。
根據需求的不同,資料備份的方式也不同,MySQL官方給定的備份方式有三種,分別是冷備、熱備和溫備;如果以備份的資料集為劃分標準,那麼可劃分為完全備份和部分備份;如果是以備份時的介面為劃分標準,那麼可分為物理備份、邏輯備份、完全備份、增量備份和差異備份。
後面兩種備份的分類方式比較容易理解,下面我們著重介紹一下冷備、熱備和溫備。
-
冷備:簡單來說,就是資料必須下線後備份。在備份之前,停止MySQL例項的執行,並且在整個備份過程中,使用者都無法訪問資料庫。
-
熱備:簡單來說,就是資料不離線,讀寫可以正常進行,MySQL例項始終處於執行狀態。
-
溫備:簡單來說,就是全域性施加共享鎖,只能讀,不能寫。在備份過程中,MySQL例項雖然仍是執行的,但是不能進行更新或修改等操作。
資料、配置檔案、程式碼(儲存過程、儲存函式、觸發器)、os相關的配置檔案、複製相關的配置以及二進位制日誌都是我們要備份的物件。那麼問題來了,如何來備份上述這些呢?我們以檔案系統快照(LVM)、邏輯備份工具Mysqldump、Mydumper以及物理備份工具Xtrabackup這四種方案為例,剖析一下MySQL資料備份的原理。
快照備份
快照備份是我們上文提到的熱備份的一種,通過檔案系統支援的快照功能對資料庫進行備份。在MySQL中使用快照備份只需將資料檔案、日誌檔案都放在一個邏輯卷中,並對該邏輯卷快照備份。快照備份傾向於防範誤操作,一旦操作失誤,就可以利用快照恢復到之前的時間點,不過,因為快照只能是在本地,如果磁碟損壞,那麼快照也就損壞,備份也就消失了。
圖源網路
Mysqldump
Mysqldump是MySQL自帶的備份工具,通過create table、drop table和insert into 等SQL語句,將資料庫中的資料匯出成.sql檔案。由於Mysqldump依賴資料庫層的轉換,並不關心底層的儲存引擎,所以適用範圍更廣泛,並且可以在不同MySQL版本之間切換。也同樣是因為此,Mysqldump生成的備份檔案很大、速度較慢,且在備份過程中對資料庫的訪問有較大的影響,不適用於資料量大、業務壓力高的例項。
Mydumper
Mydumper與Mysqldump的原理類似,但其有一個特點就是可以採用多執行緒並行備份,大大提高了資料匯出的速度。該工具由MySQL、Facebook、skysql公司的開發人員一起開發維護,由輕量級C語言開發。據說,執行速度比mysqldump快10倍,支援事務和非事務表的一致性備份、匯出binlog、多執行緒備份、以守護程式的形式工作,定時備份等等。
圖源網路
XtraBackup
XtraBackup可能是現在最為廣泛的備份方式,它是 Percona 公司開發的一個用於 MySQL 資料庫物理熱備的備份工具,支援 MySQl(Oracle)、Percona Server 和 MariaDB,並且全部開源。因為XtraBackup是物理備份,所以其是靠拷貝資料庫檔案和日誌來完成備份,速度更快,其中最主要的工具集是 innobackupex(備份InnoDB表) 和 xtrabackup(備份非InnoDB表),前者是一個 perl 指令碼,後者是 C/C++ 編譯的二進位制。
圖源網路
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31137683/viewspace-2213616/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL資料備份MySql
- Mysql資料庫備份及恢復MySql資料庫
- mysql 資料庫 備份MySql資料庫
- Mysql資料安全備份MySql
- innobackupex 備份MySQL資料庫MySql資料庫
- Dedecms備份的資料檔案位置及備份資料庫的方法資料庫
- mysql資料庫備份命令大全MySql資料庫
- Mysql資料備份和還原MySql
- 備份mysql資料庫報告MySql資料庫
- 1. 備份MySQL資料庫MySql資料庫
- MySQL資料庫的基本備份MySql資料庫
- Mysql資料庫自動備份MySql資料庫
- Mysql資料備份與恢復MySql
- 定時備份MySQL資料庫MySql資料庫
- mysql的冷備份與熱備份MySql
- linux實現mysql資料庫每天自動備份定時備份LinuxMySql資料庫
- oracle資料庫備份之exp增量備份Oracle資料庫
- Mysql備份與恢復(1)---物理備份MySql
- (7) MySQL資料庫備份詳解MySql資料庫
- Mysql定時備份資料指令碼MySql指令碼
- golang實現mysql資料庫備份GolangMySql資料庫
- MySQL資料庫常用的備份方法MySql資料庫
- MySQL的資料備份與還原MySql
- 「MySQL」資料庫備份和還原MySql資料庫
- MySQL:xtrabackup備份MySql
- Mysql備份系列MySql
- Java備份MySQLJavaMySql
- MySQL主從配置及mysqldump備份MySql
- docker 中 MySQL 備份及恢復DockerMySql
- 資料庫備份資料庫
- Rsync 資料備份
- 備份onetab資料
- mongo資料備份Go
- 磁碟資料恢復及備份工具資料恢復
- MySQL備份與主備配置MySql
- Mysql備份與恢復(2)---邏輯備份MySql
- 群暉NAS備份建議及備份方式
- Mysqldump備份說明及資料庫備份指令碼分享-運維筆記MySql資料庫指令碼運維筆記