本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)庫實(shí)時(shí)備份方法。
背景技術(shù):
實(shí)時(shí)備份是指實(shí)時(shí)地對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行備份的方式。相對(duì)于傳統(tǒng)定時(shí)備份的方式,實(shí)時(shí)備份可以達(dá)到極小的rpo(recoverypointobjective),最大程度上避免由于故障導(dǎo)致的數(shù)據(jù)丟失。
目前市場(chǎng)上廣泛使用的實(shí)時(shí)備份方式是cdp(continuousdataprotection,也稱連續(xù)數(shù)據(jù)保護(hù))。這種備份方式主要通過在硬件層面或操作系統(tǒng)驅(qū)動(dòng)程序?qū)用娌东@磁盤的寫操作,然后立即將捕獲到的變化數(shù)據(jù)保存到備份設(shè)備上。
這種方式存在以下一些問題:
監(jiān)控及備份的粒度太大,由于cdp實(shí)現(xiàn)在硬件或系統(tǒng)驅(qū)動(dòng)層面,因此其捕獲磁盤寫操作的粒度最小只能到卷級(jí)別,捕獲的數(shù)據(jù)不僅包含所有數(shù)據(jù)文件和日志文件,還包括同個(gè)卷上寫入的其它數(shù)據(jù),對(duì)帶寬和存儲(chǔ)設(shè)備的空間、性能都有較高要求。
穩(wěn)定性存在隱患,無論軟硬件驅(qū)動(dòng)的實(shí)現(xiàn)方式,發(fā)生問題都直接影響操作系統(tǒng)的正常運(yùn)行,甚至可能造成業(yè)務(wù)停擺、數(shù)據(jù)丟失。同時(shí)由于備份的粒度較大,備份系統(tǒng)如果性能達(dá)不到要求也可能影響業(yè)務(wù)系統(tǒng)的性能。
兼容性不好,不同操作系統(tǒng)的驅(qū)動(dòng)實(shí)現(xiàn)方式完全不同,甚至不同操作系統(tǒng)版本的驅(qū)動(dòng)接口都有差異。而硬件方式也可能與操作系統(tǒng)不能完全兼容。
大部分并非真正“連續(xù)”,大部分cdp實(shí)現(xiàn)都只能對(duì)備份數(shù)據(jù)定時(shí)做快照,快照的數(shù)量是有限的,恢復(fù)時(shí)只能恢復(fù)到某個(gè)快照點(diǎn),而無法恢復(fù)到任意“連續(xù)”的時(shí)間點(diǎn)。
成本較高,如前面所述,由于對(duì)帶寬、備份設(shè)備存儲(chǔ)空間、性能等有較高要求,而且兼容性不好導(dǎo)致需要對(duì)每個(gè)操作系統(tǒng)及版本進(jìn)行單獨(dú)開發(fā)和維護(hù),總體成本較高。
眾所周知,數(shù)據(jù)庫的事務(wù)需要保證acid(atomicity,consistency,isolation,durability)特性。為了實(shí)現(xiàn)這一目標(biāo)的同時(shí)保證io的效率,主流數(shù)據(jù)庫均使用wal(writeaheadlogging)的方式提交事務(wù)。具體地說,就是提交事務(wù)時(shí),數(shù)據(jù)庫管理系統(tǒng)先將事務(wù)執(zhí)行的操作以線性的方式記錄到事務(wù)日志中,并把事務(wù)日志寫入磁盤,而事務(wù)對(duì)數(shù)據(jù)文件修改產(chǎn)生的修改數(shù)據(jù)仍保留在內(nèi)存中(在以后合適的時(shí)間再寫入磁盤)。通常該過程的io數(shù)據(jù)量較小,所以既保證了事務(wù)的持久性,又不會(huì)對(duì)數(shù)據(jù)庫性能造成明顯的影響。當(dāng)發(fā)生系統(tǒng)故障后,數(shù)據(jù)庫管理系統(tǒng)使用事務(wù)日志對(duì)未寫入磁盤的緩存數(shù)據(jù)進(jìn)行重做,保證了數(shù)據(jù)的一致性。
在這個(gè)過程中,事務(wù)日志起了一個(gè)關(guān)鍵作用,這意味著實(shí)時(shí)備份數(shù)據(jù)庫的事務(wù)日志即可實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的實(shí)時(shí)保護(hù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明正是針對(duì)現(xiàn)有技術(shù)存在的不足,提供了一種數(shù)據(jù)庫實(shí)時(shí)備份方法。
為解決上述問題,本發(fā)明所采取的技術(shù)方案如下:
一種數(shù)據(jù)庫實(shí)時(shí)備份方法,通過以下模塊實(shí)現(xiàn):
a、事務(wù)日志監(jiān)控;
該模塊通過操作系統(tǒng)通知方式或輪循方式實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)庫事務(wù)日志的變化,只要數(shù)據(jù)庫管理系統(tǒng)往事務(wù)日志中寫入事務(wù)信息,該模塊即可立即通知事務(wù)日志分析模塊;
在提供文件改變通知機(jī)制的操作系統(tǒng)上,通過獲取系統(tǒng)通知的方式監(jiān)控事務(wù)日志的變化,在其它系統(tǒng)上,通過輪循文件內(nèi)容的方式檢測(cè)事務(wù)日志的變化,無論采用哪種方式,都是基于操作系統(tǒng)之上的,因此不需要任何額外的硬件或驅(qū)動(dòng)程序的支持,對(duì)操作系統(tǒng)沒有任何影響;
b、事務(wù)日志分析;
得到監(jiān)控模塊通知后,該模塊通過解析事務(wù)日志內(nèi)容,捕獲新寫入的事務(wù)數(shù)據(jù),捕獲到的事務(wù)數(shù)據(jù)將由傳輸模塊發(fā)送到備份設(shè)備進(jìn)行存儲(chǔ);
由于不同數(shù)據(jù)庫的事務(wù)日志格式不同,該模塊需要對(duì)每種數(shù)據(jù)庫類型進(jìn)行單獨(dú)處理;
c、傳輸模塊;
將接收到的事務(wù)數(shù)據(jù)發(fā)送到備份設(shè)備,備份設(shè)備是存儲(chǔ)設(shè)備或備份服務(wù)器;
d、恢復(fù)模塊;
在數(shù)據(jù)庫出現(xiàn)故障后,該模塊能夠從備份設(shè)備中讀取備份的事務(wù)數(shù)據(jù),并結(jié)合傳統(tǒng)備份,將數(shù)據(jù)庫恢復(fù)到故障發(fā)生前的任意時(shí)間點(diǎn),精確到每一個(gè)事務(wù)。
本發(fā)明與現(xiàn)有技術(shù)相比較,本發(fā)明的實(shí)施效果如下:
本發(fā)明提供的一種數(shù)據(jù)庫實(shí)時(shí)備份方法,具有以下優(yōu)點(diǎn):
1、細(xì)粒度監(jiān)控及備份。
只監(jiān)控?cái)?shù)據(jù)庫的事務(wù)日志,只備份事務(wù)日志變化的內(nèi)容。相對(duì)cdp監(jiān)控及備份整個(gè)卷的變化數(shù)據(jù),連續(xù)日志備份的備份粒度小了一個(gè)數(shù)量級(jí)以上,無論對(duì)業(yè)務(wù)系統(tǒng)、備份設(shè)備,還是對(duì)網(wǎng)絡(luò)帶寬,都幾乎沒有任何壓力。
2、穩(wěn)定可靠。
如前文所述,對(duì)事務(wù)日志的監(jiān)控基于操作系統(tǒng)之上,不需要額外的硬件或驅(qū)動(dòng)程序支持,不會(huì)對(duì)操作系統(tǒng)產(chǎn)生致命的影響。即使極端情況下軟件進(jìn)程出現(xiàn)崩潰,也不會(huì)對(duì)業(yè)務(wù)系統(tǒng)有任何影響。
3、兼容性好。
只使用操作系統(tǒng)提供的通知機(jī)制或通用的文件操作接口進(jìn)行監(jiān)控,可普遍適用于各種操作系統(tǒng)及版本,并且兼容未來的操作系統(tǒng)版本。
4、實(shí)現(xiàn)真正的“連續(xù)”保護(hù)。
由于實(shí)時(shí)備份了事務(wù)日志,并且通過數(shù)據(jù)庫本身提供的恢復(fù)接口重做事務(wù)達(dá)到恢復(fù)的目的,因此可以恢復(fù)到故障發(fā)生前的任意時(shí)間點(diǎn),精確到每一個(gè)事務(wù)。
5、高效率低成本。
不需要額外硬件,不需要開發(fā)和維護(hù)驅(qū)動(dòng)程序,對(duì)備份設(shè)備和帶寬沒有特別的要求。普通的軟硬件成本即可高效地實(shí)現(xiàn)對(duì)高性能要求的數(shù)據(jù)庫的實(shí)時(shí)備份。
附圖說明
圖1為本發(fā)明提供的一種數(shù)據(jù)庫實(shí)時(shí)備份方法的流程圖。
具體實(shí)施方式
下面將結(jié)合具體的實(shí)施例和附圖來說明本發(fā)明的內(nèi)容。
請(qǐng)參閱圖1,圖1為本發(fā)明提供的一種數(shù)據(jù)庫實(shí)時(shí)備份方法的流程圖。
一種數(shù)據(jù)庫實(shí)時(shí)備份方法,通過以下模塊實(shí)現(xiàn):
a、事務(wù)日志監(jiān)控;
該模塊通過操作系統(tǒng)通知方式或輪循方式實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)庫事務(wù)日志的變化,只要數(shù)據(jù)庫管理系統(tǒng)往事務(wù)日志中寫入事務(wù)信息,該模塊即可立即通知事務(wù)日志分析模塊;
在提供文件改變通知機(jī)制的操作系統(tǒng)上,通過獲取系統(tǒng)通知的方式監(jiān)控事務(wù)日志的變化,在其它系統(tǒng)上,通過輪循文件內(nèi)容的方式檢測(cè)事務(wù)日志的變化,無論采用哪種方式,都是基于操作系統(tǒng)之上的,因此不需要任何額外的硬件或驅(qū)動(dòng)程序的支持,對(duì)操作系統(tǒng)沒有任何影響;
b、事務(wù)日志分析;
得到監(jiān)控模塊通知后,該模塊通過解析事務(wù)日志內(nèi)容,捕獲新寫入的事務(wù)數(shù)據(jù),捕獲到的事務(wù)數(shù)據(jù)將由傳輸模塊發(fā)送到備份設(shè)備進(jìn)行存儲(chǔ);
由于不同數(shù)據(jù)庫的事務(wù)日志格式不同,該模塊需要對(duì)每種數(shù)據(jù)庫類型進(jìn)行單獨(dú)處理,例如oracle使用固定塊大小的方式循環(huán)寫多個(gè)在線日志,而sqlserver在事務(wù)日志文件中包含多個(gè)vlf(virtuallogfiles)的方式,mysql則采用連續(xù)寫二進(jìn)制日志的方式。
c、傳輸模塊;
將接收到的事務(wù)數(shù)據(jù)發(fā)送到備份設(shè)備,備份設(shè)備是存儲(chǔ)設(shè)備或備份服務(wù)器;
d、恢復(fù)模塊;
在數(shù)據(jù)庫出現(xiàn)故障后,該模塊能夠從備份設(shè)備中讀取備份的事務(wù)數(shù)據(jù),并結(jié)合傳統(tǒng)備份,將數(shù)據(jù)庫恢復(fù)到故障發(fā)生前的任意時(shí)間點(diǎn),精確到每一個(gè)事務(wù)。
本發(fā)明提供的一種數(shù)據(jù)庫實(shí)時(shí)備份方法,具有以下優(yōu)點(diǎn):
1、細(xì)粒度監(jiān)控及備份。
只監(jiān)控?cái)?shù)據(jù)庫的事務(wù)日志,只備份事務(wù)日志變化的內(nèi)容。相對(duì)cdp監(jiān)控及備份整個(gè)卷的變化數(shù)據(jù),連續(xù)日志備份的備份粒度小了一個(gè)數(shù)量級(jí)以上,無論對(duì)業(yè)務(wù)系統(tǒng)、備份設(shè)備,還是對(duì)網(wǎng)絡(luò)帶寬,都幾乎沒有任何壓力。
2、穩(wěn)定可靠。
如前文所述,對(duì)事務(wù)日志的監(jiān)控基于操作系統(tǒng)之上,不需要額外的硬件或驅(qū)動(dòng)程序支持,不會(huì)對(duì)操作系統(tǒng)產(chǎn)生致命的影響。即使極端情況下軟件進(jìn)程出現(xiàn)崩潰,也不會(huì)對(duì)業(yè)務(wù)系統(tǒng)有任何影響。
3、兼容性好。
只使用操作系統(tǒng)提供的通知機(jī)制或通用的文件操作接口進(jìn)行監(jiān)控,可普遍適用于各種操作系統(tǒng)及版本,并且兼容未來的操作系統(tǒng)版本。
4、實(shí)現(xiàn)真正的“連續(xù)”保護(hù)。
由于實(shí)時(shí)備份了事務(wù)日志,并且通過數(shù)據(jù)庫本身提供的恢復(fù)接口重做事務(wù)達(dá)到恢復(fù)的目的,因此可以恢復(fù)到故障發(fā)生前的任意時(shí)間點(diǎn),精確到每一個(gè)事務(wù)。
5、高效率低成本。
不需要額外硬件,不需要開發(fā)和維護(hù)驅(qū)動(dòng)程序,對(duì)備份設(shè)備和帶寬沒有特別的要求。普通的軟硬件成本即可高效地實(shí)現(xiàn)對(duì)高性能要求的數(shù)據(jù)庫的實(shí)時(shí)備份。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。