首頁>>>技術(shù)>>>計費(fèi)  計費(fèi)產(chǎn)品

電信核心業(yè)務(wù)系統(tǒng)容災(zāi)解決方案

Oracle 技術(shù)產(chǎn)品咨詢顧問 高壯志 2004/05/24

  隨著電信運(yùn)營商多年的系統(tǒng)建設(shè),其核心業(yè)務(wù)系統(tǒng)的高可用性越來越受到人們的關(guān)注。從整個系統(tǒng)的角度來看高可用性,包括主機(jī)、操作系統(tǒng)、數(shù)據(jù)庫、應(yīng)用、網(wǎng)絡(luò)設(shè)備等許多方面。而這些系統(tǒng)的一個顯著特點(diǎn)就是以數(shù)據(jù)為中心,因此對數(shù)據(jù)的保護(hù)是整個系統(tǒng)高可用性的核心體現(xiàn)。Oracle數(shù)據(jù)庫作為電信運(yùn)營商核心系統(tǒng)的主流數(shù)據(jù)庫,針對企業(yè)用戶的重要數(shù)據(jù)、重要業(yè)務(wù)高可用性的需求提出了建立在數(shù)據(jù)庫級別的容災(zāi)方案-- Oracle Data Guard (數(shù)據(jù)衛(wèi)士)。

為什么要使用Data Guard
  電信行業(yè)現(xiàn)有系統(tǒng)在容災(zāi)方面基本上有兩種做法。一是采用備份的方法,即定期地將數(shù)據(jù)備份到硬盤和磁帶上。這種方法的缺陷是實時性較差,恢復(fù)時間較長;另外備份設(shè)備和生產(chǎn)系統(tǒng)一般都處于同一物理位置,不能滿足異地容災(zāi)的要求。另一種做法就是硬件鏡像的做法,這種做法在硬件投資上較大,對兩點(diǎn)間網(wǎng)絡(luò)帶寬有較大要求。魚和熊掌,可否兼得?下面讓我們來看看Oracle Data Guard解決方案。

Oracle Data Guard
  Oracle9i Data Guard 維護(hù)了一個或多個與客戶生產(chǎn)數(shù)據(jù)的同步備份。Oracle9i Data Guard配置包括一個松散連接的系統(tǒng)集合,由一個生產(chǎn)數(shù)據(jù)庫和若干備用數(shù)據(jù)庫組成,形成一個獨(dú)立、易于管理的數(shù)據(jù)保護(hù)方案。現(xiàn)有運(yùn)營商的核心業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫在物理位置上往往位于省信息中心或計費(fèi)中心的機(jī)房內(nèi),如果在同一城市有其它機(jī)房或利用其它城市機(jī)房部署同步備份的數(shù)據(jù)庫,通過Oracle網(wǎng)絡(luò)服務(wù)連接到一起,就可以構(gòu)成一個很好的容災(zāi)解決方案。在修改主數(shù)據(jù)庫時,對主數(shù)據(jù)庫更改而生成的更新數(shù)據(jù)即發(fā)送到備用數(shù)據(jù)庫,這些更改在備用數(shù)據(jù)庫被重新應(yīng)用。當(dāng)生產(chǎn)數(shù)據(jù)庫出現(xiàn)故障時,備用數(shù)據(jù)庫可以繼續(xù)提供服務(wù)。

圖1提供了一個例子。


圖1簡單的雙工作區(qū)配置

  由于只是日志文件在主備用數(shù)據(jù)庫之間的傳送,其對應(yīng)用程序是透明的,所以不需更改現(xiàn)有應(yīng)用。由于核心業(yè)務(wù)系統(tǒng)的負(fù)載很大,所以我們也會非常關(guān)心這種數(shù)據(jù)同步是否會對生產(chǎn)數(shù)據(jù)庫產(chǎn)生影響?實際上,生產(chǎn)數(shù)據(jù)庫和備用數(shù)據(jù)庫之間數(shù)據(jù)同步的方式有同步和異步之分,我們可以配置備用數(shù)據(jù)庫使其對主數(shù)據(jù)庫的性能幾乎沒有任何影響。由于僅對生產(chǎn)數(shù)據(jù)庫所做的更改才發(fā)送到備用數(shù)據(jù)庫中,因而這樣的應(yīng)急方案相對于鏡像所有數(shù)據(jù)庫文件記錄的方式來說,能夠與高事務(wù)處理率保持同步,在很大程度上降低了網(wǎng)絡(luò)流量。

  Oracle8i和Oracle9i的第一個版本只支持物理備用數(shù)據(jù)庫,在Oracle9i的第二個版本革命性地引入了邏輯備用數(shù)據(jù)庫。物理備用數(shù)據(jù)庫和邏輯備用數(shù)據(jù)庫的主要區(qū)別在于備用數(shù)據(jù)庫得到日志文件后,如何應(yīng)用日志文件(見圖2)。


圖2 Physical Standby & Logical Standby

  物理備用數(shù)據(jù)庫在應(yīng)用日志文件時,是基于數(shù)據(jù)塊級別來進(jìn)行。因此,要求備用數(shù)據(jù)庫和主數(shù)據(jù)庫具有相同的物理結(jié)構(gòu),而且備用數(shù)據(jù)庫只能處在恢復(fù)狀態(tài)和只讀打開兩種狀態(tài)中的一種。而邏輯備用數(shù)據(jù)庫在應(yīng)用日志文件時,首先將其轉(zhuǎn)化為SQL語句,然后再進(jìn)行同步應(yīng)用。因此,邏輯備用數(shù)據(jù)庫一直處于打開狀態(tài),在應(yīng)用日志文件的同時,可以同時讀取數(shù)據(jù)(見圖3)。


圖3

  邏輯備用數(shù)據(jù)庫與主數(shù)據(jù)庫只要求邏輯結(jié)構(gòu)相同,因此,還可以建立自己的數(shù)據(jù)庫對象,進(jìn)行讀寫操作。這樣備用數(shù)據(jù)庫就可以分擔(dān)一部分主數(shù)據(jù)庫的負(fù)載,如生成報表、備份等,在一定程度上提高了用戶的投資回報。

  Oracle9i Data Guard中主數(shù)據(jù)庫和備用數(shù)據(jù)庫的角色切換有兩種方式:Switch Over和Fail Over。Switch Over使用于計劃內(nèi)宕機(jī)的情況,如主數(shù)據(jù)庫進(jìn)行硬件和操作系統(tǒng)的升級,Switch Over可以在不產(chǎn)生數(shù)據(jù)丟失的情況下,可逆地切換主數(shù)據(jù)庫和備用數(shù)據(jù)庫的角色。切換后,備用數(shù)據(jù)庫成為主數(shù)據(jù)庫,主數(shù)據(jù)庫自動成為備用數(shù)據(jù)庫。在需要時,還可切換回來。如果發(fā)生計劃之外的故障,就需通過Fail Over進(jìn)行角色切換,使備用數(shù)據(jù)庫擔(dān)當(dāng)起主數(shù)據(jù)庫的責(zé)任。這時主數(shù)據(jù)庫不會自動成為備用數(shù)據(jù)庫,并且需要一些手工操作來進(jìn)行恢復(fù)。

  每筆電信業(yè)務(wù)以及計費(fèi)對生產(chǎn)數(shù)據(jù)庫中的數(shù)據(jù)做出修改時,Oracle9i數(shù)據(jù)庫將在一個聯(lián)機(jī)重做日志文件中記錄此次更改。在Data Gurard中可配置寫日志的這個過程,在大的方面可分為同步方式和異步方式。所謂同步方式就是在提交對生產(chǎn)數(shù)據(jù)庫所做的修改時,要求此次修改已在備用數(shù)據(jù)庫被應(yīng)用,在生產(chǎn)數(shù)據(jù)庫的操作才能成功。異步方式是通過維護(hù)一個本地緩存,當(dāng)積累到一定程度時才將日志傳送到備用數(shù)據(jù)庫,在提交事務(wù)時不受備用數(shù)據(jù)庫的影響?梢钥闯鐾椒绞娇筛行У乇Wo(hù)數(shù)據(jù)不丟失,但會對生產(chǎn)數(shù)據(jù)庫的性能有一定影響。異步方式則對生產(chǎn)數(shù)據(jù)庫的性能影響很小,但會存在一定數(shù)據(jù)丟失的可能。

  Oracle9i第二版提供了三種模式來完成備用數(shù)據(jù)庫的日志傳送,通過一些設(shè)置選項,使其可針對不同級別的可用性進(jìn)行設(shè)置。讓我們來看看這三種模式的情況,以及哪些模式適用于我們電信行業(yè)的業(yè)務(wù)系統(tǒng)(見圖4)。


圖4

·最大保護(hù)模式
  最大保護(hù)模式為主數(shù)據(jù)庫提供最高級別的數(shù)據(jù)可用性。它保證在主數(shù)據(jù)庫提交的事務(wù)可在備用數(shù)據(jù)庫恢復(fù)并可用。當(dāng)所有的備用數(shù)據(jù)庫都不可用時,主數(shù)據(jù)庫的處理會自動掛起,保證主數(shù)據(jù)庫和備用數(shù)據(jù)庫之間不會出現(xiàn)不一致。

  在以最大保護(hù)模式運(yùn)行時,日志寫進(jìn)程(LGWR)負(fù)責(zé)將日志記錄從主數(shù)據(jù)庫傳送到備用數(shù)據(jù)庫,在沒有得到傳送數(shù)據(jù)已在備用數(shù)據(jù)庫可用之前,主數(shù)據(jù)庫的事務(wù)不會提交。這會在某種程度上影響主數(shù)據(jù)庫的性能,但最大程度地保護(hù)了數(shù)據(jù)的一致性。

  當(dāng)主數(shù)據(jù)庫出現(xiàn)故障時,因為所有在主數(shù)據(jù)庫提交的事務(wù)都已在備用數(shù)據(jù)庫同步,所以不會有數(shù)據(jù)丟失。

·最高可用模式
  最高可用模式也為主數(shù)據(jù)庫提供了高級別的保護(hù),同最大保護(hù)模式相比,當(dāng)備用數(shù)據(jù)庫不可用時,主數(shù)據(jù)庫不會掛起,而是降為最大性能模式。由于主數(shù)據(jù)庫仍在繼續(xù)運(yùn)行,主數(shù)據(jù)庫和備用數(shù)據(jù)庫之間會出現(xiàn)數(shù)據(jù)不一致的情況。這種模式也是一種同步模式,日志寫進(jìn)程(LGWR)負(fù)責(zé)將日志記錄從主數(shù)據(jù)庫傳送到備用數(shù)據(jù)庫,在沒有得到傳送數(shù)據(jù)已在備用數(shù)據(jù)庫可用之前,主數(shù)據(jù)庫的事務(wù)不會提交。

·最大性能模式
  最大性能模式是缺省的保護(hù)模式,它是一種異步模式。在正常操作過程中,主數(shù)據(jù)庫不會確認(rèn)數(shù)據(jù)是否已經(jīng)在備用數(shù)據(jù)庫可用,就繼續(xù)進(jìn)行本地操作。如果備用數(shù)據(jù)庫出現(xiàn)故障,主數(shù)據(jù)庫的處理也不會掛起,因此它對主數(shù)據(jù)庫的性能影響很小。

  最大保護(hù)模式保證了生產(chǎn)數(shù)據(jù)庫和備用數(shù)據(jù)庫的一致性,但帶來的問題是,如果備用數(shù)據(jù)庫或網(wǎng)絡(luò)出現(xiàn)問題也會造成生產(chǎn)數(shù)據(jù)庫的不可用。因此,建議采用多個備用數(shù)據(jù)庫,只要有一個備用數(shù)據(jù)庫可以同步數(shù)據(jù),生產(chǎn)數(shù)據(jù)庫依然可用。從現(xiàn)有電信行業(yè)容災(zāi)建設(shè)的情況和業(yè)務(wù)特點(diǎn)來看最高可用模式和最大性能模式更貼近現(xiàn)狀,尤其是最大性能模式對生產(chǎn)數(shù)據(jù)庫的性能影響很小。

實際使用情況
  在這里簡單介紹一個某省移動公司帳務(wù)系統(tǒng)采用Oracle Data Guard物理備用數(shù)據(jù)庫的情況(見圖5)。


  這是一個典型的將Oracle集群數(shù)據(jù)庫RAC和Data Guard相結(jié)合的容災(zāi)方式。在主數(shù)據(jù)庫采用四個節(jié)點(diǎn)的集群數(shù)據(jù)庫(RAC),數(shù)據(jù)存放在共享的裸設(shè)備上。集群數(shù)據(jù)庫針對服務(wù)器故障提供了保護(hù),并可分擔(dān)負(fù)載,在此基礎(chǔ)上,采用異步物理備用數(shù)據(jù)庫來保護(hù)數(shù)據(jù),其中日志傳送的間隔平均為半個小時,主數(shù)據(jù)庫的數(shù)據(jù)量在1TB左右。

結(jié)束語
  "居安思危"這句成語同樣適用于我們電信行業(yè)核心業(yè)務(wù)系統(tǒng)的建設(shè),隨著電信行業(yè)競爭的加劇,電信運(yùn)營商在推出各種業(yè)務(wù)服務(wù)用戶的同時,如何建設(shè)和完善自己內(nèi)部的核心業(yè)務(wù)系統(tǒng),提供可靠的業(yè)務(wù)保障,Oracle Data Guard正是針對核心業(yè)務(wù)系統(tǒng)高可用性的需求,從數(shù)據(jù)庫角度提出的解決方案。

中國計費(fèi)網(wǎng)(www.billingchina.com)


相關(guān)鏈接:
容災(zāi)項目需要注意的幾大問題 2004-05-24
固話計費(fèi) 帳務(wù)優(yōu)惠 2004-05-24
云南聯(lián)通容災(zāi)實施案例 李衛(wèi)民 2004-05-24
容災(zāi)—讓BOSS更美好 2004-05-24
應(yīng)用集成:最大化電信OSS效能 2004-04-26

分類信息:  電信_與_計費(fèi)     文摘   行業(yè)_電信_解決方案   技術(shù)_計費(fèi)_文摘