苗長俊 秦 寧 張海峰 劉子源
苗長俊:中國鐵道科學(xué)研究院通信信號研究所 助理研究員100081 北京
秦 寧:中國鐵道科學(xué)研究院通信信號研究所 助理研究員100081 北京
張海峰:中國鐵道科學(xué)研究院通信信號研究所 助理研究員100081 北京
劉子源:中國鐵道科學(xué)研究院通信信號研究所 助理研究員100081 北京
數(shù)據(jù)庫是調(diào)度中心TDCS/CTC系統(tǒng)的核心子系統(tǒng),負(fù)責(zé)系統(tǒng)內(nèi)重要行車數(shù)據(jù)的存儲。數(shù)據(jù)庫系統(tǒng)的穩(wěn)定、高效與TDCS/CTC系統(tǒng),乃至調(diào)度中心的穩(wěn)定、高效密不可分。當(dāng)前,TDCS/CTC系統(tǒng)數(shù)據(jù)庫服務(wù)器的設(shè)立,按照標(biāo)準(zhǔn)一般采用雙機(jī)熱備配套磁盤陣列,應(yīng)用RAC(真正應(yīng)用集群)的運(yùn)行模式,本身具備了一定的容災(zāi)能力。RAC主要解決系統(tǒng)或例程故障 (如節(jié)點故障或例程崩潰),提供了不影響數(shù)據(jù)的快速和自動恢復(fù)功能,實現(xiàn)了單機(jī)發(fā)生故障情況下的快速切換以及數(shù)據(jù)安全,基本上滿足了運(yùn)輸生產(chǎn)業(yè)務(wù)對系統(tǒng)連續(xù)性、穩(wěn)定性的要求。
但是實際應(yīng)用中會有如突發(fā)性故障、優(yōu)化升級、系統(tǒng)調(diào)試、應(yīng)急演練、數(shù)據(jù)/存儲故障、人為錯誤、計算機(jī)病毒、軟件故障、自然災(zāi)害等情況的發(fā)生,為了盡可能降低對數(shù)據(jù)庫的影響,單單依靠上述運(yùn)行模式顯然不行。本文針對現(xiàn)場多樣化的情況、維護(hù)人員能否輕松應(yīng)對容災(zāi)方案,以及容災(zāi)方案的實施效果如何等諸多問題,探討不同類型數(shù)據(jù)庫容災(zāi)方案的選擇。
利用SQL語句邏輯完成生產(chǎn)數(shù)據(jù)庫與容災(zāi)數(shù)據(jù)庫間的數(shù)據(jù)同步復(fù)制,通過簡單操作,快速恢復(fù)運(yùn)輸作業(yè),保障業(yè)務(wù)連續(xù)性。方案實施如下。
1.建立容災(zāi)數(shù)據(jù)庫系統(tǒng),創(chuàng)建與實際生產(chǎn)庫同樣的數(shù)據(jù)結(jié)構(gòu)。
2.通過編寫Oracle的Procedure和Job實現(xiàn)生產(chǎn)庫與容災(zāi)庫間的自動定向復(fù)制,Job執(zhí)行的時間間隔可根據(jù)實際情況而定。根據(jù)現(xiàn)場應(yīng)用經(jīng)驗,最短間隔可設(shè)置為10~15 min。
3.在調(diào)度臺建立與容災(zāi)數(shù)據(jù)庫的備用連接。生產(chǎn)庫出現(xiàn)問題時,直接啟用備用連接即可恢復(fù)調(diào)度作業(yè)的正常運(yùn)轉(zhuǎn)。
Data Guard作為Oracle數(shù)據(jù)庫的集成組件,為調(diào)度中心提供了一個比較全面的數(shù)據(jù)保護(hù)、故障排除和應(yīng)急演練的解決方案。它可以創(chuàng)建、維護(hù)和監(jiān)控與生產(chǎn)數(shù)據(jù)庫結(jié)構(gòu)模式相同的容災(zāi)數(shù)據(jù)庫,以保護(hù)調(diào)度中心的行車數(shù)據(jù)不受故障、災(zāi)難、錯誤和崩潰的影響。當(dāng)生產(chǎn)數(shù)據(jù)庫由于計劃中斷或意外中斷而不可用時,Data Guard可以將容災(zāi)數(shù)據(jù)庫切換到生產(chǎn)角色,從而減少由中斷產(chǎn)生的停機(jī)時間,最重要的是可以防止行車數(shù)據(jù)的丟失。Data Guard結(jié)構(gòu)如圖1所示,方案實施如下。
建立容災(zāi)數(shù)據(jù)庫系統(tǒng)。容災(zāi)數(shù)據(jù)庫是與生產(chǎn)數(shù)據(jù)庫在事務(wù)上一致的副本。當(dāng)生產(chǎn)數(shù)據(jù)庫中發(fā)生事務(wù)時,生成重做數(shù)據(jù)并將其寫入本地重做日志文件中。通過Data Guard,還可將重做數(shù)據(jù)傳輸?shù)饺轂?zāi)站點上,并應(yīng)用到容災(zāi)數(shù)據(jù)庫中,從而使容災(zāi)數(shù)據(jù)庫與生產(chǎn)數(shù)據(jù)庫保持同步。Data Guard轉(zhuǎn)換和功能恢復(fù)操作不是自動進(jìn)行的,必須由管理員明確啟動。
圖1 Data Guard結(jié)構(gòu)圖
SharePlex是第三方軟件公司 (Quest Software)推出的一個成熟的、完全的Oracle數(shù)據(jù)庫復(fù)制軟件。它是一個實時的、冗余的、流程化的數(shù)據(jù)庫復(fù)制方案,是專門為Oracle數(shù)據(jù)庫設(shè)計和開發(fā)的。SharePlex由捕獲進(jìn)程讀取生產(chǎn)數(shù)據(jù)庫中的日志文件,獲取數(shù)據(jù)的變化信息,傳輸?shù)饺轂?zāi)數(shù)據(jù)庫系統(tǒng),然后解析成SQL語句,在容災(zāi)數(shù)據(jù)庫中執(zhí)行。SharePlex for Oracle的基本結(jié)構(gòu)如圖2所示。方案實施如下。
圖2 SharePlex for Oracle基本結(jié)構(gòu)圖
1.建立容災(zāi)數(shù)據(jù)庫系統(tǒng)。該容災(zāi)數(shù)據(jù)庫支持異構(gòu)環(huán)境,即支持不同的存儲、主機(jī)、操作系統(tǒng)、Oracle數(shù)據(jù)庫的不同版本。
2.安裝SharePlex軟件。配置其工作模式 (單向、雙向、一對多、多對一、級聯(lián)復(fù)制),以滿足不同情況下的需求。
當(dāng)生產(chǎn)數(shù)據(jù)庫出現(xiàn)故障無法工作時,容災(zāi)數(shù)據(jù)庫能夠立即接管關(guān)鍵應(yīng)用繼續(xù)運(yùn)行;生產(chǎn)數(shù)據(jù)庫恢復(fù)后,應(yīng)用、數(shù)據(jù)可以迅速切換回生產(chǎn)庫運(yùn)行。接管切換時間基本等于應(yīng)用系統(tǒng)切換數(shù)據(jù)庫的時間,屬于容災(zāi)系統(tǒng)中最快的故障接管方案。
優(yōu)勢:該方案屬于簡單快捷型的數(shù)據(jù)庫容災(zāi)手段,恢復(fù)時間短,操作簡便,方便現(xiàn)場維護(hù)人員的掌握,基本一學(xué)就會。其最大的優(yōu)勢在于零成本投入和操作簡捷。
缺陷:采用該方案進(jìn)行恢復(fù)之后,調(diào)度中心(尤其是調(diào)度臺)的數(shù)據(jù)一般不完整,如果設(shè)置間隔為10 min,將最多丟失10 min的數(shù)據(jù)。還需要調(diào)度人員后期手工補(bǔ)全或經(jīng)后臺特殊處理來完善數(shù)據(jù)。另外,該方案中容災(zāi)庫的的穩(wěn)定性一般,維護(hù)人員需要定期監(jiān)測容災(zāi)庫的運(yùn)行狀態(tài)。
優(yōu)勢:Data Guard以較小的成本實現(xiàn)了最大的數(shù)據(jù)保護(hù)。作為一個災(zāi)難恢復(fù)解決方案,Data Guard易于管理的轉(zhuǎn)換和故障切換功能,允許生產(chǎn)庫和容災(zāi)庫之間的角色轉(zhuǎn)換,減少了生產(chǎn)數(shù)據(jù)庫因計劃內(nèi)或計劃外的中斷所導(dǎo)致的停機(jī)時間。Data Guard提供了完善的數(shù)據(jù)保護(hù),使用容災(zāi)數(shù)據(jù)庫,可保證不會丟失數(shù)據(jù)。
缺陷:在臨時系統(tǒng)故障或網(wǎng)絡(luò)故障的情況下,為了避免出現(xiàn)錯誤的功能恢復(fù)/轉(zhuǎn)換,Data Guard轉(zhuǎn)換和功能恢復(fù)操作不是自動進(jìn)行的,必須由管理員明確啟動。因此需要對管理維護(hù)人員進(jìn)行大量的專業(yè)技能培訓(xùn),使其具備一定的專業(yè)技能和操作經(jīng)驗。Data Guard轉(zhuǎn)換和故障切換之后,若需恢復(fù)之前的Data Guard容災(zāi)狀態(tài),還需重新搭建 Data Guard環(huán)境。
1.原理簡單,實現(xiàn)高效,保障生產(chǎn)庫與容災(zāi)庫間數(shù)據(jù)復(fù)制的實時性、一致性。SharePlex通過從Oracle日志讀取數(shù)據(jù)庫的所有變化信息,傳輸?shù)饺轂?zāi)數(shù)據(jù)庫解析成SQL進(jìn)行裝載,整個過程嚴(yán)格遵守數(shù)據(jù)一致性的順序,保證兩端數(shù)據(jù)庫結(jié)構(gòu)變化的準(zhǔn)確同步。
2.軟件安裝及配置極為簡單,所有步驟均由軟件提示操作,如果出現(xiàn)誤操作將無法繼續(xù),從技術(shù)上確保了操作過程的準(zhǔn)確性。配置復(fù)制關(guān)系僅需一個命令激活配置文件,可自動創(chuàng)建各個復(fù)制進(jìn)程和隊列,無需任何額外配置即可開始數(shù)據(jù)復(fù)制。
3.復(fù)制性能較高。SharePlex在容災(zāi)庫采用了多線程的方式實現(xiàn)對數(shù)據(jù)的加載,在保證所有事務(wù)的先后順序及一致性的基礎(chǔ)上,對大量并發(fā)業(yè)務(wù)也同樣保證高速的處理速度。
4.對生產(chǎn)庫性能的影響很小。SharePlex通過Oracle日志獲得數(shù)據(jù)的變化信息,獨特的技術(shù)優(yōu)勢使其占用生產(chǎn)庫系統(tǒng)的資源很小。
5.?dāng)?shù)據(jù)延遲。SharePlex是一種異步準(zhǔn)實時的同步復(fù)制技術(shù),每次Oracle日志文件發(fā)生變化后,SharePlex都會迅速捕捉,所以數(shù)據(jù)延遲非常小。
6.網(wǎng)絡(luò)負(fù)載較低。SharePlex同步操作只是讀取操作系統(tǒng)的日志文件,采用TCP/IP方式而不是中間件方式,傳輸只發(fā)生改變的數(shù)據(jù)使網(wǎng)絡(luò)負(fù)載降至最低。
7.強(qiáng)大的容錯能力。復(fù)制環(huán)境能夠提供網(wǎng)絡(luò)失敗、數(shù)據(jù)庫失敗、主機(jī)失敗的容錯能力。無論復(fù)制鏈路中的任何一臺數(shù)據(jù)庫或主機(jī)出現(xiàn)故障暫時不可用,或者發(fā)生網(wǎng)絡(luò)中斷,SharePlex可以把數(shù)據(jù)暫時保存在隊列文件中,故障被修復(fù)后,自動恢復(fù)數(shù)據(jù)復(fù)制,數(shù)據(jù)不損失。
8.靈活性和擴(kuò)展性強(qiáng)。SharePlex提供多種配置方案,包括單向復(fù)制、雙向復(fù)制、數(shù)據(jù)集中、數(shù)據(jù)分布等,滿足系統(tǒng)的擴(kuò)充性需求。生產(chǎn)庫和容災(zāi)庫可以運(yùn)行在不同類型的操作系統(tǒng)和同一Oracle數(shù)據(jù)庫的不同版本上,同時支持不同類型的磁盤陣列。不僅滿足目前異構(gòu)環(huán)境,還能適應(yīng)未來的擴(kuò)展需求。硬件升級時,新舊硬件產(chǎn)品可以隨意調(diào)換,不受限制。
9.容災(zāi)庫數(shù)據(jù)可訪問,有效提高資源利用率。用戶可以對容災(zāi)庫進(jìn)行查詢、統(tǒng)計、分析等操作,充分利用容災(zāi)庫系統(tǒng)資源,減輕生產(chǎn)庫系統(tǒng)的壓力,使投資變?yōu)榭捎茫皇菃渭兊睦鋫溟e置。
10.建立同步環(huán)境的工作量。不需要對硬件、軟件、磁盤卷的劃分進(jìn)行額外操作,減少了建立復(fù)制環(huán)境對系統(tǒng)結(jié)構(gòu)和應(yīng)用所作的修改工作。目前SharePlex支持所有的Oracle數(shù)據(jù)類型,對應(yīng)用程序沒有限制。
11.穩(wěn)定性較高。設(shè)計了多種保障和恢復(fù)機(jī)制,在進(jìn)程出現(xiàn)異常終止,或數(shù)據(jù)庫宕機(jī)甚至主機(jī)掉電等情況時,都可通過簡單幾步或自動恢復(fù),并且前期配置的復(fù)制環(huán)境不需要重新部署。
12.在線數(shù)據(jù)比較。SharePlex提供在線數(shù)據(jù)比較功能,如果懷疑部分?jǐn)?shù)據(jù)不一致,可在應(yīng)用不停機(jī)且被比較的表上有操作情況下,動態(tài)地比較并定位不一致的數(shù)據(jù),實現(xiàn)在線自動修復(fù),充分保障數(shù)據(jù)的一致性。
13.SharePlex提供成熟的手段進(jìn)行復(fù)制鏈路的監(jiān)控和維護(hù)。用戶可通過SharePlex控制臺查看數(shù)據(jù)復(fù)制的各種相關(guān)信息,并設(shè)定個性化的參數(shù)以實現(xiàn)特定的功能,管理方便靈活。可使用自帶的圖形監(jiān)控程序查看相關(guān)信息,當(dāng)發(fā)生意外情況時可實現(xiàn)及時報警。通過豐富的日記記錄復(fù)制軟件的運(yùn)行情況。內(nèi)置支持SNMP和Mail功能,可與多種監(jiān)控平臺結(jié)合,實現(xiàn)數(shù)據(jù)復(fù)制的實時監(jiān)控 (使用SNMP方式)。
綜上描述,SharePlex方案不僅具備前2種方案的全部優(yōu)勢,還具有自己的特色,例如:復(fù)制性能高效,可實現(xiàn)負(fù)載均衡,工作模式多樣化,適應(yīng)多種不同需求,對生產(chǎn)數(shù)據(jù)庫和網(wǎng)絡(luò)影響很小,便于管理維護(hù)等;只是前期投入成本較高。
按照數(shù)據(jù)庫系統(tǒng)在現(xiàn)場的應(yīng)用,一般會在2種情況下啟用容災(zāi)或備用數(shù)據(jù)庫,分為計劃內(nèi)或計劃外停機(jī)。計劃內(nèi)停機(jī)包括:硬件、操作系統(tǒng)、數(shù)據(jù)庫等升級。計劃外停機(jī)包括:觸發(fā)bug、計算機(jī)病毒、數(shù)據(jù)/存儲故障、人為錯誤、軟件故障、自然災(zāi)害等。
計劃內(nèi)停機(jī)最優(yōu)選擇方案宜采用SharePlex,Data Guard次之。
計劃內(nèi)停機(jī)屬于有準(zhǔn)備性的數(shù)據(jù)庫切換,如定期的系統(tǒng)補(bǔ)丁升級。前期方案制定詳細(xì),準(zhǔn)備工作充分,實施者充分考慮了切換過程中的每一個步驟,每一個細(xì)節(jié),對狀態(tài)和結(jié)果都有相當(dāng)?shù)陌盐?。整個切換工作安全可控,對運(yùn)輸生產(chǎn)的影響基本可忽略。更重要的是,在此類應(yīng)用中各部門都協(xié)調(diào)到位,步調(diào)一致,為整個切換工作提供了非常理想的外部環(huán)境?,F(xiàn)場用戶最注重的是行車數(shù)據(jù)不丟失,其次是考慮維護(hù)人員的專業(yè)水平和技能熟練程度,做到切換前的準(zhǔn)備、切換中的操作,切換后的恢復(fù)等盡量簡單便捷,避免繁瑣。在這方面SharePlex優(yōu)于Data Guard。當(dāng)然SQL語句同步方案也能實現(xiàn)數(shù)據(jù)庫的切換功能,但由于容災(zāi)庫中數(shù)據(jù)的不完整將給用戶帶來一定的影響,所以在此類應(yīng)用中不建議使用SQL語句同步方案。
計劃外停機(jī)最優(yōu)選擇方案宜采用SharePlex,SQL語句同步方案次之。
計劃外停機(jī)一般屬于突發(fā)的、無預(yù)見性的故障,如系統(tǒng)的bug被觸發(fā),前期沒有任何征兆,用戶也沒有任何的思想準(zhǔn)備,停機(jī)很突然。這種情況下稍有不慎就容易引起運(yùn)輸秩序的混亂,甚至?xí)斐筛訃?yán)重的后果。因此,要優(yōu)先考慮恢復(fù)調(diào)度指揮業(yè)務(wù),盡可能減少運(yùn)輸業(yè)務(wù)的中斷時間,穩(wěn)定運(yùn)輸秩序,降低對生產(chǎn)的影響。此種情況的外部環(huán)境比較惡劣,不論是調(diào)度指揮人員還是管理維護(hù)人員,情緒波動相對比較大,所有的切換操作都是被迫執(zhí)行,操作的步驟、環(huán)節(jié)就要盡量簡捷高效;其次才是考慮數(shù)據(jù)的丟失。在這種情況下,SharePlex最優(yōu),其切換時間基本等于應(yīng)用系統(tǒng)切換數(shù)據(jù)庫的時間,屬于目前數(shù)據(jù)庫容災(zāi)系統(tǒng)中最快的方案,并且數(shù)據(jù)接近零損失。當(dāng)然,SQL語句同步方案也有其一定的優(yōu)勢,雖然數(shù)據(jù)損失較多,但切換的操作非常簡單,易于現(xiàn)場維護(hù)人員的掌握。一般不建議采用DataGuard方案,不僅操作繁瑣,需要做多項檢查才能保證切換的順利進(jìn)行,而且維護(hù)人員必須具備一定的專業(yè)技能和操作經(jīng)驗,這對目前現(xiàn)場的維護(hù)人員來說,實現(xiàn)起來比較困難。當(dāng)然,具體選擇哪種方案,還要綜合考慮現(xiàn)場的各種因素,目的就是盡可能降低對業(yè)務(wù)和用戶的影響。
綜合比較多種容災(zāi)方案,無疑SharePlex是最優(yōu)的一種,它功能強(qiáng)大,適合多種場合的應(yīng)用,但因其前期投入成本較高,可能會成為現(xiàn)場運(yùn)用的一種障礙。當(dāng)然還有其他的成本低廉方案,可供大家選擇。容災(zāi)方案有很多種,如何運(yùn)用,怎樣實施,需要現(xiàn)場管理部門針對自己的實際情況,結(jié)合現(xiàn)場用戶的需求、特點,制定一套相對完善的容災(zāi)規(guī)程。希望在今后的發(fā)展中,創(chuàng)新更多更好更適合的方案,為數(shù)據(jù)庫的連續(xù)可靠運(yùn)行保駕護(hù)航。
[1] 中華人民共和國鐵道部.運(yùn)基信號[2005]418號.列車調(diào)度指揮系統(tǒng)(TDCS)數(shù)據(jù)通信規(guī)程(V2.0)[S].2005.
[2] 中華人民共和國鐵道部.運(yùn)基信號[2007]696號.調(diào)度集中系統(tǒng)(CTC)數(shù)據(jù)通信規(guī)程[S].2007.
[3] 中華人民共和國鐵道部.運(yùn)基信號[2009]676號.列車調(diào)度指揮系統(tǒng)(TDCS)、調(diào)度集中系統(tǒng)(CTC)組網(wǎng)方案和硬件配置標(biāo)準(zhǔn)[S].2009.