異地容災(zāi)和數(shù)據(jù)同步思考

時間:2022-10-25 07:39:00

導(dǎo)語:異地容災(zāi)和數(shù)據(jù)同步思考一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

異地容災(zāi)和數(shù)據(jù)同步思考

摘要:以異地容災(zāi)系統(tǒng)和數(shù)據(jù)倉庫需要實時同步生產(chǎn)系統(tǒng)的數(shù)據(jù)為背景,介紹了一個異地容災(zāi)系統(tǒng)和數(shù)據(jù)倉庫中數(shù)據(jù)同步軟件的功能模型;對兩個系統(tǒng)中數(shù)據(jù)同步的設(shè)計和體系結(jié)構(gòu)作了介紹,并闡述了該數(shù)據(jù)同步軟件所采用的Oracle高級復(fù)制技術(shù)。

關(guān)鍵詞:數(shù)據(jù)同步;容災(zāi)系統(tǒng);數(shù)據(jù)倉庫;Oracle高級復(fù)制

0引言

盡管人們小心謹(jǐn)慎,各種各樣的災(zāi)難仍不可避免,如系統(tǒng)硬件故障、網(wǎng)絡(luò)故障、機(jī)房斷電甚至火災(zāi)、地震,廣為人知的“9·11”事件就是觸目驚心的例子[1]。這些災(zāi)難造成了重要數(shù)據(jù)的丟失,影響了企業(yè)的正常運轉(zhuǎn)[2]。另外,激烈的市場競爭迫使企業(yè)高層尋找更為科學(xué)、系統(tǒng)、有效的輔助決策技術(shù)和整體解決方案來處理日益復(fù)雜的公司事務(wù)。數(shù)據(jù)挖掘就成了很好的選擇之一,但是數(shù)據(jù)挖掘需要大量的生產(chǎn)數(shù)據(jù),有時甚至是實時的生產(chǎn)數(shù)據(jù)。如果直接在生產(chǎn)系統(tǒng)上進(jìn)行數(shù)據(jù)挖掘,必然會影響到生產(chǎn)的效率,并將嚴(yán)重威脅生產(chǎn)的穩(wěn)定運行。如何在災(zāi)難發(fā)生時能夠保留生產(chǎn)數(shù)據(jù),并啟用異地容災(zāi)系統(tǒng)及時恢復(fù)生產(chǎn),如何把生產(chǎn)數(shù)據(jù)及時傳遞到數(shù)據(jù)倉庫供數(shù)據(jù)挖掘使用,這些是現(xiàn)代企業(yè)需要面對的共同問題。

近年來為了解決上述問題,許多企業(yè)不惜耗費巨資來分別建立異地容災(zāi)系統(tǒng)和數(shù)據(jù)倉庫。但遺憾的是,很多系統(tǒng)由于無法及時準(zhǔn)確地同步生產(chǎn)數(shù)據(jù),不能有效地運行。鑒于此,筆者設(shè)計并開發(fā)了一套基于Oracle高級復(fù)制技術(shù)的數(shù)據(jù)同步軟件,實現(xiàn)了將一個數(shù)據(jù)容量為3TB的Oracle9iRAC數(shù)據(jù)庫的生產(chǎn)數(shù)據(jù)及時準(zhǔn)確同步到異地容災(zāi)系統(tǒng)和數(shù)據(jù)倉庫。該系統(tǒng)不僅將對原生產(chǎn)系統(tǒng)的影響降至最小,還極大地降低了項目費用。

1軟件模型

該軟件的功能模型圖如圖1所示。

(1)初始同步模塊

該模塊主要是在表進(jìn)行初始同步時使用的;它能夠根據(jù)實際需要生成物化視圖及其索引的創(chuàng)建語句,并完成表的初始同步。如果沒有特別的要求,則調(diào)用普通初始同步子模塊進(jìn)行目的端表的初始同步,創(chuàng)建語句將從源數(shù)據(jù)庫獲取;如果有特別的要求,如按指定的分區(qū)初始同步或者按照一定的條件進(jìn)行初始同步,則會根據(jù)這些要求調(diào)用分區(qū)初始同步或條件初始同步子模塊生成特定的創(chuàng)建語句來進(jìn)行目的端表的初始同步。該模塊能夠批量自動進(jìn)行表的初始同步,從而大大減少了人工干預(yù),保證了初始同步的準(zhǔn)確性和自動化。

(2)調(diào)度模塊

由于源端的數(shù)據(jù)在時刻變化著,在初始同步模塊的基礎(chǔ)上需要有一個調(diào)度模塊將這些不斷變化的數(shù)據(jù)同步到目的端,使目的端與源端始終保持?jǐn)?shù)據(jù)一致性。該模塊中的增量調(diào)度子模塊是在表的增量同步過程中使用的,并能根據(jù)刷新間隔要求對目的端表進(jìn)行及時準(zhǔn)確的刷新;完全刷新調(diào)度子模塊是在對表進(jìn)行重新同步時使用;特殊要求調(diào)度模塊是給需要做特殊同步的表使用的,如需要暫時停止同步、在每天的固定時間不同步等。

(3)監(jiān)控模塊

該模塊是為了及時發(fā)現(xiàn)同步中斷和同步效率低的表。由于其告警方式為短信告警,可以實現(xiàn)任何時間、任何地點的告警,保證了能在第一時間發(fā)現(xiàn)同步的中斷以及同步效率低下的情況,實現(xiàn)了異常處理的及時性。

(4)錯誤處理模塊

該模塊主要是處理同步刷新過程中出現(xiàn)的各種錯誤。通過對捕獲的錯誤進(jìn)行相應(yīng)的處理,從而保證同步能夠穩(wěn)定、高效地運行。另外,由于Oracle高級復(fù)制技術(shù)自身存在一定的缺陷,需要使用該模塊來捕獲造成數(shù)據(jù)不準(zhǔn)的源頭,并進(jìn)行相應(yīng)的處理。

(5)優(yōu)化模塊

該模塊主要是處理同步過程中出現(xiàn)的性能瓶頸,保證能夠及時發(fā)現(xiàn)性能問題并采取相應(yīng)的優(yōu)化手段來加以維護(hù),包括源端優(yōu)化和目的端優(yōu)化。

2系統(tǒng)設(shè)計和體系結(jié)構(gòu)

數(shù)據(jù)倉庫中同步的數(shù)據(jù)只要實現(xiàn)小時級別的同步就可以滿足要求,但異地容災(zāi)的數(shù)據(jù)庫實時性較高,基本上都要求實現(xiàn)分鐘級別的同步?,F(xiàn)在生產(chǎn)數(shù)據(jù)庫總的數(shù)據(jù)量約為3TB,容災(zāi)需要同步的數(shù)據(jù)量比數(shù)據(jù)倉庫要大得多,而且數(shù)據(jù)倉庫需要同步的數(shù)據(jù)都可以從容災(zāi)系統(tǒng)中獲取;另外,生產(chǎn)數(shù)據(jù)庫的性能和穩(wěn)定程度對公司生產(chǎn)有直接的影響。因此在同步過程中,不僅應(yīng)該盡量減少生產(chǎn)數(shù)據(jù)庫的負(fù)擔(dān),還應(yīng)該盡量避免同步過程中的異常情況,如網(wǎng)絡(luò)故障、同步性能低下等問題[3]?;谝陨峡紤],筆者設(shè)計了如下方案:先將生產(chǎn)數(shù)據(jù)同步到異地容災(zāi)系統(tǒng)后,再以異地容災(zāi)系統(tǒng)為數(shù)據(jù)源同步數(shù)據(jù)到數(shù)據(jù)倉庫。

系統(tǒng)的體系結(jié)構(gòu)如圖2所示。

(1)生產(chǎn)系統(tǒng)數(shù)據(jù)同步到異地容災(zāi)系統(tǒng)

生產(chǎn)系統(tǒng)與異地容災(zāi)系統(tǒng)之間是通過百兆網(wǎng)連接的;生產(chǎn)系統(tǒng)的數(shù)據(jù)庫是Oracle9iRAC,總的數(shù)據(jù)量大約為3TB,涉及五千多張表。對這些表進(jìn)行分析歸類,發(fā)現(xiàn)容災(zāi)系統(tǒng)真正需要實時同步的表大約只有五百張,數(shù)據(jù)量約為1TB,只要能夠把這五百張表的變更及時準(zhǔn)確地進(jìn)行同步,即可在生產(chǎn)系統(tǒng)發(fā)生災(zāi)難時,啟用異地容災(zāi)的營業(yè)應(yīng)急系統(tǒng)。鑒于此,本系統(tǒng)數(shù)據(jù)庫使用Oracle9i,同步軟件實時同步這關(guān)鍵的五百張表的變更。這樣大大減少了同步的數(shù)據(jù)量,也最大限度地減少了生產(chǎn)系統(tǒng)的負(fù)擔(dān)。從同步運行情況看,該同步軟件對生產(chǎn)系統(tǒng)的影響可以忽視。

(2)異地容災(zāi)系統(tǒng)數(shù)據(jù)同步到數(shù)據(jù)倉庫

異地容災(zāi)系統(tǒng)與數(shù)據(jù)倉庫之間是通過百兆網(wǎng)連接的;數(shù)據(jù)倉庫需要的生產(chǎn)數(shù)據(jù)從異地容災(zāi)系統(tǒng)數(shù)據(jù)庫獲取,因此數(shù)據(jù)倉庫也采用Oracle9i數(shù)據(jù)庫。數(shù)據(jù)倉庫需要實時同步的表大約為三百張。從同步運行情況看,同步生產(chǎn)數(shù)據(jù)延時大約為十分鐘,能滿足數(shù)據(jù)倉庫的要求,并且與生產(chǎn)環(huán)境沒有任何關(guān)系,不會對生產(chǎn)環(huán)境造成影響。該系統(tǒng)結(jié)構(gòu)使系統(tǒng)在各個實現(xiàn)層次上均具有明確的界限和分工,既避免了相互影響,簡化了數(shù)據(jù)同步的難度,又實現(xiàn)了對生產(chǎn)系統(tǒng)的影響達(dá)到最小化。該結(jié)構(gòu)使得系統(tǒng)易于維護(hù)、擴(kuò)展性好、安全性好、穩(wěn)定性好。

3采用的關(guān)鍵技術(shù)

同步軟件采用的關(guān)鍵技術(shù)為Oracle高級復(fù)制技術(shù)。該技術(shù)能將Oracle數(shù)據(jù)庫中的數(shù)據(jù)同步或異步拷貝到不同的數(shù)據(jù)庫中。將數(shù)據(jù)復(fù)制到復(fù)制環(huán)境數(shù)據(jù)庫的技術(shù)實體叫做物化視圖。物化視圖可以是只讀的、可更新的或可寫的[4]。

該技術(shù)在不同Oracle數(shù)據(jù)庫之間進(jìn)行復(fù)制時可以是同步的,也可以是異步的[5]。同步復(fù)制,即復(fù)制數(shù)據(jù)在任何時間、任何復(fù)制節(jié)點均保持一致。如果復(fù)制環(huán)境中的任何一個節(jié)點的復(fù)制數(shù)據(jù)發(fā)生了更新操作,這種變化會立刻反映到其他所有的復(fù)制節(jié)點上。異步復(fù)制,即所有復(fù)制節(jié)點的數(shù)據(jù)在一定時間內(nèi)是不同步的。如果復(fù)制環(huán)境中一個節(jié)點的復(fù)制數(shù)據(jù)發(fā)生了更新操作,這種改變將在不同的事務(wù)中被傳播和應(yīng)用到其他所有復(fù)制節(jié)點。這些不同的事務(wù)間可以間隔幾秒、幾分種、幾小時,也可以是幾天之后。復(fù)制節(jié)點之間的數(shù)據(jù)臨時是不同步的,但傳播最終將保證所有復(fù)制節(jié)點間的數(shù)據(jù)一致。

(1)容災(zāi)系統(tǒng)使用異步可寫物化視圖方案

啟動營業(yè)應(yīng)急系統(tǒng)要求容災(zāi)數(shù)據(jù)庫的這些物化視圖是可寫的,這樣才能保證系統(tǒng)的正常運行,但是又不要求這些變更數(shù)據(jù)同步至生產(chǎn)系統(tǒng),因為現(xiàn)在的生產(chǎn)系統(tǒng)已經(jīng)遭到破壞??蓪懙奈锘晥D允許用戶通過在這個可寫的物化視圖上進(jìn)行插入、更新和刪除行的操作,但是這些操作不會同樣地插入、更新和刪除主表或主實體化視圖上的行。因此容災(zāi)數(shù)據(jù)庫中應(yīng)該使用這種可寫的物化視圖;同時容災(zāi)數(shù)據(jù)庫的表結(jié)構(gòu)、索引、存儲結(jié)構(gòu)應(yīng)該與生產(chǎn)數(shù)據(jù)庫保持一致,使用該同步軟件中的普通初始同步方式來完全拷貝生產(chǎn)系統(tǒng)的表和索引定義。容災(zāi)系統(tǒng)數(shù)據(jù)同步流程如圖3所示[6]。

當(dāng)災(zāi)難發(fā)生時,應(yīng)該首先停止生產(chǎn)系統(tǒng)到容災(zāi)系統(tǒng)的同步軟件,然后啟動營業(yè)應(yīng)急系統(tǒng)以保證繼續(xù)營業(yè);同時因為同步延時了幾分鐘(最長不超過5min),所以有可能會丟失少量數(shù)據(jù)。部分丟失的數(shù)據(jù)需要通過營業(yè)補錄的方式解決。

(2)數(shù)據(jù)倉庫是使用異步只讀物化視圖的方案

數(shù)據(jù)倉庫只要求對讀取生產(chǎn)的數(shù)據(jù)進(jìn)行分析,因此數(shù)據(jù)倉庫的這些物化視圖是只讀的就可以了。只讀物化視圖提供只讀的訪問表數(shù)據(jù)。這個表數(shù)據(jù)來源于一個主體站點或一個主物化視圖站點,因此數(shù)據(jù)倉庫中采用這種只讀物化視圖。另外,數(shù)據(jù)倉庫在分析時一般需要掃描這些物化視圖,需要建立與生產(chǎn)數(shù)據(jù)庫不同的表和索引結(jié)構(gòu),如對表進(jìn)行分區(qū)、建立數(shù)據(jù)分析需要的索引等。因此應(yīng)該使用該同步軟件中的分區(qū)初始同步和條件初始同步方式來建立合適的物化視圖及索引。數(shù)據(jù)倉庫數(shù)據(jù)同步流程如圖4所示。

4結(jié)束語

從這次生產(chǎn)數(shù)據(jù)的及時準(zhǔn)確同步到異地容災(zāi)和數(shù)據(jù)倉庫的實施過程中,筆者通過摸索解決了同步過程中的性能問題,從而最終解決了Oracle高級復(fù)制技術(shù)同步的可行性,保證了同步的效率;在實施和維護(hù)的過程中,筆者還逐步發(fā)現(xiàn)了該技術(shù)本身存在的問題并注意加以解決,從而保證了同步的穩(wěn)定性和準(zhǔn)確性。從這次同步實施過程看,任何技術(shù)都存在缺陷,但是本文的探索和創(chuàng)意可以彌補這些缺陷。該系統(tǒng)對于很多企業(yè)在設(shè)計數(shù)據(jù)倉庫和異地容災(zāi)系統(tǒng)中數(shù)據(jù)同步的方案時有一定的推廣意義。

參考文獻(xiàn):

[1]王樹鵬,云曉春,余翔湛,等.容災(zāi)的理論與關(guān)鍵技術(shù)分析[J].計算機(jī)工程與應(yīng)用,2004,40(28):54-58.

[2]劉迎風(fēng),祁明.容災(zāi)技術(shù)及其應(yīng)用[J].計算機(jī)應(yīng)用研究,2002,19(6):7-10.

[3]楊朝紅,宮云戰(zhàn),桑偉前,等.基于主從異步復(fù)制技術(shù)的容災(zāi)實時系統(tǒng)研究與實現(xiàn)[J].計算機(jī)研究與發(fā)展,2003,40(7):1104-1109.

[4]徐秀華,文必龍,畢碩本.Oracle9i高級復(fù)制技術(shù)及其應(yīng)用[J].計算機(jī)應(yīng)用研究,2003,20(11):107-109.

[5]蘇燕強(qiáng).Oracle分布式數(shù)據(jù)庫及其應(yīng)用研究[J].計算機(jī)應(yīng)用與軟件,2004,21(8):36-37,121.

[6]葛衛(wèi)民,張鋼,舒炎泰.基于Oracle高級復(fù)制的分布式數(shù)據(jù)庫系統(tǒng)應(yīng)用研究[J].計算機(jī)工程與應(yīng)用,2003,39(21):186-188,191.