您好,登錄后才能下訂單哦!
相信通過上一篇文章《數據丟失如當頭棒喝,數據備份重如山!》,很多人對于數據備份的重要性有了深刻的認識,本文將以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++ 編譯的二進制。
圖源網絡
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。