初探MySQL資料備份及備份原理

tianxiaoxu發表於2018-09-05

相信通過上一篇文章《資料丟失如當頭棒喝,資料備份重如山!》,很多人對於資料備份的重要性有了深刻的認識,本文將以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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章