異地容災和數(shù)據(jù)同步思考
時間:2022-10-25 07:39:00
導語:異地容災和數(shù)據(jù)同步思考一文來源于網友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要:以異地容災系統(tǒng)和數(shù)據(jù)倉庫需要實時同步生產系統(tǒng)的數(shù)據(jù)為背景,介紹了一個異地容災系統(tǒng)和數(shù)據(jù)倉庫中數(shù)據(jù)同步軟件的功能模型;對兩個系統(tǒng)中數(shù)據(jù)同步的設計和體系結構作了介紹,并闡述了該數(shù)據(jù)同步軟件所采用的Oracle高級復制技術。
關鍵詞:數(shù)據(jù)同步;容災系統(tǒng);數(shù)據(jù)倉庫;Oracle高級復制
0引言
盡管人們小心謹慎,各種各樣的災難仍不可避免,如系統(tǒng)硬件故障、網絡故障、機房斷電甚至火災、地震,廣為人知的“9·11”事件就是觸目驚心的例子[1]。這些災難造成了重要數(shù)據(jù)的丟失,影響了企業(yè)的正常運轉[2]。另外,激烈的市場競爭迫使企業(yè)高層尋找更為科學、系統(tǒng)、有效的輔助決策技術和整體解決方案來處理日益復雜的公司事務。數(shù)據(jù)挖掘就成了很好的選擇之一,但是數(shù)據(jù)挖掘需要大量的生產數(shù)據(jù),有時甚至是實時的生產數(shù)據(jù)。如果直接在生產系統(tǒng)上進行數(shù)據(jù)挖掘,必然會影響到生產的效率,并將嚴重威脅生產的穩(wěn)定運行。如何在災難發(fā)生時能夠保留生產數(shù)據(jù),并啟用異地容災系統(tǒng)及時恢復生產,如何把生產數(shù)據(jù)及時傳遞到數(shù)據(jù)倉庫供數(shù)據(jù)挖掘使用,這些是現(xiàn)代企業(yè)需要面對的共同問題。
近年來為了解決上述問題,許多企業(yè)不惜耗費巨資來分別建立異地容災系統(tǒng)和數(shù)據(jù)倉庫。但遺憾的是,很多系統(tǒng)由于無法及時準確地同步生產數(shù)據(jù),不能有效地運行。鑒于此,筆者設計并開發(fā)了一套基于Oracle高級復制技術的數(shù)據(jù)同步軟件,實現(xiàn)了將一個數(shù)據(jù)容量為3TB的Oracle9iRAC數(shù)據(jù)庫的生產數(shù)據(jù)及時準確同步到異地容災系統(tǒng)和數(shù)據(jù)倉庫。該系統(tǒng)不僅將對原生產系統(tǒng)的影響降至最小,還極大地降低了項目費用。
1軟件模型
該軟件的功能模型圖如圖1所示。
(1)初始同步模塊
該模塊主要是在表進行初始同步時使用的;它能夠根據(jù)實際需要生成物化視圖及其索引的創(chuàng)建語句,并完成表的初始同步。如果沒有特別的要求,則調用普通初始同步子模塊進行目的端表的初始同步,創(chuàng)建語句將從源數(shù)據(jù)庫獲取;如果有特別的要求,如按指定的分區(qū)初始同步或者按照一定的條件進行初始同步,則會根據(jù)這些要求調用分區(qū)初始同步或條件初始同步子模塊生成特定的創(chuàng)建語句來進行目的端表的初始同步。該模塊能夠批量自動進行表的初始同步,從而大大減少了人工干預,保證了初始同步的準確性和自動化。
(2)調度模塊
由于源端的數(shù)據(jù)在時刻變化著,在初始同步模塊的基礎上需要有一個調度模塊將這些不斷變化的數(shù)據(jù)同步到目的端,使目的端與源端始終保持數(shù)據(jù)一致性。該模塊中的增量調度子模塊是在表的增量同步過程中使用的,并能根據(jù)刷新間隔要求對目的端表進行及時準確的刷新;完全刷新調度子模塊是在對表進行重新同步時使用;特殊要求調度模塊是給需要做特殊同步的表使用的,如需要暫時停止同步、在每天的固定時間不同步等。
(3)監(jiān)控模塊
該模塊是為了及時發(fā)現(xiàn)同步中斷和同步效率低的表。由于其告警方式為短信告警,可以實現(xiàn)任何時間、任何地點的告警,保證了能在第一時間發(fā)現(xiàn)同步的中斷以及同步效率低下的情況,實現(xiàn)了異常處理的及時性。
(4)錯誤處理模塊
該模塊主要是處理同步刷新過程中出現(xiàn)的各種錯誤。通過對捕獲的錯誤進行相應的處理,從而保證同步能夠穩(wěn)定、高效地運行。另外,由于Oracle高級復制技術自身存在一定的缺陷,需要使用該模塊來捕獲造成數(shù)據(jù)不準的源頭,并進行相應的處理。
(5)優(yōu)化模塊
該模塊主要是處理同步過程中出現(xiàn)的性能瓶頸,保證能夠及時發(fā)現(xiàn)性能問題并采取相應的優(yōu)化手段來加以維護,包括源端優(yōu)化和目的端優(yōu)化。
2系統(tǒng)設計和體系結構
數(shù)據(jù)倉庫中同步的數(shù)據(jù)只要實現(xiàn)小時級別的同步就可以滿足要求,但異地容災的數(shù)據(jù)庫實時性較高,基本上都要求實現(xiàn)分鐘級別的同步。現(xiàn)在生產數(shù)據(jù)庫總的數(shù)據(jù)量約為3TB,容災需要同步的數(shù)據(jù)量比數(shù)據(jù)倉庫要大得多,而且數(shù)據(jù)倉庫需要同步的數(shù)據(jù)都可以從容災系統(tǒng)中獲取;另外,生產數(shù)據(jù)庫的性能和穩(wěn)定程度對公司生產有直接的影響。因此在同步過程中,不僅應該盡量減少生產數(shù)據(jù)庫的負擔,還應該盡量避免同步過程中的異常情況,如網絡故障、同步性能低下等問題[3]。基于以上考慮,筆者設計了如下方案:先將生產數(shù)據(jù)同步到異地容災系統(tǒng)后,再以異地容災系統(tǒng)為數(shù)據(jù)源同步數(shù)據(jù)到數(shù)據(jù)倉庫。
系統(tǒng)的體系結構如圖2所示。
(1)生產系統(tǒng)數(shù)據(jù)同步到異地容災系統(tǒng)
生產系統(tǒng)與異地容災系統(tǒng)之間是通過百兆網連接的;生產系統(tǒng)的數(shù)據(jù)庫是Oracle9iRAC,總的數(shù)據(jù)量大約為3TB,涉及五千多張表。對這些表進行分析歸類,發(fā)現(xiàn)容災系統(tǒng)真正需要實時同步的表大約只有五百張,數(shù)據(jù)量約為1TB,只要能夠把這五百張表的變更及時準確地進行同步,即可在生產系統(tǒng)發(fā)生災難時,啟用異地容災的營業(yè)應急系統(tǒng)。鑒于此,本系統(tǒng)數(shù)據(jù)庫使用Oracle9i,同步軟件實時同步這關鍵的五百張表的變更。這樣大大減少了同步的數(shù)據(jù)量,也最大限度地減少了生產系統(tǒng)的負擔。從同步運行情況看,該同步軟件對生產系統(tǒng)的影響可以忽視。
(2)異地容災系統(tǒng)數(shù)據(jù)同步到數(shù)據(jù)倉庫
異地容災系統(tǒng)與數(shù)據(jù)倉庫之間是通過百兆網連接的;數(shù)據(jù)倉庫需要的生產數(shù)據(jù)從異地容災系統(tǒng)數(shù)據(jù)庫獲取,因此數(shù)據(jù)倉庫也采用Oracle9i數(shù)據(jù)庫。數(shù)據(jù)倉庫需要實時同步的表大約為三百張。從同步運行情況看,同步生產數(shù)據(jù)延時大約為十分鐘,能滿足數(shù)據(jù)倉庫的要求,并且與生產環(huán)境沒有任何關系,不會對生產環(huán)境造成影響。該系統(tǒng)結構使系統(tǒng)在各個實現(xiàn)層次上均具有明確的界限和分工,既避免了相互影響,簡化了數(shù)據(jù)同步的難度,又實現(xiàn)了對生產系統(tǒng)的影響達到最小化。該結構使得系統(tǒng)易于維護、擴展性好、安全性好、穩(wěn)定性好。
3采用的關鍵技術
同步軟件采用的關鍵技術為Oracle高級復制技術。該技術能將Oracle數(shù)據(jù)庫中的數(shù)據(jù)同步或異步拷貝到不同的數(shù)據(jù)庫中。將數(shù)據(jù)復制到復制環(huán)境數(shù)據(jù)庫的技術實體叫做物化視圖。物化視圖可以是只讀的、可更新的或可寫的[4]。
該技術在不同Oracle數(shù)據(jù)庫之間進行復制時可以是同步的,也可以是異步的[5]。同步復制,即復制數(shù)據(jù)在任何時間、任何復制節(jié)點均保持一致。如果復制環(huán)境中的任何一個節(jié)點的復制數(shù)據(jù)發(fā)生了更新操作,這種變化會立刻反映到其他所有的復制節(jié)點上。異步復制,即所有復制節(jié)點的數(shù)據(jù)在一定時間內是不同步的。如果復制環(huán)境中一個節(jié)點的復制數(shù)據(jù)發(fā)生了更新操作,這種改變將在不同的事務中被傳播和應用到其他所有復制節(jié)點。這些不同的事務間可以間隔幾秒、幾分種、幾小時,也可以是幾天之后。復制節(jié)點之間的數(shù)據(jù)臨時是不同步的,但傳播最終將保證所有復制節(jié)點間的數(shù)據(jù)一致。
(1)容災系統(tǒng)使用異步可寫物化視圖方案
啟動營業(yè)應急系統(tǒng)要求容災數(shù)據(jù)庫的這些物化視圖是可寫的,這樣才能保證系統(tǒng)的正常運行,但是又不要求這些變更數(shù)據(jù)同步至生產系統(tǒng),因為現(xiàn)在的生產系統(tǒng)已經遭到破壞。可寫的物化視圖允許用戶通過在這個可寫的物化視圖上進行插入、更新和刪除行的操作,但是這些操作不會同樣地插入、更新和刪除主表或主實體化視圖上的行。因此容災數(shù)據(jù)庫中應該使用這種可寫的物化視圖;同時容災數(shù)據(jù)庫的表結構、索引、存儲結構應該與生產數(shù)據(jù)庫保持一致,使用該同步軟件中的普通初始同步方式來完全拷貝生產系統(tǒng)的表和索引定義。容災系統(tǒng)數(shù)據(jù)同步流程如圖3所示[6]。
當災難發(fā)生時,應該首先停止生產系統(tǒng)到容災系統(tǒng)的同步軟件,然后啟動營業(yè)應急系統(tǒng)以保證繼續(xù)營業(yè);同時因為同步延時了幾分鐘(最長不超過5min),所以有可能會丟失少量數(shù)據(jù)。部分丟失的數(shù)據(jù)需要通過營業(yè)補錄的方式解決。
(2)數(shù)據(jù)倉庫是使用異步只讀物化視圖的方案
數(shù)據(jù)倉庫只要求對讀取生產的數(shù)據(jù)進行分析,因此數(shù)據(jù)倉庫的這些物化視圖是只讀的就可以了。只讀物化視圖提供只讀的訪問表數(shù)據(jù)。這個表數(shù)據(jù)來源于一個主體站點或一個主物化視圖站點,因此數(shù)據(jù)倉庫中采用這種只讀物化視圖。另外,數(shù)據(jù)倉庫在分析時一般需要掃描這些物化視圖,需要建立與生產數(shù)據(jù)庫不同的表和索引結構,如對表進行分區(qū)、建立數(shù)據(jù)分析需要的索引等。因此應該使用該同步軟件中的分區(qū)初始同步和條件初始同步方式來建立合適的物化視圖及索引。數(shù)據(jù)倉庫數(shù)據(jù)同步流程如圖4所示。
4結束語
從這次生產數(shù)據(jù)的及時準確同步到異地容災和數(shù)據(jù)倉庫的實施過程中,筆者通過摸索解決了同步過程中的性能問題,從而最終解決了Oracle高級復制技術同步的可行性,保證了同步的效率;在實施和維護的過程中,筆者還逐步發(fā)現(xiàn)了該技術本身存在的問題并注意加以解決,從而保證了同步的穩(wěn)定性和準確性。從這次同步實施過程看,任何技術都存在缺陷,但是本文的探索和創(chuàng)意可以彌補這些缺陷。該系統(tǒng)對于很多企業(yè)在設計數(shù)據(jù)倉庫和異地容災系統(tǒng)中數(shù)據(jù)同步的方案時有一定的推廣意義。
參考文獻:
[1]王樹鵬,云曉春,余翔湛,等.容災的理論與關鍵技術分析[J].計算機工程與應用,2004,40(28):54-58.
[2]劉迎風,祁明.容災技術及其應用[J].計算機應用研究,2002,19(6):7-10.
[3]楊朝紅,宮云戰(zhàn),桑偉前,等.基于主從異步復制技術的容災實時系統(tǒng)研究與實現(xiàn)[J].計算機研究與發(fā)展,2003,40(7):1104-1109.
[4]徐秀華,文必龍,畢碩本.Oracle9i高級復制技術及其應用[J].計算機應用研究,2003,20(11):107-109.
[5]蘇燕強.Oracle分布式數(shù)據(jù)庫及其應用研究[J].計算機應用與軟件,2004,21(8):36-37,121.
[6]葛衛(wèi)民,張鋼,舒炎泰.基于Oracle高級復制的分布式數(shù)據(jù)庫系統(tǒng)應用研究[J].計算機工程與應用,2003,39(21):186-188,191.
- 上一篇:RFID生豬解決方案思考
- 下一篇:新聚類判別分析研究思考