本發(fā)明涉及數(shù)據(jù)處理技術(shù),具體的講是一種數(shù)據(jù)災(zāi)備裝置、系統(tǒng)及方法。
背景技術(shù):
數(shù)據(jù)庫系統(tǒng)是當(dāng)前大多數(shù)企業(yè)級信息化系統(tǒng)的核心組成部分,維護著對于企業(yè)生產(chǎn)經(jīng)營至關(guān)重要的數(shù)據(jù)信息。可能發(fā)生的系統(tǒng)故障、存儲故障和網(wǎng)絡(luò)故障等引起的數(shù)據(jù)庫系統(tǒng)中斷,如果缺少完善的保護方案,將會造成業(yè)務(wù)運行中斷和數(shù)據(jù)丟失,對企業(yè)經(jīng)營和聲譽等將會造成重大損失。尤其是金融、通訊、國防等行業(yè),對于數(shù)據(jù)庫系統(tǒng)有著很高的可用性、可靠性和連續(xù)性運行等要求,往往需要建立數(shù)據(jù)庫的災(zāi)難備份和恢復(fù)系統(tǒng),以盡量減少生產(chǎn)故障所帶來的運行中斷和數(shù)據(jù)丟失。
災(zāi)備系統(tǒng)主要采用主備系統(tǒng)的形式,即部署主、備兩個節(jié)點,在主節(jié)點發(fā)生故障時快速切換至備用節(jié)點;目前,一些災(zāi)備系統(tǒng)也有采用雙活的形式,即兩個節(jié)點同時提供服務(wù),互為備份,在其中某一節(jié)點發(fā)生故障時可以快速切換至另一節(jié)點。由于多節(jié)點之間數(shù)據(jù)同步的需求,一般企業(yè)往往采用同城災(zāi)備的形式。而對于金融等行業(yè)來說,為了進一步提高系統(tǒng)抵御災(zāi)難事件的能力,在地震、核打擊等極端災(zāi)難條件下仍能對外提供連續(xù)服務(wù),則要求系統(tǒng)實施異地災(zāi)備。以銀行業(yè)為例,目前基于國內(nèi)銀行業(yè)監(jiān)管機構(gòu)制定的系統(tǒng)災(zāi)難備份相關(guān)標(biāo)準(zhǔn)的要求,“兩地多中心”已逐步成為國內(nèi)銀行廣泛采用的災(zāi)備建設(shè)模式。在生產(chǎn)環(huán)境失效時,優(yōu)先進行同城中心的切換;而在極端災(zāi)難導(dǎo)致的同城多中心同時失效時,可以切換至異地的災(zāi)備中心重新開展業(yè)務(wù)。異地災(zāi)備的存在,可以最大程序的保障業(yè)務(wù)的連續(xù)運行。
對于災(zāi)備恢復(fù)中重要的RPO(Recovery Point Objective,復(fù)原點目標(biāo))指標(biāo)來說,同城災(zāi)備很容易達到RPO=0的目標(biāo)。而目前的異地災(zāi)備,面臨的主要問題就是在災(zāi)難恢復(fù)時很難做到數(shù)據(jù)的零丟失恢復(fù)。在災(zāi)難發(fā)生時,由于物理距離和網(wǎng)絡(luò)延時的存在,主生產(chǎn)節(jié)點最新的數(shù)據(jù)很難及時地同步到異地災(zāi)備環(huán)境中,從而導(dǎo)致這部分?jǐn)?shù)據(jù)在災(zāi)備環(huán)境恢復(fù)后被丟失。
技術(shù)實現(xiàn)要素:
為了實現(xiàn)異地災(zāi)備數(shù)據(jù)恢復(fù)零丟失,克服現(xiàn)有大型數(shù)據(jù)庫系統(tǒng)異地災(zāi)備和恢復(fù)技術(shù)上的不足,本發(fā)明實施例提供了一種數(shù)據(jù)災(zāi)備裝置包括:
應(yīng)用操作日志生成模塊,用于根據(jù)應(yīng)用服務(wù)器對數(shù)據(jù)庫服務(wù)器的操作同步生成應(yīng)用操作日志;
日志存儲器,用于存儲所述應(yīng)用操作日志;
備數(shù)據(jù)庫模塊,用于對數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)庫數(shù)據(jù)進行備份。
本發(fā)明實施例中,數(shù)據(jù)災(zāi)備裝置還包括:
恢復(fù)模塊,用于根據(jù)所述應(yīng)用操作日志和備份的數(shù)據(jù)庫數(shù)據(jù)生成恢復(fù)數(shù)據(jù)。
同時,本發(fā)明還提供一種數(shù)據(jù)災(zāi)備系統(tǒng),包括:應(yīng)用服務(wù)器,應(yīng)用日志服務(wù)器以及備數(shù)據(jù)庫服務(wù)器,所述應(yīng)用日志服務(wù)器和備數(shù)據(jù)庫設(shè)置于災(zāi)備中心;其中,
所述的應(yīng)用服務(wù)器包括:
應(yīng)用操作日志生成模塊,用于根據(jù)應(yīng)用服務(wù)器對數(shù)據(jù)庫服務(wù)器的操作同步生成應(yīng)用操作日志;
所述的應(yīng)用日志服務(wù)器,用于存儲所述應(yīng)用操作日志;
備數(shù)據(jù)庫服務(wù)器,用于對數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)庫數(shù)據(jù)進行備份。
本發(fā)明實施例中,數(shù)據(jù)災(zāi)備系統(tǒng)還包括:
備應(yīng)用服務(wù)器,用于根據(jù)所述應(yīng)用操作日志和備份的數(shù)據(jù)庫數(shù)據(jù)生成恢復(fù)數(shù)據(jù)。
進一步,本發(fā)明還提供一種數(shù)據(jù)災(zāi)備方法,包括:
根據(jù)應(yīng)用服務(wù)器對數(shù)據(jù)庫服務(wù)器的操作同步生成應(yīng)用操作日志;
將所述應(yīng)用操作日志傳輸至災(zāi)備中心并存儲所述應(yīng)用操作日志;
對數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)庫數(shù)據(jù)進行備份。
本發(fā)明實施例中,數(shù)據(jù)災(zāi)備方法還包括:
根據(jù)所述應(yīng)用操作日志和備份的數(shù)據(jù)庫數(shù)據(jù)生成恢復(fù)數(shù)據(jù)。
本發(fā)明實施例中,所述的應(yīng)用服務(wù)器對數(shù)據(jù)庫的操作包括:應(yīng)用服務(wù)器對數(shù)據(jù)庫服務(wù)器進行的包括增加、刪除、修改的DML操作指令。
本發(fā)明實施例中,所述的數(shù)據(jù)庫服務(wù)器通過遠程異步復(fù)制將所述數(shù)據(jù)庫數(shù)據(jù)備份到備數(shù)據(jù)庫模塊。
本發(fā)明實施例中,所述的應(yīng)用操作日志為純文本數(shù)據(jù)。
本發(fā)明實施例中,所述的應(yīng)用操作日志其內(nèi)容包括:應(yīng)用服務(wù)器對數(shù)據(jù)庫服務(wù)器操作的指令、參數(shù)以及執(zhí)行結(jié)果。
本發(fā)明充分利用了底層磁盤級數(shù)據(jù)同步和應(yīng)用級日志恢復(fù)的優(yōu)點,將消耗資源的計算和處理等工作放在災(zāi)備服務(wù)器上來進行,最大程度地減少了網(wǎng)絡(luò)傳輸和延遲,減輕了對主服務(wù)器生產(chǎn)的負(fù)擔(dān),并且相比較現(xiàn)有技術(shù)中數(shù)據(jù)庫日志級的傳輸,本發(fā)明中應(yīng)用級日志傳輸數(shù)據(jù)量要小一個數(shù)量級,因此,帶來網(wǎng)絡(luò)傳輸數(shù)據(jù)量少,延時短。
為讓本發(fā)明的上述和其他目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附圖式,作詳細(xì)說明如下。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為基于磁盤級的數(shù)據(jù)同步和恢復(fù)架構(gòu);
圖2為數(shù)據(jù)庫級的數(shù)據(jù)同步和恢復(fù)架構(gòu);
圖3為基于數(shù)據(jù)庫日志的同步架構(gòu);
圖4為本發(fā)明公開的一種數(shù)據(jù)災(zāi)備裝置的框圖;
圖5為本發(fā)明公開的數(shù)據(jù)災(zāi)備系統(tǒng)的示意圖;
圖6為本發(fā)明公開的一種數(shù)據(jù)災(zāi)備方法的流程圖;
圖7為本發(fā)明實施例中的災(zāi)備系統(tǒng)的總體架構(gòu);
圖8為本發(fā)明實施例中應(yīng)用日志的功能模塊框圖;
圖9為本發(fā)明實施例中公開的數(shù)據(jù)備份和恢復(fù)流程圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
現(xiàn)有技術(shù)的數(shù)據(jù)庫災(zāi)備恢復(fù)技術(shù)有兩類:基于磁盤級的數(shù)據(jù)恢復(fù)和基于數(shù)據(jù)庫級的數(shù)據(jù)恢復(fù)。
其中,基于磁盤級的數(shù)據(jù)恢復(fù)技術(shù),從存儲層提供數(shù)據(jù)保護,其部署架構(gòu)如圖1所示。通過在主、備站點分別部署數(shù)據(jù)庫服務(wù)器和磁盤陣列,主、備的磁盤陣列通過光纖相連,并通過磁盤復(fù)制進行數(shù)據(jù)同步。當(dāng)發(fā)生主站點故障時,可以通過啟動備站點的數(shù)據(jù)庫服務(wù)器來提供業(yè)務(wù)系統(tǒng)訪問,從而保證系統(tǒng)的高可用性。磁盤級同步基于底層的磁盤掃描,技術(shù)實現(xiàn)簡單,穩(wěn)定可靠。但其缺點也是顯而易見的:磁盤復(fù)制量大,占用大量服務(wù)器資源,對主站點的性能產(chǎn)生較大影響;數(shù)據(jù)傳輸量大,占用較大的網(wǎng)絡(luò)資源,帶來不可避免的網(wǎng)絡(luò)延遲。
而基于數(shù)據(jù)庫級的數(shù)據(jù)恢復(fù)技術(shù),其主要架構(gòu)如圖2所示。該技術(shù)主要通過將數(shù)據(jù)庫級的日志文件從主數(shù)據(jù)庫傳送至備數(shù)據(jù)庫,備數(shù)據(jù)庫的接收進程將日志流寫入備日志文件或歸檔日志文件,備數(shù)據(jù)庫服務(wù)器進程再通過加載日志來更新數(shù)據(jù)文件,從而實現(xiàn)主、備數(shù)據(jù)庫的數(shù)據(jù)同步。該方法主要有同步和異步兩種模式。同步是確認(rèn)日志傳送備數(shù)據(jù)庫成功后才返回事務(wù)完成標(biāo)示,從而確保主備數(shù)據(jù)一致,但此種模式對主數(shù)據(jù)庫交易影響嚴(yán)重。異步模式主數(shù)據(jù)庫交易不等待日志文件同步,避免了對主數(shù)據(jù)庫的影響,但同步時點是在主數(shù)據(jù)庫聯(lián)機日志切換至歸檔時發(fā)生,延遲較大。
與磁盤級同步相比,數(shù)據(jù)庫級同步磁盤復(fù)制量和數(shù)據(jù)傳輸量都有所減少,但仍存在較大的服務(wù)器和網(wǎng)絡(luò)壓力,以數(shù)據(jù)庫級同步的典型技術(shù),Oracle DataGuard而言,建議的實施場景仍然在百公里級以內(nèi)的同城災(zāi)備,網(wǎng)絡(luò)延時在3毫秒以內(nèi),可以實現(xiàn)RPO=0的目標(biāo);而對于千公里級的異地災(zāi)備,如果強制設(shè)定RPO=0的目標(biāo),則會對主生產(chǎn)系統(tǒng)和網(wǎng)絡(luò)帶來嚴(yán)重的影響。
現(xiàn)有技術(shù)中,也有基于數(shù)據(jù)庫級同步,獨立于數(shù)據(jù)庫系統(tǒng)之外,單獨搭建用于實時同步數(shù)據(jù)庫聯(lián)機日志的服務(wù)器。其部署架構(gòu)如圖3所示。這種方法避免歸檔日志的延遲和對數(shù)據(jù)庫本身的資源占用,可以很好地應(yīng)用于同城備份。但數(shù)據(jù)庫級日志傳輸量仍然偏大,用于異地災(zāi)備環(huán)境時資源消耗壓力較大。同時,數(shù)據(jù)庫級日志同步將所有數(shù)據(jù)變動進行同步,無法從業(yè)務(wù)級別進行控制。實踐中,數(shù)據(jù)庫日志中有很大部分是臨時表或日志表的操作,而無法在業(yè)務(wù)級別上對核心流程上的數(shù)據(jù)進行優(yōu)先保證。
綜上所述,目前的數(shù)據(jù)災(zāi)備恢復(fù)技術(shù)存在以下問題:
數(shù)據(jù)復(fù)制量大,對原有主系統(tǒng)帶來較大的資源消耗;
數(shù)據(jù)傳輸量大,占用較大的網(wǎng)絡(luò)資源,加大了網(wǎng)絡(luò)負(fù)擔(dān)和延時。
在同城災(zāi)備環(huán)境下可以實現(xiàn)RPO=0的目標(biāo),但在異地災(zāi)備環(huán)境下RPO較大,有數(shù)據(jù)丟失。如果強制要求RPO=0,則會對主系統(tǒng)和網(wǎng)絡(luò)帶來嚴(yán)重影響。
在整個磁盤級或數(shù)據(jù)庫級實現(xiàn),無法做到應(yīng)用級業(yè)務(wù)的靈活控制,無法實現(xiàn)在災(zāi)備的特殊場景下對指定核心業(yè)務(wù)的優(yōu)先保證。
針對目前在異地災(zāi)備恢復(fù)的場景下非常常見的數(shù)據(jù)丟失(RPO>0)問題,迫切需要一種能實現(xiàn)RPO=0,同時對主系統(tǒng)影響小、主系統(tǒng)資源和網(wǎng)絡(luò)占用少的技術(shù),同時滿足易實現(xiàn),可操作性高,靈活可配置等要求。鑒于目前單單從磁盤級或數(shù)據(jù)庫級入手已很難滿足所有指標(biāo),因此有必要從應(yīng)用層面入手,應(yīng)用層與底層相結(jié)合,充分利用各自優(yōu)點,來解決在遠程異地災(zāi)備條件下的數(shù)據(jù)恢復(fù)問題。
本發(fā)明提供一種數(shù)據(jù)災(zāi)備裝置,如圖4所示,該裝置包括:
應(yīng)用操作日志生成模塊401,用于根據(jù)應(yīng)用服務(wù)器對數(shù)據(jù)庫服務(wù)器的操作同步生成應(yīng)用操作日志;
日志存儲器402,用于存儲所述應(yīng)用操作日志;
備數(shù)據(jù)庫模塊403,用于對數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)庫數(shù)據(jù)進行備份。
本發(fā)明實施例中,數(shù)據(jù)災(zāi)備裝置還包括:
恢復(fù)模塊404,用于根據(jù)所述應(yīng)用操作日志和備份的數(shù)據(jù)庫數(shù)據(jù)生成恢復(fù)數(shù)據(jù)。
同時,本發(fā)明還提供一種數(shù)據(jù)災(zāi)備系統(tǒng),如圖5所示,該系統(tǒng)包括:應(yīng)用服務(wù)器501,應(yīng)用日志服務(wù)器502以及備數(shù)據(jù)庫服務(wù)器503,所述應(yīng)用日志服務(wù)器502和備數(shù)據(jù)庫503設(shè)置于災(zāi)備中心;其中,
所述的應(yīng)用服務(wù)器包括:
應(yīng)用操作日志生成模塊,用于根據(jù)應(yīng)用服務(wù)器501對數(shù)據(jù)庫服務(wù)器504的操作同步生成應(yīng)用操作日志;
所述的應(yīng)用日志服務(wù)器,用于存儲所述應(yīng)用操作日志;
備數(shù)據(jù)庫服務(wù)器,用于對數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)庫數(shù)據(jù)進行備份。
本發(fā)明實施例中,數(shù)據(jù)災(zāi)備系統(tǒng)還包括:
備應(yīng)用服務(wù)器,用于根據(jù)所述應(yīng)用操作日志和備份的數(shù)據(jù)庫數(shù)據(jù)生成恢復(fù)數(shù)據(jù)。
進一步,本發(fā)明還提供一種數(shù)據(jù)災(zāi)備方法,如圖6所示,該方法包括:
步驟S601,根據(jù)應(yīng)用服務(wù)器對數(shù)據(jù)庫服務(wù)器的操作同步生成應(yīng)用操作日志;
步驟S602,將所述應(yīng)用操作日志傳輸至災(zāi)備中心并存儲所述應(yīng)用操作日志;
步驟S603,對數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)庫數(shù)據(jù)進行備份。
本發(fā)明實施例中,數(shù)據(jù)災(zāi)備方法還包括:
根據(jù)所述應(yīng)用操作日志和備份的數(shù)據(jù)庫數(shù)據(jù)生成恢復(fù)數(shù)據(jù)。
本發(fā)明實施例中,所述的應(yīng)用服務(wù)器對數(shù)據(jù)庫的操作包括:應(yīng)用服務(wù)器對數(shù)據(jù)庫服務(wù)器進行的包括增加、刪除、修改的DML操作指令。
本發(fā)明實施例中,所述的數(shù)據(jù)庫服務(wù)器通過遠程異步復(fù)制將所述數(shù)據(jù)庫數(shù)據(jù)備份到備數(shù)據(jù)庫模塊。
本發(fā)明實施例中,所述的應(yīng)用操作日志為純文本數(shù)據(jù)。
本發(fā)明提出了基于應(yīng)用級日志的數(shù)據(jù)恢復(fù)系統(tǒng)及方法。結(jié)合了底層磁盤級數(shù)據(jù)恢復(fù)和應(yīng)用級日志的優(yōu)點,克服了現(xiàn)有大型數(shù)據(jù)庫系統(tǒng)異地災(zāi)備和恢復(fù)技術(shù)上不足,提出了一種能支持?jǐn)?shù)據(jù)庫跨千公里級的異地災(zāi)備恢復(fù)過程中數(shù)據(jù)零丟失目標(biāo)的新技術(shù)。該技術(shù)在實現(xiàn)異地災(zāi)備系統(tǒng)RPO=0的同時,對主系統(tǒng)和網(wǎng)絡(luò)資源并不會帶來明顯的額外負(fù)擔(dān)。該技術(shù)所提出的底層磁盤級復(fù)制加頂層應(yīng)用級日志相結(jié)合的思路,也可用于其他大型信息化系統(tǒng)災(zāi)難備份和恢復(fù)機制設(shè)計時的參考。
本發(fā)明實施例以現(xiàn)有磁盤級的HUR等異步遠程復(fù)制技術(shù)為基礎(chǔ),增加使用應(yīng)用級的數(shù)據(jù)庫操作日志,用來恢復(fù)磁盤復(fù)制技術(shù)所造成的分鐘級別的數(shù)據(jù)差。通過磁盤級別的數(shù)據(jù)同步和應(yīng)用日志相結(jié)合,充分利用兩種方式的優(yōu)點,在恢復(fù)過程中把主要的數(shù)據(jù)處理、計算資源消耗等,放在災(zāi)備服務(wù)器端進行,最大程度減少了主系統(tǒng)資源消耗和網(wǎng)絡(luò)帶寬占用,同時,由于應(yīng)用日志恢復(fù)機制的存在,對磁盤級復(fù)制的實時性依賴降低,可以有效降低磁盤級復(fù)制的實時級別,以減輕HUR磁盤復(fù)制的資源消耗。本發(fā)明基于底層磁盤復(fù)制的全量和穩(wěn)定等優(yōu)點,結(jié)合應(yīng)用級日志的輕量和靈活,保障了數(shù)據(jù)完整恢復(fù)的同時,有效克服了現(xiàn)有同步技術(shù)所帶來的數(shù)據(jù)延遲大和資源消耗高等問題。
本發(fā)明使得數(shù)據(jù)庫系統(tǒng)可以在實施千里級別以上的異地災(zāi)備方案的同時,能夠?qū)崿F(xiàn)災(zāi)難恢復(fù)中RPO=0,從而極大的提升了數(shù)據(jù)庫異地災(zāi)備系統(tǒng)的RPO指標(biāo),進一步提高了整個企業(yè)信息化系統(tǒng)的高可用性和業(yè)務(wù)連續(xù)性。
下面結(jié)合具體的實施例對本發(fā)明技術(shù)方案做進一步詳細(xì)說明,本發(fā)明實施例的技術(shù)思路是在應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器之間,搭建專門的應(yīng)用日志服務(wù)器,用于記錄應(yīng)用服務(wù)器訪問數(shù)據(jù)庫時的操作日志。結(jié)合底層的磁盤復(fù)制技術(shù),該發(fā)明對于災(zāi)難備份和恢復(fù)。本實施例進行災(zāi)備和恢復(fù)的主要過程為:
1.在日常備份時,由磁盤復(fù)制同步主要數(shù)據(jù),而應(yīng)用日志實時記錄當(dāng)前應(yīng)用的數(shù)據(jù)庫操作,日志空間循環(huán)使用。
2.在災(zāi)難恢復(fù)時,先啟用磁盤備份恢復(fù)整體系統(tǒng),然后對于磁盤同步中斷的時間點之后的所有數(shù)據(jù)庫操作,自動重新執(zhí)行應(yīng)用日志中的記錄,達到完整恢復(fù)數(shù)據(jù)的目的。
本實施例的系統(tǒng)總體架構(gòu)如圖7所示,本發(fā)明提出的基于應(yīng)用級日志的數(shù)據(jù)恢復(fù)系統(tǒng)包括:日志記錄部分、底層磁盤文件同步部分和日志恢復(fù)部分。
首先,在日志記錄部分,由于業(yè)務(wù)對于數(shù)據(jù)庫的操作,都是通過中間層的應(yīng)用服務(wù)器App來進行的,記錄了應(yīng)用服務(wù)器對于數(shù)據(jù)庫DB的操作日志,便可以保證對于數(shù)據(jù)變化的完整記錄。日志僅記錄應(yīng)用服務(wù)器對數(shù)據(jù)庫服務(wù)器的增、刪、改等DML操作指令,對于大量的查詢等不修改數(shù)據(jù)的操作并不做記錄。按照災(zāi)備恢復(fù)的要求,應(yīng)用日志服務(wù)器AppLog物理上將位于災(zāi)備中心,應(yīng)用服務(wù)器遠程記錄。但由于需要記錄的應(yīng)用日志內(nèi)容極少,僅包括操作的指令、參數(shù)和執(zhí)行結(jié)果等,為純文本信息,由此產(chǎn)生的網(wǎng)絡(luò)延遲幾乎可以忽略。應(yīng)用日志主要用來補充底層磁盤所造成的短時數(shù)據(jù)丟失,因此日志空間可以做到循環(huán)使用,以減少磁盤占用。
其次,底層的磁盤同步部分,遠程異地災(zāi)備環(huán)境中,搭建一套數(shù)據(jù)庫的災(zāi)備庫。主系統(tǒng)數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)文件所在磁盤Disk與災(zāi)備庫磁盤Disk_B之間,通過常規(guī)的遠程異步復(fù)制技術(shù)進行數(shù)據(jù)的同步。本實施例以HDS公司最新的磁盤復(fù)制技術(shù)HUR為例,但本發(fā)明的技術(shù)方案并不依賴于特定的磁盤遠程復(fù)制技術(shù)。與傳統(tǒng)磁盤復(fù)制技術(shù)相比,HUR主要特點在于不是將數(shù)據(jù)從生產(chǎn)中心推向災(zāi)備中心,而是將其吸拉到災(zāi)備中心。在這種方式下,所有的性能損耗都集中在災(zāi)備中心一端,進一步減少對生產(chǎn)中心性能的影響。HUR廣泛應(yīng)用于遠程環(huán)境中的災(zāi)備,能同步磁盤全量數(shù)據(jù),穩(wěn)定可靠。但HUR并不能保證數(shù)據(jù)的實施同步,在千公里級別的實踐中,將會有10秒-5分鐘之間的數(shù)據(jù)延遲。
在災(zāi)難恢復(fù)時,首先使用災(zāi)備磁盤Disk_B重新啟動備用數(shù)據(jù)庫DB_B服務(wù)器。此時,由于HUR本身的延時,備數(shù)據(jù)庫DB_B與主數(shù)據(jù)庫DB之間會存在一定數(shù)據(jù)差異:(DB-DB_B)。而由于應(yīng)用日志之間的延時要遠遠小于底層磁盤級的HUR同步延時,因此,在主庫上執(zhí)行成功的最新數(shù)據(jù)庫操作,其應(yīng)用日志已經(jīng)同步傳輸至災(zāi)備中心的應(yīng)用日志服務(wù)器AppLog上。重新在備庫DB_B執(zhí)行一遍自HUR同步中斷時間點之后所有的日志內(nèi)容,可以將缺少的數(shù)據(jù)進行補充,使得DB_B達到與災(zāi)難前的DB數(shù)據(jù)一致的目的。之后備用的應(yīng)用服務(wù)器App_B連接上DB_B之外,可以重新對外提供服務(wù)。在這個過程中,DB_B最終實現(xiàn)了與DB的一致,即RPO=0。
在這個架構(gòu)中,日?;顒拥墓?jié)點包括生產(chǎn)中心的App服務(wù)器、DB服務(wù)器、磁盤Disk,災(zāi)備中心的應(yīng)用日志AppLog服務(wù)器、災(zāi)備磁盤Disk_B,以及HUR同步和日志同步機制;在災(zāi)難恢復(fù)過程中需要使用到的節(jié)點包括災(zāi)備中心的磁盤Disk_B、DB_B服務(wù)器和應(yīng)用日志AppLog;在災(zāi)難恢復(fù)后的對外服務(wù)中,災(zāi)備中心的App_B服務(wù)器、DB_B服務(wù)器、磁盤Disk_B將共同提供服務(wù)。
本實施例整體方案充分利用了底層磁盤同步和上層應(yīng)用層同步的優(yōu)點,就底層同步技術(shù)而言,全量的數(shù)據(jù)同步,技術(shù)成熟而穩(wěn)定;而應(yīng)用日志輕量級的傳輸,網(wǎng)絡(luò)延時極小,靈活易配置。在保證了可靠的異地災(zāi)備介質(zhì)的同時,又彌補了底層全量數(shù)據(jù)同步所帶來的延時。應(yīng)用級日志僅記錄操作數(shù)據(jù)庫時所發(fā)出的指令,而將最主要的數(shù)據(jù)處理和計算仍然放在了服務(wù)器端來進行,極大地減少了數(shù)據(jù)傳輸和處理量,是本發(fā)明的一個創(chuàng)新點。
以實際應(yīng)用場景為例,應(yīng)用服務(wù)器發(fā)起了一筆根據(jù)批次號進行批量更新指令的操作,應(yīng)用級只記錄下這條命令、參數(shù)及其執(zhí)行結(jié)果即可;對應(yīng)到數(shù)據(jù)庫級別,可能涉及到多張表的數(shù)十條記錄的插入和更新等,數(shù)據(jù)庫級別歸檔日志需要對這10多張表的update、insert語句全部做記錄和同步;磁盤級的同步需要掃描涉及到的數(shù)據(jù)文件的變動做同步。需要同步的數(shù)據(jù)量級別呈現(xiàn)依次增加的趨勢。
從表1的對比分析中,也可以看出在各級別進行遠程異地同步時各主要技術(shù)指標(biāo)的差異:
表1:應(yīng)用級別與數(shù)據(jù)庫級、磁盤級的對比
本實施例中,應(yīng)用級日志的設(shè)計與實現(xiàn):
本實施例中應(yīng)用日志功能所涉及的總體模塊、子模塊及其關(guān)系見圖8所示。應(yīng)用日志記錄部分主要由日志生成模塊、日志傳輸模塊、日志存儲模塊等組成,應(yīng)用日志恢復(fù)部分涉及日志恢復(fù)模塊,另外,系統(tǒng)包含一個控制與設(shè)置模塊。
1.日志生成模塊位于總體結(jié)構(gòu)的應(yīng)用服務(wù)器端App服務(wù)器,用于在應(yīng)用服務(wù)器程序訪問數(shù)據(jù)庫時,記錄和生產(chǎn)訪問數(shù)據(jù)庫日志內(nèi)容。所述日志生成模塊包括:
日志生成控件子模塊101,用于對原有應(yīng)用程序調(diào)用數(shù)據(jù)庫程序的控件加以改造,形成公用的日志生成控件,在訪問數(shù)據(jù)庫程序時,將相關(guān)調(diào)用內(nèi)容額外記錄下來。
日志格式化子模塊102,根據(jù)之后設(shè)置子模塊502的設(shè)置選項,將日志內(nèi)容進行格式化。日志內(nèi)容主要有:調(diào)用的數(shù)據(jù)庫程序用戶及對象名稱、調(diào)用參數(shù)、執(zhí)行結(jié)果等。各項內(nèi)容以指定的大分隔符間隔,而多項參數(shù)及多個執(zhí)行結(jié)果直接,以指定的小分隔符間隔;形成純文本內(nèi)容。
日志傳輸子模塊103,負(fù)責(zé)將生成的文本內(nèi)容發(fā)送給日志傳輸模塊。
2.日志傳輸模塊用于將應(yīng)用服務(wù)器App生成的應(yīng)用日志,發(fā)送至總體結(jié)構(gòu)圖中位于災(zāi)備中心的日志服務(wù)器AppLog。
異步傳輸隊列子模塊201,用于接收子模塊103中傳輸?shù)膽?yīng)用日志,并放入待發(fā)送的異步傳輸隊列。異步傳輸隊列位于應(yīng)用服務(wù)器上,異步來保證不對正常的交易產(chǎn)生影響,并有發(fā)送超時和溢出等控制。
Socket連接子模塊202,用于建立應(yīng)用服務(wù)器的異步傳輸隊列和遠程日志服務(wù)器上的接收進程之間的網(wǎng)絡(luò)連接和數(shù)據(jù)傳輸,基于TCP的連接保證了傳輸?shù)目煽啃浴?/p>
3.日志存儲模塊位于服務(wù)器AppLog上,用于日志記錄以及日志文件的管理。
日志文件寫入子模塊301,將接收到日志內(nèi)容,及時寫入應(yīng)用服務(wù)器AppLog的指定文件中,日志文件以文本內(nèi)容保存,單行記錄對應(yīng)一筆數(shù)據(jù)庫操作。文件路徑、文件大小、字符集格式等均可由系統(tǒng)設(shè)置子模塊502來設(shè)置。
日志文件管理子模塊302,由于日志文件主要用于災(zāi)備恢復(fù),日常產(chǎn)生的日志文件僅保留最近時間段的即可,過期日志文件由文件管理功能進行歸檔或銷毀。
日志空間重用子模塊303,對于日志空間需要進行循環(huán)和重用,以避免日志文件占用過多的系統(tǒng)空間。
4.日志恢復(fù)模塊用于在災(zāi)備恢復(fù)時,重新執(zhí)行應(yīng)用日志以恢復(fù)磁盤同步所帶來的數(shù)據(jù)丟失。
災(zāi)備庫連接子模塊401:用于建立和維護災(zāi)備恢復(fù)時與災(zāi)備數(shù)據(jù)庫的連接。
日志文件加載子模塊402:首先需要從磁盤同步系統(tǒng)中獲取到磁盤數(shù)據(jù)最后成功同步的時間點,現(xiàn)有磁盤復(fù)制技術(shù)此時間精度均可到毫米以內(nèi)。根據(jù)此時間點,從日志存儲模塊中記錄的日志文件加載同步中斷之后所有的日志記錄。
數(shù)據(jù)庫日志重做子模塊403:這個子模塊是數(shù)據(jù)恢復(fù)的關(guān)鍵,根據(jù)子模塊402中加載的記錄,按照之前的執(zhí)行順序,依次對原主庫上已成功執(zhí)行的數(shù)據(jù)庫操作,在災(zāi)備庫進行重新執(zhí)行,以恢復(fù)同步中斷之后已處理的數(shù)據(jù),并記錄執(zhí)行結(jié)果。
恢復(fù)結(jié)果校驗子模塊404:由于數(shù)據(jù)恢復(fù)的特殊性,需要對數(shù)據(jù)進行必要的校驗。通過對子模塊403的執(zhí)行結(jié)果,以及日志中記錄的原執(zhí)行結(jié)果進行比較,實現(xiàn)校驗的自動化,并對可疑結(jié)果提供報表和人工介入的渠道。
5.控制和設(shè)置模塊用于對整個日志記錄和恢復(fù)系統(tǒng)進行過程控制和系統(tǒng)設(shè)置,其包括以下多個子模塊:
過程控制子模塊501:實現(xiàn)日志記錄過程的可控和可監(jiān)視,通過可視化界面和報表等方式,展示系統(tǒng)運行狀況,資源消耗,空間占用,統(tǒng)計指標(biāo)分析等。
系統(tǒng)設(shè)置子模塊502:主要用于設(shè)置日志記錄和恢復(fù)功能相關(guān)的系統(tǒng)屬性,包括日志格式分割字符、傳輸隊列連接數(shù)、網(wǎng)絡(luò)最大延遲、單個日志文件大小、日志總占用空間、日志保留周期等系統(tǒng)參數(shù)。
恢復(fù)級別設(shè)置子模塊503:專門用于設(shè)置日志記錄和恢復(fù)的級別,本發(fā)明可支持的設(shè)置級別從上至下主要有:
業(yè)務(wù)級:在應(yīng)用級別記錄和恢復(fù)日志的一大好處是可以做到應(yīng)用業(yè)務(wù)層面的控制。考慮到災(zāi)備恢復(fù)的特殊場景,一般要求在很短的時間內(nèi)完成恢復(fù)和重新提供服務(wù)(RTO要求盡量小),全業(yè)務(wù)的數(shù)據(jù)補充恢復(fù)要求更多的核對校驗時間,而要求對關(guān)鍵的核心業(yè)務(wù)做到PRO=0的目標(biāo),以保證有限的資源充分用于保障核心業(yè)務(wù)的持續(xù)運行。在業(yè)務(wù)層可以設(shè)置僅針對某些核心業(yè)務(wù)啟動日志記錄或恢復(fù)功能,以進一步減少負(fù)載和恢復(fù)時的壓力。而基于磁盤層或數(shù)據(jù)庫層的恢復(fù),很難做到業(yè)務(wù)層面的篩選和控制。
數(shù)據(jù)庫級:可針對某幾臺數(shù)據(jù)庫服務(wù)器上的操作啟用該功能,用于過濾對業(yè)務(wù)運行無關(guān)緊要的日志庫等的操作。
應(yīng)用服務(wù)器級:可指定某幾臺關(guān)鍵服務(wù)器開啟記日志功能。例如銀行常見的聯(lián)機和批量交易場景,分別運行于不同的應(yīng)用服務(wù)器上,均有數(shù)據(jù)庫操作。對于批量一般在單獨的批量服務(wù)器運行,如果批量文件還在,整批可以重新運行。但對于聯(lián)機交易服務(wù)器,可以重點恢復(fù)。應(yīng)用服務(wù)器級設(shè)置可以根據(jù)應(yīng)用服務(wù)器用途的不同加以區(qū)分。
系統(tǒng)級:在整個系統(tǒng)可以設(shè)置開關(guān),用于控制日志記錄和恢復(fù)功能的開啟或關(guān)閉。
如圖9所示,本發(fā)明實施例還公開了一種基于應(yīng)用級日志的數(shù)據(jù)恢復(fù)方法,該方法包括兩部分,其一為日常運行和備份部分,其二為災(zāi)難恢復(fù)部分,所述日常運行和備份部分包括:
步驟110:在生產(chǎn)系統(tǒng),應(yīng)用服務(wù)器通過數(shù)據(jù)庫連接,對生產(chǎn)數(shù)據(jù)庫進行了正常的一筆業(yè)務(wù)操作。
步驟120:日志功能模塊在應(yīng)用服務(wù)器操作完成時,生成應(yīng)用級的數(shù)據(jù)庫操作日志,并過日志傳輸模塊將日志內(nèi)容進行傳輸。
步驟121:災(zāi)備中心的應(yīng)用日志服務(wù)器接收日志,并寫入日志文件。并對日志文件進行管理,對超期文件歸檔。
步驟130:生產(chǎn)中心保存數(shù)據(jù)庫文件的存儲磁盤啟動異地同步機制。
步驟131:災(zāi)備中心接收生產(chǎn)中心磁盤的異地災(zāi)備介質(zhì)。
以上步驟為本實施例公開的系統(tǒng)日常的運行和備份操作,一旦災(zāi)難發(fā)生而導(dǎo)致生產(chǎn)中心無法對外提供服務(wù)時,啟動以下應(yīng)急災(zāi)難恢復(fù)操作。
所述災(zāi)難恢復(fù)部分包括:
步驟210:首先利用磁盤的異地災(zāi)備介質(zhì)啟動備份數(shù)據(jù)庫。此時,由于磁盤異地同步的延遲,可能導(dǎo)致生產(chǎn)中心最新已經(jīng)完成的一筆交易,尚未通過磁盤同步傳輸?shù)綖?zāi)備中心。
步驟220:應(yīng)用日志傳輸?shù)木W(wǎng)絡(luò)延遲幾乎可以忽略,災(zāi)難發(fā)生前所完成的操作交易,其操作日志已傳輸至災(zāi)備中心的日志服務(wù)器上。根據(jù)災(zāi)備同步的最后成功時間,從日志服務(wù)器中恢復(fù)該時間點以來的所有操作日志。在生產(chǎn)中心已操作完成的交易,將通過重新執(zhí)行日志內(nèi)容,其丟失數(shù)據(jù)將得以恢復(fù)。
步驟230:數(shù)據(jù)恢復(fù)完成后,災(zāi)備的應(yīng)用服務(wù)器可以重新連接數(shù)據(jù)庫,并進行必要的數(shù)據(jù)和交易的校驗。
步驟240:災(zāi)備中心完成以RPO=0的指標(biāo)對外提供應(yīng)急服務(wù)。
本發(fā)明實施例所提出的方案和技術(shù),在演練環(huán)境中的災(zāi)備恢復(fù)演練,可以實現(xiàn)預(yù)定的關(guān)鍵業(yè)務(wù)RPO=0的恢復(fù)目標(biāo)。同時,由于數(shù)據(jù)恢復(fù)的自動執(zhí)行和校驗,此項新技術(shù)的應(yīng)用也大大地降低了RTO等指標(biāo)。
本發(fā)明充分利用了底層磁盤級數(shù)據(jù)同步和應(yīng)用級日志恢復(fù)的優(yōu)點,將消耗資源的計算和處理等工作放在服務(wù)器上來進行,最大程度地減少了網(wǎng)絡(luò)傳輸和延遲,減輕了對主生產(chǎn)的負(fù)擔(dān)。在不明顯增加現(xiàn)有系統(tǒng)壓力的情況下,實現(xiàn)了異地災(zāi)備數(shù)據(jù)恢復(fù)零丟失的目標(biāo)。相比較現(xiàn)有的技術(shù)而言,本發(fā)明的主要優(yōu)點有:
1、網(wǎng)絡(luò)資源占用量低,相比較數(shù)據(jù)庫日志級的傳輸,應(yīng)用級日志傳輸數(shù)據(jù)量要小一個數(shù)量級。因此帶來網(wǎng)絡(luò)傳輸數(shù)據(jù)量少,延時短。
2、對生產(chǎn)系統(tǒng)的影響小,底層HUR磁盤同步使用吸的方式,不占用生產(chǎn)系統(tǒng)的資源。應(yīng)用日志產(chǎn)生數(shù)據(jù)量小,異步傳輸,最大程度減少了對生產(chǎn)系統(tǒng)的影響。同時,應(yīng)用日志補數(shù)據(jù)機制的存在,可以降低對底層HUR磁盤同步的實時性要求。
3、可以做到業(yè)務(wù)級別的控制,目前大部分的災(zāi)備機制均實現(xiàn)在系統(tǒng)層或數(shù)據(jù)庫層,進行全量數(shù)據(jù)的恢復(fù)。在災(zāi)備的特殊環(huán)境下,全量數(shù)據(jù)的處理和校驗,帶來了更大的恢復(fù)壓力。應(yīng)用級日志可以設(shè)置在針對特定的核心業(yè)務(wù)上,對核心業(yè)務(wù)交易數(shù)據(jù)進行無丟失的保障,將有限資源優(yōu)先應(yīng)用在核心業(yè)務(wù)上,增強了災(zāi)備恢復(fù)的靈活性和可操作性。
4、可跨平臺的實現(xiàn),本發(fā)明不依賴于具體的平臺實現(xiàn),可應(yīng)用于目前大部分應(yīng)用服務(wù)器-數(shù)據(jù)庫CS架構(gòu)的系統(tǒng)中。
5、易用性,日志的設(shè)置和恢復(fù)可實現(xiàn)圖形化操作界面,恢復(fù)過程可進度化顯示,恢復(fù)結(jié)果和日志等可圖形化展示。
本發(fā)明中應(yīng)用了具體實施例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。