電信核心業(yè)務系統(tǒng)容災解決方案
Oracle 技術產(chǎn)品咨詢顧問 高壯志 2004/05/24
隨著電信運營商多年的系統(tǒng)建設,其核心業(yè)務系統(tǒng)的高可用性越來越受到人們的關注。從整個系統(tǒng)的角度來看高可用性,包括主機、操作系統(tǒng)、數(shù)據(jù)庫、應用、網(wǎng)絡設備等許多方面。而這些系統(tǒng)的一個顯著特點就是以數(shù)據(jù)為中心,因此對數(shù)據(jù)的保護是整個系統(tǒng)高可用性的核心體現(xiàn)。Oracle數(shù)據(jù)庫作為電信運營商核心系統(tǒng)的主流數(shù)據(jù)庫,針對企業(yè)用戶的重要數(shù)據(jù)、重要業(yè)務高可用性的需求提出了建立在數(shù)據(jù)庫級別的容災方案-- Oracle Data Guard (數(shù)據(jù)衛(wèi)士)。圖1簡單的雙工作區(qū)配置
由于只是日志文件在主備用數(shù)據(jù)庫之間的傳送,其對應用程序是透明的,所以不需更改現(xiàn)有應用。由于核心業(yè)務系統(tǒng)的負載很大,所以我們也會非常關心這種數(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ù)庫中,因而這樣的應急方案相對于鏡像所有數(shù)據(jù)庫文件記錄的方式來說,能夠與高事務處理率保持同步,在很大程度上降低了網(wǎng)絡流量。
Oracle8i和Oracle9i的第一個版本只支持物理備用數(shù)據(jù)庫,在Oracle9i的第二個版本革命性地引入了邏輯備用數(shù)據(jù)庫。物理備用數(shù)據(jù)庫和邏輯備用數(shù)據(jù)庫的主要區(qū)別在于備用數(shù)據(jù)庫得到日志文件后,如何應用日志文件(見圖2)。
圖2 Physical Standby & Logical Standby
物理備用數(shù)據(jù)庫在應用日志文件時,是基于數(shù)據(jù)塊級別來進行。因此,要求備用數(shù)據(jù)庫和主數(shù)據(jù)庫具有相同的物理結構,而且備用數(shù)據(jù)庫只能處在恢復狀態(tài)和只讀打開兩種狀態(tài)中的一種。而邏輯備用數(shù)據(jù)庫在應用日志文件時,首先將其轉(zhuǎn)化為SQL語句,然后再進行同步應用。因此,邏輯備用數(shù)據(jù)庫一直處于打開狀態(tài),在應用日志文件的同時,可以同時讀取數(shù)據(jù)(見圖3)。
圖3
邏輯備用數(shù)據(jù)庫與主數(shù)據(jù)庫只要求邏輯結構相同,因此,還可以建立自己的數(shù)據(jù)庫對象,進行讀寫操作。這樣備用數(shù)據(jù)庫就可以分擔一部分主數(shù)據(jù)庫的負載,如生成報表、備份等,在一定程度上提高了用戶的投資回報。
Oracle9i Data Guard中主數(shù)據(jù)庫和備用數(shù)據(jù)庫的角色切換有兩種方式:Switch Over和Fail Over。Switch
Over使用于計劃內(nèi)宕機的情況,如主數(shù)據(jù)庫進行硬件和操作系統(tǒng)的升級,Switch Over可以在不產(chǎn)生數(shù)據(jù)丟失的情況下,可逆地切換主數(shù)據(jù)庫和備用數(shù)據(jù)庫的角色。切換后,備用數(shù)據(jù)庫成為主數(shù)據(jù)庫,主數(shù)據(jù)庫自動成為備用數(shù)據(jù)庫。在需要時,還可切換回來。如果發(fā)生計劃之外的故障,就需通過Fail
Over進行角色切換,使備用數(shù)據(jù)庫擔當起主數(shù)據(jù)庫的責任。這時主數(shù)據(jù)庫不會自動成為備用數(shù)據(jù)庫,并且需要一些手工操作來進行恢復。
每筆電信業(yè)務以及計費對生產(chǎn)數(shù)據(jù)庫中的數(shù)據(jù)做出修改時,Oracle9i數(shù)據(jù)庫將在一個聯(lián)機重做日志文件中記錄此次更改。在Data Gurard中可配置寫日志的這個過程,在大的方面可分為同步方式和異步方式。所謂同步方式就是在提交對生產(chǎn)數(shù)據(jù)庫所做的修改時,要求此次修改已在備用數(shù)據(jù)庫被應用,在生產(chǎn)數(shù)據(jù)庫的操作才能成功。異步方式是通過維護一個本地緩存,當積累到一定程度時才將日志傳送到備用數(shù)據(jù)庫,在提交事務時不受備用數(shù)據(jù)庫的影響。可以看出同步方式可更有效地保護數(shù)據(jù)不丟失,但會對生產(chǎn)數(shù)據(jù)庫的性能有一定影響。異步方式則對生產(chǎn)數(shù)據(jù)庫的性能影響很小,但會存在一定數(shù)據(jù)丟失的可能。
Oracle9i第二版提供了三種模式來完成備用數(shù)據(jù)庫的日志傳送,通過一些設置選項,使其可針對不同級別的可用性進行設置。讓我們來看看這三種模式的情況,以及哪些模式適用于我們電信行業(yè)的業(yè)務系統(tǒng)(見圖4)。
圖4
·最大保護模式
最大保護模式為主數(shù)據(jù)庫提供最高級別的數(shù)據(jù)可用性。它保證在主數(shù)據(jù)庫提交的事務可在備用數(shù)據(jù)庫恢復并可用。當所有的備用數(shù)據(jù)庫都不可用時,主數(shù)據(jù)庫的處理會自動掛起,保證主數(shù)據(jù)庫和備用數(shù)據(jù)庫之間不會出現(xiàn)不一致。
在以最大保護模式運行時,日志寫進程(LGWR)負責將日志記錄從主數(shù)據(jù)庫傳送到備用數(shù)據(jù)庫,在沒有得到傳送數(shù)據(jù)已在備用數(shù)據(jù)庫可用之前,主數(shù)據(jù)庫的事務不會提交。這會在某種程度上影響主數(shù)據(jù)庫的性能,但最大程度地保護了數(shù)據(jù)的一致性。
當主數(shù)據(jù)庫出現(xiàn)故障時,因為所有在主數(shù)據(jù)庫提交的事務都已在備用數(shù)據(jù)庫同步,所以不會有數(shù)據(jù)丟失。
·最高可用模式
最高可用模式也為主數(shù)據(jù)庫提供了高級別的保護,同最大保護模式相比,當備用數(shù)據(jù)庫不可用時,主數(shù)據(jù)庫不會掛起,而是降為最大性能模式。由于主數(shù)據(jù)庫仍在繼續(xù)運行,主數(shù)據(jù)庫和備用數(shù)據(jù)庫之間會出現(xiàn)數(shù)據(jù)不一致的情況。這種模式也是一種同步模式,日志寫進程(LGWR)負責將日志記錄從主數(shù)據(jù)庫傳送到備用數(shù)據(jù)庫,在沒有得到傳送數(shù)據(jù)已在備用數(shù)據(jù)庫可用之前,主數(shù)據(jù)庫的事務不會提交。
·最大性能模式
最大性能模式是缺省的保護模式,它是一種異步模式。在正常操作過程中,主數(shù)據(jù)庫不會確認數(shù)據(jù)是否已經(jīng)在備用數(shù)據(jù)庫可用,就繼續(xù)進行本地操作。如果備用數(shù)據(jù)庫出現(xiàn)故障,主數(shù)據(jù)庫的處理也不會掛起,因此它對主數(shù)據(jù)庫的性能影響很小。
最大保護模式保證了生產(chǎn)數(shù)據(jù)庫和備用數(shù)據(jù)庫的一致性,但帶來的問題是,如果備用數(shù)據(jù)庫或網(wǎng)絡出現(xiàn)問題也會造成生產(chǎn)數(shù)據(jù)庫的不可用。因此,建議采用多個備用數(shù)據(jù)庫,只要有一個備用數(shù)據(jù)庫可以同步數(shù)據(jù),生產(chǎn)數(shù)據(jù)庫依然可用。從現(xiàn)有電信行業(yè)容災建設的情況和業(yè)務特點來看最高可用模式和最大性能模式更貼近現(xiàn)狀,尤其是最大性能模式對生產(chǎn)數(shù)據(jù)庫的性能影響很小。
實際使用情況
在這里簡單介紹一個某省移動公司帳務系統(tǒng)采用Oracle Data Guard物理備用數(shù)據(jù)庫的情況(見圖5)。
中國計費網(wǎng)(www.billingchina.com)
容災項目需要注意的幾大問題 2004-05-24 |
固話計費 帳務優(yōu)惠 2004-05-24 |
云南聯(lián)通容災實施案例 李衛(wèi)民 2004-05-24 |
容災—讓BOSS更美好 2004-05-24 |
應用集成:最大化電信OSS效能 2004-04-26 |