English

MySQL全方位災備保護 Ⅲ 物(wù)理備份

【編者按:上期我(wǒ)們分(fēn)析和了解了鼎甲對MySQL的邏輯備份。本期我(wǒ)們重點解析鼎甲對MySQL的物(wù)理備份。】

上期回顧:

MySQL全方位災備保護 Ⅰ 應用趨勢

MySQL全方位災備保護 Ⅱ 邏輯備份

在實現MySQL的邏輯備份後,鼎甲即刻投入對MySQL數據庫物(wù)理備份的研究和實現,通過對數據庫文件的備份來提高備份效率和解決鎖表問題。

物(wù)理備份包括了完全備份、增量備份、日志(zhì)備份。

主要是通過定制作業策略來備份MySQL的數據文件和日志(zhì)文件,由于是基于數據文件的複制,所以物(wù)理備份比邏輯備份的速度快很多,而且采用的是熱備份,在備份過程中(zhōng)也減少影響業務系統對數據庫的使用。

DBackup在進行物(wù)理備份時,支持自适應MyISAM、InnoDB等多種存儲引擎,根據不同的引擎來提取對應的文件進行備份。

在MyISAM存儲引擎中(zhōng),每張數據表都有3個文件,分(fēn)别爲表結構定義文件(frm),表索引文件(MYI),表數據文件(MYD)。

對于InnoDB存儲引擎,增加了事務處理、回滾、崩潰修複能力和多版本并發控制的事務安全,數據文件更爲複雜(zá),每個InnoDB都會存在表結構定義文件(frm),而表索引和表數據存放(fàng)在表空間文件【共享表空間文件(ibdata1),獨享表空間(ibd)】中(zhōng),另外(wài)還有相關的日志(zhì)文件(binary log、redo log、undo log、errorlog等)。

在MySQL的物(wù)理備份中(zhōng)包括兩部分(fēn)的備份數據:對數據文件的完全備份和增量備份,對二進制日志(zhì)文件的複制。

這兩部分(fēn)備份數據的備份處理流程不一(yī)樣,需要配置在不同的備份任務中(zhōng)完成。

數據文件備份

DBackup同時支持對InnoDB和MyISAM引擎的數據文件和表數據進行備份,對InnoDB引擎中(zhōng)的數據文件,采用文件複制方式一(yī)頁一(yī)頁地複制InnoDB的數據,而且不鎖定表,在文件複制的過程中(zhōng),需要時刻監控着redo log的變化,一(yī)旦log發生(shēng)變化,就即刻同步添加到事務日志(zhì)文件中(zhōng),直至複制完所有數據文件,才停止對redo log的監控和同步。

完成對ibd文件的備份後,将開(kāi)始對非InnoDB表數據進行備份,包括MyISAM表和InnoDB表結構等信息,需要采用flush tables with lock來獲得一(yī)個讀鎖,保障複制數據的一(yī)緻性位點,複制完成後将進行解鎖。

DBackup對數據文件的備份處理,通過同步事務日志(zhì)信息,并整合到備份集中(zhōng),在進行數據恢複時将保障數據文件和日志(zhì)文件的一(yī)緻性。

而對備份中(zhōng)的加鎖處理,也進行了優化,實現定向備份鎖技術,隻有在備份非InnoDB表數據的時候才啓動加鎖處理,這有效地縮短了備份中(zhōng)的鎖表時間,大(dà)大(dà)降低了因爲數據庫備份對業務服務的中(zhōng)斷影響。

日志(zhì)備份

日志(zhì)備份是對二進制日志(zhì)(binary log)文件的定制備份,二進制日志(zhì)文件用來記錄所有用戶對數據庫操作,即記錄用戶對數據庫操作的sql語句。

binary log的文件有兩種類型:index文件有.index的後綴;log文件用.NNNNNN後綴命名,如mysql-bin.000001等。

對二進制日志(zhì)文件的備份,首先需要啓動開(kāi)啓 MySQL 的二進制日志(zhì)記錄,常規的啓動方式是需要在MySQL的服務器上,通過後台指令輸入來進行配置啓動。

DBackup爲了簡化配置流程,提升用戶使用感知(zhī),把二進制日志(zhì)的啓動設置,整合到前台的配置頁面中(zhōng),用戶隻需做簡單配置後即可啓動。

物(wù)理備份的實現,雖然提升了MySQL的備份效率,且降低了備份過程中(zhōng)對業務訪問數據的影響。

但由于備份是定時策略,無法做到密集型的備份,也就是在災難恢複時,會丢失上次備份到故障點發生(shēng)之間的數據。

爲了提升數據恢複的RPO,鼎甲開(kāi)始MySQL連續日志(zhì)實時保護的研究和實現。

下(xià)期預告:MySQL全方位災備保護 Ⅳ 連續日志(zhì)備份


聯系我(wǒ)們