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

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

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

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

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

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

圖1提供了一個(gè)例子。


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

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

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


圖2 Physical Standby & Logical Standby

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


圖3

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

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

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

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


圖4

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

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

  當(dāng)主數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí),因?yàn)樗性谥鲾?shù)據(jù)庫(kù)提交的事務(wù)都已在備用數(shù)據(jù)庫(kù)同步,所以不會(huì)有數(shù)據(jù)丟失。

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

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

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

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


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

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

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


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

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