電信核心業(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)士)。圖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)。
中國(guó)計(jì)費(fèi)網(wǎng)(www.billingchina.com)
容災(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 |