引言:本文以作者單位業務系統的數據庫容災備份構建及其測試為例,重點對異構數據庫雙系統業務中心間數據遷移,以及異構數據庫間數據同步、容災功能的可行性和可靠性測試進行了論述。
作者所在單位業務系統采用JAVA技術實現多層架構,具有在線投稿平臺、移動業務平臺、文字編輯系統和圖片編輯系統、公共稿庫管理、成品稿庫及發布服務、稿件統計、監控預警系統、單點登錄系統等8大功能。硬件服務器均采用DELL R910,配置為CPU 32核 Intel(R)Xeon(R) CPU X5675 @3.07GHz,Memory 16GB,hard disk 500GB;基本環境情況如表1所示。
基于業務系統現狀和容災系統需求,在容災系統的設計上,分兩個階段,一是異構數據庫雙系統中心設計,即重新搭建以達夢公司生產的DM7為后臺數據庫的新業務系統,形成雙系統中心;二是異構數據庫容災系設計,即在雙系統中心的基礎下,通過容災管理系統將雙系統中心構成異構容災系統。

表1 業務應用系統基本環境情況表

圖1 雙系統網絡拓撲
異構數據庫雙系統中心設計主要是測試完成從Oracle 數據庫包括表結構、數據、主鍵、外鍵、索引及視圖等平滑遷移到達夢DM7數據庫的可靠性和完整性等方面;以及應用系統程序移植到新系統的功能和性能等。
在對業務系統現狀進行全面分析后,參照原業務系統的運行環境,按照單機模式,重新搭建以DM7為后臺數據庫的新業務系統的運行環境,通過百兆局域網與業務中心互連,形成雙系統中心,網絡拓撲如圖1所示。
數據遷移通常指在開發環境向運行環境轉換、低版本數據庫向高版本數據庫、異構數據庫遷移轉換以及兩個不同數據庫之間進行轉換時,數據庫中的數據(包括結構定義)需要被轉移并使之正常運行。
本次數據遷移利用達夢數據庫數據遷移工具DTS,實現業務后臺數據和業務系統遷移到新建的以DM7數據庫為后臺數據庫的運行環境中。達夢數據遷移工具DTS采用圖形化操作界面,向導方式,執行遷移、查看遷移報告等。測試主要流程如下:
第一,準備階段
(1)在電腦終端上安裝達夢數據庫遷移工具DTS,配置兩個系統中心的數據庫IP地址,實現互連互通。
(2)啟動初始化庫時,注意大小寫敏感參數需要設為大小寫敏感、調整INI參數、日志大小等。
(3)在Oracle庫上執行腳本,搜集表結構、數據量等信息,供遷移后比較核對。對比Oracle的數據庫的表結構和數據字典,在DM7上創建數據庫實例、創建用戶以及 schema。
第二,移植階段
(1)從Oracle數據庫遷移表結構、主鍵、約束、索引、字段備注、視圖和序列,遷移到相應的用戶下。將Oracle的4個遷移日志表(dm_dts_info01等)遷移到SYSDBA用戶下。遷移完成后,禁用所有表主鍵、唯一鍵和外鍵,加快數據插入速度。

表2 數據庫遷移效果表
(2)分批遷小表(50萬以下),每批300個表,采用普通裝載、單線程模式;然后,用快速裝載模式逐個遷移大表。遷移完成后,啟用所有表主鍵、唯一鍵和外鍵。數據庫遷移數據結果如表2所示。
第三,核對階段
在數據遷移完成后,在DM7數據庫上搜集表信息,對所有對象總數、表數據量和列的默認值等一致性檢查。
應用系統的移植主要是連接串的修改及一些差異的修改,如SQL參數的處理等,測試是應用系統從Oracle平滑遷移到DM7的執行功能和性能等方面。其測試流程如下:
(1)把相應的JDBC驅動放入項目的驅動包中,修改數據源中的URL連接串,示例如下:
ORACLE:jdbc:Oracle:thin:@localhost:1521:orcl
DM: jdbc:dm://localhost:5236
注意:Oracle數據庫中是一個端口綁定多個實例,在URL中通過SID去區分各實例,而DM數據庫中是一個端口對應一個實例,因此只需要寫IP+端口號即可。
(2)對DM7數據庫系統不支持的SQL語句進行改寫以及修改系統相關參數調整。應用系統修改體現在數據庫的參數文件 dm.ini中,應保證如下參數的名稱與值的正確性,若參數不對,適當調整,若無此參數,可手工加上,數據庫參數修改表3所示。
(3)對移植的DM7版業務系統,按照系統功能模塊的測試實例,共80多項,進行全面的功能和性能測試。測試過程中,針對功能和性能問題,通過修改錯誤,修改應用系統程序和數據庫,對運行慢的SQL語句進行優化,系統功能模塊功能測試項目全部通過。測試結果,查詢比對兩系統中心數據庫的信息、對象和表數據數量等完全一致,成功率100%。基于DM7數據庫的業務系統功能和性能指標完全能夠滿足業務需求。
異構數據庫容災系統設計和實現,在異構數據庫雙系統中心設計的基礎上,按照容災設計指標,利用達夢公司推出的異構實時數據同步復制管理系統 DMHS(Heterogeneous database Synchronization for DM,縮寫DMHS),將兩個系統中心集成在一個支持異構數據庫的容災框架下,使兩個系統中心既是主生產系統,又是災備系統,即互為災備狀態,構成了異地、異構容災系統。

表3 數據庫參數修改表
這樣,大大提升雙系統業務中心的使用價值,從而保證了業務業務系統整體的運行效率。
下面重點對DMHS系統進行驗證測試,主要是包括兩方面,一是DMHS系統功能 ,即系統的容災功能和數據一致性維護的可靠性。二是DMHS系統性能,業務業務的應用有很強的時效性,對容災系統的要求有較快的響應時間,因此,容災系統還應該具備較高的數據加載速度和查詢效率。
測試環境中,主中心功能模塊的硬件采用雙機HA配置,災備中心功能模塊采用單機配置。在主中心和災備中心分別安裝部署DMHS系統,構成整個多媒體容災系統。本容災系統的異構性主要體現在主中心使用Oracle數據庫和災備中心使用DM7數據庫的異構。
DMHS系統測試,主要通過數據同步測試和災備切換測試兩方面來驗證。
方面一是數據同步測試。
數據同步測試指在容災系統正常運行情況下,分別在主中心端和災備中心端兩個節點上,按照業務系統功能模塊測試實例操作產生數據,檢測對應節點是否有數據更新以及數據的完整性和業務邏輯一致性。其主要操作流程如下:
(1)初始數據裝載,使主中心端與災備中心端的DMHS同步服務啟動;
(2)采編系統功能和性能測試,在主中心端(災備中心)中按照測試實例操作產生數據,檢測對應的節點上是否進行了相應的數據更新,查詢兩端數據和業務邏輯是否一致,記錄數據傳輸時延等。
(3)測試結果,主中心和災備中心端兩節點同步更新到對應兩節點的數據完整和業務邏輯一致,節點間數據同步傳輸時延都能達到秒級。
方面二是災備切換測試。
災備切換測試指模擬任意應用服務器宕機、核心存儲故障導致系統無法運行的條件下,將業務處理切換到國國另一節點接管運行,并在完成系統恢復和業務恢復后由接管節點提供對內對外的業務服務,原來的節點可以進行必要的系統維護或為災備環境提供備份支持。需要時,可以回切原主中心端。
主中心出現災難切換至災備中心,操作流程如下:
(1)模擬主中心災難,停止Oracle數據庫;
(2)主中心DMHS系統中,停止Oracle數據庫至DM7數據庫同步服務;
(3)按照系統功能模塊的測試實例,對業務應用系統的功能和性能測試;
測試結果,災備中心接管運行后,業務系統的功能和性能測試正常。
災備中心切回至主中心,操作流程如下:
(1)模擬災難恢復,啟動Oracle數據庫,同時開啟DM7所有觸發器,關閉Oracle觸發器;
(2)在災備中心啟動DM7至Oracle數據庫序列同步服務;
(3)數據自動回復檢測,查詢災備中心產生的數據回復到主中心的數據結果對比;
(4)在切換至主中心后,按照采編系統功能模塊的測試實例,對系統功能和性能全面測試;
測試結果,災備中心切回主中心后,數據回復結果與正常節點數據完全一致,業務系統功能和性能正常。
通過對業務系統的容災功能、數據一致性、維護可靠性以及業務功能和性能等方面測試的結果,完全滿足了業務數據完的整性和業務連續性的實際需要,具有極強的針對性和很好的實際應用價值。
容災系統作為業務系統安全運行的“最后一道防線”,是業務系統安全應急體系的重要載體。本文中的例子,是針對實際業務系統提出并搭建的異構數據庫容災備份系統及其測試環境,通過本容災技術方案實際測試,捕獲了方案中的一些不足和需要改進的地方。
業務系統,尤其是關鍵業務的應用系統及其數據庫的容災備份不僅僅是一個技術問題,更是一套完善的機制,需要同時建立容災的流程、規范、人員配置和具體措施等。
本文對于今后各個領域實施基于商用數據庫的在用業務應用系統實現與國產數據庫之間的容災機制構建具有一定的技術指導意義。