引言:本文以作者單位業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫容災(zāi)備份構(gòu)建及其測(cè)試為例,重點(diǎn)對(duì)異構(gòu)數(shù)據(jù)庫雙系統(tǒng)業(yè)務(wù)中心間數(shù)據(jù)遷移,以及異構(gòu)數(shù)據(jù)庫間數(shù)據(jù)同步、容災(zāi)功能的可行性和可靠性測(cè)試進(jìn)行了論述。
作者所在單位業(yè)務(wù)系統(tǒng)采用JAVA技術(shù)實(shí)現(xiàn)多層架構(gòu),具有在線投稿平臺(tái)、移動(dòng)業(yè)務(wù)平臺(tái)、文字編輯系統(tǒng)和圖片編輯系統(tǒng)、公共稿庫管理、成品稿庫及發(fā)布服務(wù)、稿件統(tǒng)計(jì)、監(jiān)控預(yù)警系統(tǒng)、單點(diǎn)登錄系統(tǒng)等8大功能。硬件服務(wù)器均采用DELL R910,配置為CPU 32核 Intel(R)Xeon(R) CPU X5675 @3.07GHz,Memory 16GB,hard disk 500GB;基本環(huán)境情況如表1所示。
基于業(yè)務(wù)系統(tǒng)現(xiàn)狀和容災(zāi)系統(tǒng)需求,在容災(zāi)系統(tǒng)的設(shè)計(jì)上,分兩個(gè)階段,一是異構(gòu)數(shù)據(jù)庫雙系統(tǒng)中心設(shè)計(jì),即重新搭建以達(dá)夢(mèng)公司生產(chǎn)的DM7為后臺(tái)數(shù)據(jù)庫的新業(yè)務(wù)系統(tǒng),形成雙系統(tǒng)中心;二是異構(gòu)數(shù)據(jù)庫容災(zāi)系設(shè)計(jì),即在雙系統(tǒng)中心的基礎(chǔ)下,通過容災(zāi)管理系統(tǒng)將雙系統(tǒng)中心構(gòu)成異構(gòu)容災(zāi)系統(tǒng)。
表1 業(yè)務(wù)應(yīng)用系統(tǒng)基本環(huán)境情況表
圖1 雙系統(tǒng)網(wǎng)絡(luò)拓?fù)?/p>
異構(gòu)數(shù)據(jù)庫雙系統(tǒng)中心設(shè)計(jì)主要是測(cè)試完成從Oracle 數(shù)據(jù)庫包括表結(jié)構(gòu)、數(shù)據(jù)、主鍵、外鍵、索引及視圖等平滑遷移到達(dá)夢(mèng)DM7數(shù)據(jù)庫的可靠性和完整性等方面;以及應(yīng)用系統(tǒng)程序移植到新系統(tǒng)的功能和性能等。
在對(duì)業(yè)務(wù)系統(tǒng)現(xiàn)狀進(jìn)行全面分析后,參照原業(yè)務(wù)系統(tǒng)的運(yùn)行環(huán)境,按照單機(jī)模式,重新搭建以DM7為后臺(tái)數(shù)據(jù)庫的新業(yè)務(wù)系統(tǒng)的運(yùn)行環(huán)境,通過百兆局域網(wǎng)與業(yè)務(wù)中心互連,形成雙系統(tǒng)中心,網(wǎng)絡(luò)拓?fù)淙鐖D1所示。
數(shù)據(jù)遷移通常指在開發(fā)環(huán)境向運(yùn)行環(huán)境轉(zhuǎn)換、低版本數(shù)據(jù)庫向高版本數(shù)據(jù)庫、異構(gòu)數(shù)據(jù)庫遷移轉(zhuǎn)換以及兩個(gè)不同數(shù)據(jù)庫之間進(jìn)行轉(zhuǎn)換時(shí),數(shù)據(jù)庫中的數(shù)據(jù)(包括結(jié)構(gòu)定義)需要被轉(zhuǎn)移并使之正常運(yùn)行。
本次數(shù)據(jù)遷移利用達(dá)夢(mèng)數(shù)據(jù)庫數(shù)據(jù)遷移工具DTS,實(shí)現(xiàn)業(yè)務(wù)后臺(tái)數(shù)據(jù)和業(yè)務(wù)系統(tǒng)遷移到新建的以DM7數(shù)據(jù)庫為后臺(tái)數(shù)據(jù)庫的運(yùn)行環(huán)境中。達(dá)夢(mèng)數(shù)據(jù)遷移工具DTS采用圖形化操作界面,向?qū)Х绞?,?zhí)行遷移、查看遷移報(bào)告等。測(cè)試主要流程如下:
第一,準(zhǔn)備階段
(1)在電腦終端上安裝達(dá)夢(mèng)數(shù)據(jù)庫遷移工具DTS,配置兩個(gè)系統(tǒng)中心的數(shù)據(jù)庫IP地址,實(shí)現(xiàn)互連互通。
(2)啟動(dòng)初始化庫時(shí),注意大小寫敏感參數(shù)需要設(shè)為大小寫敏感、調(diào)整INI參數(shù)、日志大小等。
(3)在Oracle庫上執(zhí)行腳本,搜集表結(jié)構(gòu)、數(shù)據(jù)量等信息,供遷移后比較核對(duì)。對(duì)比Oracle的數(shù)據(jù)庫的表結(jié)構(gòu)和數(shù)據(jù)字典,在DM7上創(chuàng)建數(shù)據(jù)庫實(shí)例、創(chuàng)建用戶以及 schema。
第二,移植階段
(1)從Oracle數(shù)據(jù)庫遷移表結(jié)構(gòu)、主鍵、約束、索引、字段備注、視圖和序列,遷移到相應(yīng)的用戶下。將Oracle的4個(gè)遷移日志表(dm_dts_info01等)遷移到SYSDBA用戶下。遷移完成后,禁用所有表主鍵、唯一鍵和外鍵,加快數(shù)據(jù)插入速度。
表2 數(shù)據(jù)庫遷移效果表
(2)分批遷小表(50萬以下),每批300個(gè)表,采用普通裝載、單線程模式;然后,用快速裝載模式逐個(gè)遷移大表。遷移完成后,啟用所有表主鍵、唯一鍵和外鍵。數(shù)據(jù)庫遷移數(shù)據(jù)結(jié)果如表2所示。
第三,核對(duì)階段
在數(shù)據(jù)遷移完成后,在DM7數(shù)據(jù)庫上搜集表信息,對(duì)所有對(duì)象總數(shù)、表數(shù)據(jù)量和列的默認(rèn)值等一致性檢查。
應(yīng)用系統(tǒng)的移植主要是連接串的修改及一些差異的修改,如SQL參數(shù)的處理等,測(cè)試是應(yīng)用系統(tǒng)從Oracle平滑遷移到DM7的執(zhí)行功能和性能等方面。其測(cè)試流程如下:
(1)把相應(yīng)的JDBC驅(qū)動(dòng)放入項(xiàng)目的驅(qū)動(dòng)包中,修改數(shù)據(jù)源中的URL連接串,示例如下:
ORACLE:jdbc:Oracle:thin:@localhost:1521:orcl
DM: jdbc:dm://localhost:5236
注意:Oracle數(shù)據(jù)庫中是一個(gè)端口綁定多個(gè)實(shí)例,在URL中通過SID去區(qū)分各實(shí)例,而DM數(shù)據(jù)庫中是一個(gè)端口對(duì)應(yīng)一個(gè)實(shí)例,因此只需要寫IP+端口號(hào)即可。
(2)對(duì)DM7數(shù)據(jù)庫系統(tǒng)不支持的SQL語句進(jìn)行改寫以及修改系統(tǒng)相關(guān)參數(shù)調(diào)整。應(yīng)用系統(tǒng)修改體現(xiàn)在數(shù)據(jù)庫的參數(shù)文件 dm.ini中,應(yīng)保證如下參數(shù)的名稱與值的正確性,若參數(shù)不對(duì),適當(dāng)調(diào)整,若無此參數(shù),可手工加上,數(shù)據(jù)庫參數(shù)修改表3所示。
(3)對(duì)移植的DM7版業(yè)務(wù)系統(tǒng),按照系統(tǒng)功能模塊的測(cè)試實(shí)例,共80多項(xiàng),進(jìn)行全面的功能和性能測(cè)試。測(cè)試過程中,針對(duì)功能和性能問題,通過修改錯(cuò)誤,修改應(yīng)用系統(tǒng)程序和數(shù)據(jù)庫,對(duì)運(yùn)行慢的SQL語句進(jìn)行優(yōu)化,系統(tǒng)功能模塊功能測(cè)試項(xiàng)目全部通過。測(cè)試結(jié)果,查詢比對(duì)兩系統(tǒng)中心數(shù)據(jù)庫的信息、對(duì)象和表數(shù)據(jù)數(shù)量等完全一致,成功率100%?;贒M7數(shù)據(jù)庫的業(yè)務(wù)系統(tǒng)功能和性能指標(biāo)完全能夠滿足業(yè)務(wù)需求。
異構(gòu)數(shù)據(jù)庫容災(zāi)系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn),在異構(gòu)數(shù)據(jù)庫雙系統(tǒng)中心設(shè)計(jì)的基礎(chǔ)上,按照容災(zāi)設(shè)計(jì)指標(biāo),利用達(dá)夢(mèng)公司推出的異構(gòu)實(shí)時(shí)數(shù)據(jù)同步復(fù)制管理系統(tǒng) DMHS(Heterogeneous database Synchronization for DM,縮寫DMHS),將兩個(gè)系統(tǒng)中心集成在一個(gè)支持異構(gòu)數(shù)據(jù)庫的容災(zāi)框架下,使兩個(gè)系統(tǒng)中心既是主生產(chǎn)系統(tǒng),又是災(zāi)備系統(tǒng),即互為災(zāi)備狀態(tài),構(gòu)成了異地、異構(gòu)容災(zāi)系統(tǒng)。
表3 數(shù)據(jù)庫參數(shù)修改表
這樣,大大提升雙系統(tǒng)業(yè)務(wù)中心的使用價(jià)值,從而保證了業(yè)務(wù)業(yè)務(wù)系統(tǒng)整體的運(yùn)行效率。
下面重點(diǎn)對(duì)DMHS系統(tǒng)進(jìn)行驗(yàn)證測(cè)試,主要是包括兩方面,一是DMHS系統(tǒng)功能 ,即系統(tǒng)的容災(zāi)功能和數(shù)據(jù)一致性維護(hù)的可靠性。二是DMHS系統(tǒng)性能,業(yè)務(wù)業(yè)務(wù)的應(yīng)用有很強(qiáng)的時(shí)效性,對(duì)容災(zāi)系統(tǒng)的要求有較快的響應(yīng)時(shí)間,因此,容災(zāi)系統(tǒng)還應(yīng)該具備較高的數(shù)據(jù)加載速度和查詢效率。
測(cè)試環(huán)境中,主中心功能模塊的硬件采用雙機(jī)HA配置,災(zāi)備中心功能模塊采用單機(jī)配置。在主中心和災(zāi)備中心分別安裝部署DMHS系統(tǒng),構(gòu)成整個(gè)多媒體容災(zāi)系統(tǒng)。本容災(zāi)系統(tǒng)的異構(gòu)性主要體現(xiàn)在主中心使用Oracle數(shù)據(jù)庫和災(zāi)備中心使用DM7數(shù)據(jù)庫的異構(gòu)。
DMHS系統(tǒng)測(cè)試,主要通過數(shù)據(jù)同步測(cè)試和災(zāi)備切換測(cè)試兩方面來驗(yàn)證。
方面一是數(shù)據(jù)同步測(cè)試。
數(shù)據(jù)同步測(cè)試指在容災(zāi)系統(tǒng)正常運(yùn)行情況下,分別在主中心端和災(zāi)備中心端兩個(gè)節(jié)點(diǎn)上,按照業(yè)務(wù)系統(tǒng)功能模塊測(cè)試實(shí)例操作產(chǎn)生數(shù)據(jù),檢測(cè)對(duì)應(yīng)節(jié)點(diǎn)是否有數(shù)據(jù)更新以及數(shù)據(jù)的完整性和業(yè)務(wù)邏輯一致性。其主要操作流程如下:
(1)初始數(shù)據(jù)裝載,使主中心端與災(zāi)備中心端的DMHS同步服務(wù)啟動(dòng);
(2)采編系統(tǒng)功能和性能測(cè)試,在主中心端(災(zāi)備中心)中按照測(cè)試實(shí)例操作產(chǎn)生數(shù)據(jù),檢測(cè)對(duì)應(yīng)的節(jié)點(diǎn)上是否進(jìn)行了相應(yīng)的數(shù)據(jù)更新,查詢兩端數(shù)據(jù)和業(yè)務(wù)邏輯是否一致,記錄數(shù)據(jù)傳輸時(shí)延等。
(3)測(cè)試結(jié)果,主中心和災(zāi)備中心端兩節(jié)點(diǎn)同步更新到對(duì)應(yīng)兩節(jié)點(diǎn)的數(shù)據(jù)完整和業(yè)務(wù)邏輯一致,節(jié)點(diǎn)間數(shù)據(jù)同步傳輸時(shí)延都能達(dá)到秒級(jí)。
方面二是災(zāi)備切換測(cè)試。
災(zāi)備切換測(cè)試指模擬任意應(yīng)用服務(wù)器宕機(jī)、核心存儲(chǔ)故障導(dǎo)致系統(tǒng)無法運(yùn)行的條件下,將業(yè)務(wù)處理切換到國(guó)國(guó)另一節(jié)點(diǎn)接管運(yùn)行,并在完成系統(tǒng)恢復(fù)和業(yè)務(wù)恢復(fù)后由接管節(jié)點(diǎn)提供對(duì)內(nèi)對(duì)外的業(yè)務(wù)服務(wù),原來的節(jié)點(diǎn)可以進(jìn)行必要的系統(tǒng)維護(hù)或?yàn)闉?zāi)備環(huán)境提供備份支持。需要時(shí),可以回切原主中心端。
主中心出現(xiàn)災(zāi)難切換至災(zāi)備中心,操作流程如下:
(1)模擬主中心災(zāi)難,停止Oracle數(shù)據(jù)庫;
(2)主中心DMHS系統(tǒng)中,停止Oracle數(shù)據(jù)庫至DM7數(shù)據(jù)庫同步服務(wù);
(3)按照系統(tǒng)功能模塊的測(cè)試實(shí)例,對(duì)業(yè)務(wù)應(yīng)用系統(tǒng)的功能和性能測(cè)試;
測(cè)試結(jié)果,災(zāi)備中心接管運(yùn)行后,業(yè)務(wù)系統(tǒng)的功能和性能測(cè)試正常。
災(zāi)備中心切回至主中心,操作流程如下:
(1)模擬災(zāi)難恢復(fù),啟動(dòng)Oracle數(shù)據(jù)庫,同時(shí)開啟DM7所有觸發(fā)器,關(guān)閉Oracle觸發(fā)器;
(2)在災(zāi)備中心啟動(dòng)DM7至Oracle數(shù)據(jù)庫序列同步服務(wù);
(3)數(shù)據(jù)自動(dòng)回復(fù)檢測(cè),查詢?yōu)膫渲行漠a(chǎn)生的數(shù)據(jù)回復(fù)到主中心的數(shù)據(jù)結(jié)果對(duì)比;
(4)在切換至主中心后,按照采編系統(tǒng)功能模塊的測(cè)試實(shí)例,對(duì)系統(tǒng)功能和性能全面測(cè)試;
測(cè)試結(jié)果,災(zāi)備中心切回主中心后,數(shù)據(jù)回復(fù)結(jié)果與正常節(jié)點(diǎn)數(shù)據(jù)完全一致,業(yè)務(wù)系統(tǒng)功能和性能正常。
通過對(duì)業(yè)務(wù)系統(tǒng)的容災(zāi)功能、數(shù)據(jù)一致性、維護(hù)可靠性以及業(yè)務(wù)功能和性能等方面測(cè)試的結(jié)果,完全滿足了業(yè)務(wù)數(shù)據(jù)完的整性和業(yè)務(wù)連續(xù)性的實(shí)際需要,具有極強(qiáng)的針對(duì)性和很好的實(shí)際應(yīng)用價(jià)值。
容災(zāi)系統(tǒng)作為業(yè)務(wù)系統(tǒng)安全運(yùn)行的“最后一道防線”,是業(yè)務(wù)系統(tǒng)安全應(yīng)急體系的重要載體。本文中的例子,是針對(duì)實(shí)際業(yè)務(wù)系統(tǒng)提出并搭建的異構(gòu)數(shù)據(jù)庫容災(zāi)備份系統(tǒng)及其測(cè)試環(huán)境,通過本容災(zāi)技術(shù)方案實(shí)際測(cè)試,捕獲了方案中的一些不足和需要改進(jìn)的地方。
業(yè)務(wù)系統(tǒng),尤其是關(guān)鍵業(yè)務(wù)的應(yīng)用系統(tǒng)及其數(shù)據(jù)庫的容災(zāi)備份不僅僅是一個(gè)技術(shù)問題,更是一套完善的機(jī)制,需要同時(shí)建立容災(zāi)的流程、規(guī)范、人員配置和具體措施等。
本文對(duì)于今后各個(gè)領(lǐng)域?qū)嵤┗谏逃脭?shù)據(jù)庫的在用業(yè)務(wù)應(yīng)用系統(tǒng)實(shí)現(xiàn)與國(guó)產(chǎn)數(shù)據(jù)庫之間的容災(zāi)機(jī)制構(gòu)建具有一定的技術(shù)指導(dǎo)意義。