苗長俊 秦 寧 張海峰 劉子源
苗長俊:中國鐵道科學研究院通信信號研究所 助理研究員100081 北京
秦 寧:中國鐵道科學研究院通信信號研究所 助理研究員100081 北京
張海峰:中國鐵道科學研究院通信信號研究所 助理研究員100081 北京
劉子源:中國鐵道科學研究院通信信號研究所 助理研究員100081 北京
數據庫是調度中心TDCS/CTC系統的核心子系統,負責系統內重要行車數據的存儲。數據庫系統的穩定、高效與TDCS/CTC系統,乃至調度中心的穩定、高效密不可分。當前,TDCS/CTC系統數據庫服務器的設立,按照標準一般采用雙機熱備配套磁盤陣列,應用RAC(真正應用集群)的運行模式,本身具備了一定的容災能力。RAC主要解決系統或例程故障 (如節點故障或例程崩潰),提供了不影響數據的快速和自動恢復功能,實現了單機發生故障情況下的快速切換以及數據安全,基本上滿足了運輸生產業務對系統連續性、穩定性的要求。
但是實際應用中會有如突發性故障、優化升級、系統調試、應急演練、數據/存儲故障、人為錯誤、計算機病毒、軟件故障、自然災害等情況的發生,為了盡可能降低對數據庫的影響,單單依靠上述運行模式顯然不行。本文針對現場多樣化的情況、維護人員能否輕松應對容災方案,以及容災方案的實施效果如何等諸多問題,探討不同類型數據庫容災方案的選擇。
利用SQL語句邏輯完成生產數據庫與容災數據庫間的數據同步復制,通過簡單操作,快速恢復運輸作業,保障業務連續性。方案實施如下。
1.建立容災數據庫系統,創建與實際生產庫同樣的數據結構。
2.通過編寫Oracle的Procedure和Job實現生產庫與容災庫間的自動定向復制,Job執行的時間間隔可根據實際情況而定。根據現場應用經驗,最短間隔可設置為10~15 min。
3.在調度臺建立與容災數據庫的備用連接。生產庫出現問題時,直接啟用備用連接即可恢復調度作業的正常運轉。
Data Guard作為Oracle數據庫的集成組件,為調度中心提供了一個比較全面的數據保護、故障排除和應急演練的解決方案。它可以創建、維護和監控與生產數據庫結構模式相同的容災數據庫,以保護調度中心的行車數據不受故障、災難、錯誤和崩潰的影響。當生產數據庫由于計劃中斷或意外中斷而不可用時,Data Guard可以將容災數據庫切換到生產角色,從而減少由中斷產生的停機時間,最重要的是可以防止行車數據的丟失。Data Guard結構如圖1所示,方案實施如下。
建立容災數據庫系統。容災數據庫是與生產數據庫在事務上一致的副本。當生產數據庫中發生事務時,生成重做數據并將其寫入本地重做日志文件中。通過Data Guard,還可將重做數據傳輸到容災站點上,并應用到容災數據庫中,從而使容災數據庫與生產數據庫保持同步。Data Guard轉換和功能恢復操作不是自動進行的,必須由管理員明確啟動。

圖1 Data Guard結構圖
SharePlex是第三方軟件公司 (Quest Software)推出的一個成熟的、完全的Oracle數據庫復制軟件。它是一個實時的、冗余的、流程化的數據庫復制方案,是專門為Oracle數據庫設計和開發的。SharePlex由捕獲進程讀取生產數據庫中的日志文件,獲取數據的變化信息,傳輸到容災數據庫系統,然后解析成SQL語句,在容災數據庫中執行。SharePlex for Oracle的基本結構如圖2所示。方案實施如下。

圖2 SharePlex for Oracle基本結構圖
1.建立容災數據庫系統。該容災數據庫支持異構環境,即支持不同的存儲、主機、操作系統、Oracle數據庫的不同版本。
2.安裝SharePlex軟件。配置其工作模式 (單向、雙向、一對多、多對一、級聯復制),以滿足不同情況下的需求。
當生產數據庫出現故障無法工作時,容災數據庫能夠立即接管關鍵應用繼續運行;生產數據庫恢復后,應用、數據可以迅速切換回生產庫運行。接管切換時間基本等于應用系統切換數據庫的時間,屬于容災系統中最快的故障接管方案。
優勢:該方案屬于簡單快捷型的數據庫容災手段,恢復時間短,操作簡便,方便現場維護人員的掌握,基本一學就會。其最大的優勢在于零成本投入和操作簡捷。
缺陷:采用該方案進行恢復之后,調度中心(尤其是調度臺)的數據一般不完整,如果設置間隔為10 min,將最多丟失10 min的數據。還需要調度人員后期手工補全或經后臺特殊處理來完善數據。另外,該方案中容災庫的的穩定性一般,維護人員需要定期監測容災庫的運行狀態。
優勢:Data Guard以較小的成本實現了最大的數據保護。作為一個災難恢復解決方案,Data Guard易于管理的轉換和故障切換功能,允許生產庫和容災庫之間的角色轉換,減少了生產數據庫因計劃內或計劃外的中斷所導致的停機時間。Data Guard提供了完善的數據保護,使用容災數據庫,可保證不會丟失數據。
缺陷:在臨時系統故障或網絡故障的情況下,為了避免出現錯誤的功能恢復/轉換,Data Guard轉換和功能恢復操作不是自動進行的,必須由管理員明確啟動。因此需要對管理維護人員進行大量的專業技能培訓,使其具備一定的專業技能和操作經驗。Data Guard轉換和故障切換之后,若需恢復之前的Data Guard容災狀態,還需重新搭建 Data Guard環境。
1.原理簡單,實現高效,保障生產庫與容災庫間數據復制的實時性、一致性。SharePlex通過從Oracle日志讀取數據庫的所有變化信息,傳輸到容災數據庫解析成SQL進行裝載,整個過程嚴格遵守數據一致性的順序,保證兩端數據庫結構變化的準確同步。
2.軟件安裝及配置極為簡單,所有步驟均由軟件提示操作,如果出現誤操作將無法繼續,從技術上確保了操作過程的準確性。配置復制關系僅需一個命令激活配置文件,可自動創建各個復制進程和隊列,無需任何額外配置即可開始數據復制。
3.復制性能較高。SharePlex在容災庫采用了多線程的方式實現對數據的加載,在保證所有事務的先后順序及一致性的基礎上,對大量并發業務也同樣保證高速的處理速度。
4.對生產庫性能的影響很小。SharePlex通過Oracle日志獲得數據的變化信息,獨特的技術優勢使其占用生產庫系統的資源很小。
5.數據延遲。SharePlex是一種異步準實時的同步復制技術,每次Oracle日志文件發生變化后,SharePlex都會迅速捕捉,所以數據延遲非常小。
6.網絡負載較低。SharePlex同步操作只是讀取操作系統的日志文件,采用TCP/IP方式而不是中間件方式,傳輸只發生改變的數據使網絡負載降至最低。
7.強大的容錯能力。復制環境能夠提供網絡失敗、數據庫失敗、主機失敗的容錯能力。無論復制鏈路中的任何一臺數據庫或主機出現故障暫時不可用,或者發生網絡中斷,SharePlex可以把數據暫時保存在隊列文件中,故障被修復后,自動恢復數據復制,數據不損失。
8.靈活性和擴展性強。SharePlex提供多種配置方案,包括單向復制、雙向復制、數據集中、數據分布等,滿足系統的擴充性需求。生產庫和容災庫可以運行在不同類型的操作系統和同一Oracle數據庫的不同版本上,同時支持不同類型的磁盤陣列。不僅滿足目前異構環境,還能適應未來的擴展需求。硬件升級時,新舊硬件產品可以隨意調換,不受限制。
9.容災庫數據可訪問,有效提高資源利用率。用戶可以對容災庫進行查詢、統計、分析等操作,充分利用容災庫系統資源,減輕生產庫系統的壓力,使投資變為可用,而不是單純的冷備閑置。
10.建立同步環境的工作量。不需要對硬件、軟件、磁盤卷的劃分進行額外操作,減少了建立復制環境對系統結構和應用所作的修改工作。目前SharePlex支持所有的Oracle數據類型,對應用程序沒有限制。
11.穩定性較高。設計了多種保障和恢復機制,在進程出現異常終止,或數據庫宕機甚至主機掉電等情況時,都可通過簡單幾步或自動恢復,并且前期配置的復制環境不需要重新部署。
12.在線數據比較。SharePlex提供在線數據比較功能,如果懷疑部分數據不一致,可在應用不停機且被比較的表上有操作情況下,動態地比較并定位不一致的數據,實現在線自動修復,充分保障數據的一致性。
13.SharePlex提供成熟的手段進行復制鏈路的監控和維護。用戶可通過SharePlex控制臺查看數據復制的各種相關信息,并設定個性化的參數以實現特定的功能,管理方便靈活。可使用自帶的圖形監控程序查看相關信息,當發生意外情況時可實現及時報警。通過豐富的日記記錄復制軟件的運行情況。內置支持SNMP和Mail功能,可與多種監控平臺結合,實現數據復制的實時監控 (使用SNMP方式)。
綜上描述,SharePlex方案不僅具備前2種方案的全部優勢,還具有自己的特色,例如:復制性能高效,可實現負載均衡,工作模式多樣化,適應多種不同需求,對生產數據庫和網絡影響很小,便于管理維護等;只是前期投入成本較高。
按照數據庫系統在現場的應用,一般會在2種情況下啟用容災或備用數據庫,分為計劃內或計劃外停機。計劃內停機包括:硬件、操作系統、數據庫等升級。計劃外停機包括:觸發bug、計算機病毒、數據/存儲故障、人為錯誤、軟件故障、自然災害等。
計劃內停機最優選擇方案宜采用SharePlex,Data Guard次之。
計劃內停機屬于有準備性的數據庫切換,如定期的系統補丁升級。前期方案制定詳細,準備工作充分,實施者充分考慮了切換過程中的每一個步驟,每一個細節,對狀態和結果都有相當的把握。整個切換工作安全可控,對運輸生產的影響基本可忽略。更重要的是,在此類應用中各部門都協調到位,步調一致,為整個切換工作提供了非常理想的外部環境。現場用戶最注重的是行車數據不丟失,其次是考慮維護人員的專業水平和技能熟練程度,做到切換前的準備、切換中的操作,切換后的恢復等盡量簡單便捷,避免繁瑣。在這方面SharePlex優于Data Guard。當然SQL語句同步方案也能實現數據庫的切換功能,但由于容災庫中數據的不完整將給用戶帶來一定的影響,所以在此類應用中不建議使用SQL語句同步方案。
計劃外停機最優選擇方案宜采用SharePlex,SQL語句同步方案次之。
計劃外停機一般屬于突發的、無預見性的故障,如系統的bug被觸發,前期沒有任何征兆,用戶也沒有任何的思想準備,停機很突然。這種情況下稍有不慎就容易引起運輸秩序的混亂,甚至會造成更加嚴重的后果。因此,要優先考慮恢復調度指揮業務,盡可能減少運輸業務的中斷時間,穩定運輸秩序,降低對生產的影響。此種情況的外部環境比較惡劣,不論是調度指揮人員還是管理維護人員,情緒波動相對比較大,所有的切換操作都是被迫執行,操作的步驟、環節就要盡量簡捷高效;其次才是考慮數據的丟失。在這種情況下,SharePlex最優,其切換時間基本等于應用系統切換數據庫的時間,屬于目前數據庫容災系統中最快的方案,并且數據接近零損失。當然,SQL語句同步方案也有其一定的優勢,雖然數據損失較多,但切換的操作非常簡單,易于現場維護人員的掌握。一般不建議采用DataGuard方案,不僅操作繁瑣,需要做多項檢查才能保證切換的順利進行,而且維護人員必須具備一定的專業技能和操作經驗,這對目前現場的維護人員來說,實現起來比較困難。當然,具體選擇哪種方案,還要綜合考慮現場的各種因素,目的就是盡可能降低對業務和用戶的影響。
綜合比較多種容災方案,無疑SharePlex是最優的一種,它功能強大,適合多種場合的應用,但因其前期投入成本較高,可能會成為現場運用的一種障礙。當然還有其他的成本低廉方案,可供大家選擇。容災方案有很多種,如何運用,怎樣實施,需要現場管理部門針對自己的實際情況,結合現場用戶的需求、特點,制定一套相對完善的容災規程。希望在今后的發展中,創新更多更好更適合的方案,為數據庫的連續可靠運行保駕護航。
[1] 中華人民共和國鐵道部.運基信號[2005]418號.列車調度指揮系統(TDCS)數據通信規程(V2.0)[S].2005.
[2] 中華人民共和國鐵道部.運基信號[2007]696號.調度集中系統(CTC)數據通信規程[S].2007.
[3] 中華人民共和國鐵道部.運基信號[2009]676號.列車調度指揮系統(TDCS)、調度集中系統(CTC)組網方案和硬件配置標準[S].2009.