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