俞群愛
(浙江傳媒學(xué)院現(xiàn)代教育技術(shù)中心,杭州 310018)
Oracle-AR多主體復(fù)制方式(Advanced Replication Multi-master Replication)是Oracle數(shù)據(jù)庫提供的一種數(shù)據(jù)對稱復(fù)制方式,它通過Oracle的一些進程完成數(shù)據(jù)庫對象的復(fù)制、保存,使多個數(shù)據(jù)庫組成一個分布式的系統(tǒng)。所有在一臺服務(wù)器的數(shù)據(jù)改變會被捕捉并提交到另一臺服務(wù)器上,從而實現(xiàn)兩臺數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)同步。使用Oracle-AR多主體復(fù)制方式可以實現(xiàn)數(shù)據(jù)的高可用性,當(dāng)復(fù)制對其中一臺主機出現(xiàn)問題時,應(yīng)用可以在另一臺主機上正常運行,保證應(yīng)用的連續(xù)性[1]。
Oracle-AR多主體復(fù)制方式由兩臺數(shù)據(jù)庫服務(wù)器組成,一臺為源數(shù)據(jù)庫,一臺為目的數(shù)據(jù)庫。源數(shù)據(jù)庫和目的數(shù)據(jù)庫的構(gòu)成是相同的,都由錯誤日志(Error log)、內(nèi)部過程、復(fù)制表、內(nèi)部觸發(fā)器、延遲事務(wù)隊列和后臺進程(SMON PMON)等6部分組成,如圖1所示。
在多臺數(shù)據(jù)庫服務(wù)器上需要同步的對象稱為復(fù)制對象,復(fù)制對象的集合稱為復(fù)制組。內(nèi)部觸發(fā)器(Inner Trigger)捕捉復(fù)制組里復(fù)制對象的數(shù)據(jù)變化,以事務(wù)的形式存放在延遲事務(wù)隊列(Deferred Transaction Queue)里。在規(guī)定的時間點,后臺進程激活作業(yè),作業(yè)把延遲的事務(wù)推送到目的數(shù)據(jù)庫。目的數(shù)據(jù)庫上的內(nèi)部過程接收到延遲事務(wù),在復(fù)制組里的相應(yīng)對象里執(zhí)行該事務(wù),如果事務(wù)不能成功執(zhí)行,則保存在錯誤隊列里。至此,一個完整的同步過程就結(jié)束了。由于數(shù)據(jù)庫內(nèi)部高級復(fù)制構(gòu)成是完全一樣的,源數(shù)據(jù)庫和目的數(shù)據(jù)庫概念是相對的,只要是發(fā)起事務(wù)的數(shù)據(jù)庫均可稱為源數(shù)據(jù)庫。
圖1 Oracle-AR的內(nèi)部機制圖Fig.1 Oracle-AR interior system
Oracle-AR多主體復(fù)制方式通過事務(wù)的傳遞達到兩臺或多臺數(shù)據(jù)庫服務(wù)器數(shù)據(jù)的一致,保障了數(shù)據(jù)的安全性,保證了數(shù)據(jù)的可用性,成為理想的數(shù)據(jù)庫容錯方案,其應(yīng)用廣泛,如聯(lián)網(wǎng)售票系統(tǒng)[2]、遠(yuǎn)程倉儲配送系統(tǒng)[3]等。Oracle-AR多主體復(fù)制方式具有以下5個方面的優(yōu)點。
(1)高可用性
有多份“一致”數(shù)據(jù),后臺應(yīng)用可以連任何一臺數(shù)據(jù)庫服務(wù)器,并且多臺數(shù)據(jù)庫服務(wù)器均是可讀可寫,增加并行性。
(2)支持應(yīng)用鏈接切換
很好地支持Failover(主要針對主庫失效等故障原因)與Switchover(針對主庫升級等維護原因)兩種切換方式。切換時間快,損失的鏈接較少。
(3)部署維護監(jiān)控容易
Oracle-AR多主體復(fù)制方式部署簡單易行,可以通過OEM(Oracle EnterprisesManagement)工具容易監(jiān)控運行狀態(tài),操作方便。
(4)較強的容錯性
Oracle-AR的多主體復(fù)制方式同步的粒度是事務(wù),所有的事務(wù)均存放在隊列中,不能成功執(zhí)行的事務(wù)也會保存起來,待以后重用。
(5)可擴展性好
Oracle AR對稱復(fù)制能同步多臺數(shù)據(jù)庫服務(wù)器上的數(shù)據(jù),而且擴展不需改動先前部署站點。
Oracle-AR多主體對稱復(fù)制方式的部署雖然與實際應(yīng)用環(huán)境有關(guān),但基本上可以分為兩個階段,即數(shù)據(jù)庫服務(wù)器間通信配置階段和多主體對稱復(fù)制的配置階段,如圖2所示。
圖2 Oracle-AR多主體復(fù)制部署步驟Fig.2 Steps of Oracle-AR multi-master replication
2.1.1 參數(shù)初始化
部署Oracle-AR對稱復(fù)制多主體方式需要調(diào)整一些初始化參數(shù)。這些參數(shù)設(shè)置如果不合理,可能成為多主體方式運行的瓶頸。需修改的參數(shù)有:
(1)global-names=true(數(shù)據(jù)庫鏈接名(database link)必須與被連接的數(shù)據(jù)庫名稱一致);
(2)job-queue-processes=15(指SNP(Snapshot Process)進程的啟動個數(shù)為15。系統(tǒng)缺省值為0,正常定義范圍為0~36,根據(jù)任務(wù)的多少,可以配置不同的數(shù)值。)
2.1.2 網(wǎng)絡(luò)通信文件
NET8是Oracle網(wǎng)絡(luò)通信機制,支持本地客戶端訪問遠(yuǎn)程數(shù)據(jù)庫,實現(xiàn)了分布式數(shù)據(jù)庫方式和Oracle的分布式處理。配置NET8可以實現(xiàn)后臺應(yīng)用連接數(shù)據(jù)庫的透明切換。
2.1.3 數(shù)據(jù)庫鏈接
數(shù)據(jù)庫鏈接是兩個物理數(shù)據(jù)庫服務(wù)器間的通道,它允許客戶端方便地訪問對端的數(shù)據(jù)庫。數(shù)據(jù)庫鏈接是單向的,要想使數(shù)據(jù)庫間可以互相訪問,需要建立兩條數(shù)據(jù)庫鏈接。在Oracle-AR對稱復(fù)制多主體方式中建立數(shù)據(jù)庫鏈接,是為了延遲事務(wù)能夠安全可靠地到達對端數(shù)據(jù)庫。
2.2.1 創(chuàng)建管理用戶
Oracle-AR多主體復(fù)制方式的維護和部署操作都在一個獨立的帳戶下進行的,這個帳戶為REPADMIN。
2.2.2 創(chuàng)建復(fù)制組和添加復(fù)制對象
Oracle-AR多主體復(fù)制方式支持的復(fù)制對象的種類很多,基本上涵蓋了數(shù)據(jù)庫所有的對象,主要有表,索引,包體,存儲過程函數(shù),觸發(fā)器,同義詞等對象。
2.2.3 復(fù)制點
Oracle-AR多主體復(fù)制方式把所有需要進行同步的數(shù)據(jù)庫服務(wù)器稱為主體站點(Master Site)。把可以進行復(fù)制管理操作的站點稱為主體定義站點(Master Defined Site)。主體定義站點只能有一個,主體站點可以有多個,在主體定義站點實施的管理操作會自動同步到各個主體站點執(zhí)行。
2.2.4 設(shè)置沖突解決方案
由于Oracle-AR內(nèi)的每個數(shù)據(jù)庫上的數(shù)據(jù)可讀可修改,如果正好兩臺數(shù)據(jù)庫分別對同一復(fù)制對象的同一數(shù)據(jù)進行修改,就會發(fā)生數(shù)據(jù)沖突,需要一種機制來解決這種危險的情況,這種機制稱為沖突解決方案。Oracle提供很多的沖突解決策略,用戶也可以定制自己的沖突解決策略。
2.2.5 設(shè)置推送策略
推送策略是指將延遲事務(wù)隊列里的事務(wù)通過數(shù)據(jù)鏈路推送到多個數(shù)據(jù)庫的時間安排。如果推送時間過短,對數(shù)據(jù)庫性能影響較大,如果推送時間過長,各個數(shù)據(jù)庫上的數(shù)據(jù)存在不一致性,而且增加了沖突可能性。
彩鈴(Color Ring Back Tone,CRBT)業(yè)務(wù)是移動運營商為迎合年輕人時尚前衛(wèi)而開通的業(yè)務(wù)。該業(yè)務(wù)旨在張揚個性,與人們的生活息息相關(guān)。如果彩鈴業(yè)務(wù)不能正常運行,或者定制的鈴音混亂,會導(dǎo)致大量的客戶投訴。因此,為彩鈴業(yè)務(wù)設(shè)計的數(shù)據(jù)庫方案既要保證數(shù)據(jù)安全性,又要保證業(yè)務(wù)的連續(xù)性。同時,考慮到彩鈴業(yè)務(wù)的特點,在初期定制時修改數(shù)據(jù)量較大,到后期改動比較平穩(wěn),我們決定采用Oracle-AR多主體復(fù)制方式。
為了支持應(yīng)用連接數(shù)據(jù)庫的透明切換,我們把兩臺服務(wù)器上的數(shù)據(jù)庫設(shè)置成完全一樣的,具體配置如表1所示。
表1 彩鈴業(yè)務(wù)服務(wù)器/數(shù)據(jù)庫的配置Table 1 The configuration of server database of CRBT service
配置NET8網(wǎng)絡(luò)連接,為了實現(xiàn)對應(yīng)用透明數(shù)據(jù)庫連接,需要配置虛網(wǎng)絡(luò)服務(wù)名iip.ebupt.com,虛網(wǎng)絡(luò)服務(wù)名會動態(tài)綁定iip1上或iip2上數(shù)據(jù)庫。配置如下:
在tnsnames.ora里設(shè)置數(shù)據(jù)庫連接字符串,使兩臺數(shù)據(jù)庫之間可以互相訪問。
去除listener.ora中(GLOBAL-DBNAME=iip.ebupt.com)項,配置模式如下:
由于iip1和iip2上的數(shù)據(jù)庫名和域名均相同,使得它們的global-name也相同,不能順利地建立數(shù)據(jù)庫鏈接,因此,需要強制地轉(zhuǎn)換一下數(shù)據(jù)庫的全局名:
alter database rename global-name to IIP1.EBUPT.COM;
alter database rename global-name to IIP2.EBUPT.COM;
后續(xù)的操作與正常的部署流程完全一樣,這里不再贅述。
Oracle-AR多主體復(fù)制方式成功滿足了移動彩鈴業(yè)務(wù)的需求,保證了數(shù)據(jù)的安全性和可靠性,同時實現(xiàn)了數(shù)據(jù)的高可用性,在出現(xiàn)單點故障時,彩鈴應(yīng)用能很快地切換到另外數(shù)據(jù)庫上,保證了業(yè)務(wù)的連續(xù)性,可為彩鈴用戶提供可靠、高質(zhì)量的服務(wù)。
[1] 徐秀華,文必龍,畢碩本.Oracle 9i高級復(fù)制技術(shù)及其應(yīng)用[J].計算機應(yīng)用研究,2003(11):107-109.XU Xiu-hua,WEN Bi-long,BI Shuo-ben.Oracle 9i Advanced Replication Technology and Its Applications[J].Application Research of Computers,2003(11):107-109.(in Chinese)
[2] 李振宏.基于Oracle高級復(fù)制的聯(lián)網(wǎng)售票系統(tǒng)數(shù)據(jù)庫設(shè)計[J].電腦開發(fā)與應(yīng)用,2007,20(5):62-63.LI Zhen-hong.The network ticketing system database design of Oracle-based Advanced Replication[J].Computer Development&Applications,2007,20(5):62-63.(in Chinese)
[3] 姚東.Oracle高級復(fù)制技術(shù)在“遠(yuǎn)程倉儲配送”系統(tǒng)的應(yīng)用[J].現(xiàn)代計算機,2002(9):29-32.YAO Dong.Oracle advanced replication technology in the“remote storage and distribution” system application[J].Modern Computer,2002(9):29-32.(in Chinese)