摘要:隨著企業(yè)信息化的發(fā)展,越來(lái)越多的數(shù)據(jù)被保存在數(shù)據(jù)庫(kù)中,為保護(hù)這些寶貴的信息,各個(gè)數(shù)據(jù)庫(kù)廠家都在其產(chǎn)品中實(shí)現(xiàn)了備份功能,確保當(dāng)數(shù)據(jù)庫(kù)損壞時(shí),可以進(jìn)行數(shù)據(jù)的恢復(fù)。但對(duì)于電信級(jí)企業(yè)來(lái)說(shuō),由于數(shù)據(jù)量非常大,即便有備份,恢復(fù)需要的時(shí)間往往很長(zhǎng),如何盡量縮短恢復(fù)時(shí)間,逐漸成為數(shù)據(jù)備份的一個(gè)重點(diǎn)。本文主要闡述了ORACLE GoldenGate的實(shí)時(shí)數(shù)據(jù)同步功能以及在企業(yè)的信息系統(tǒng)中的應(yīng)用。
關(guān)鍵詞:數(shù)據(jù)庫(kù) GoldenGate 數(shù)據(jù)復(fù)制 容災(zāi)
1 概述
數(shù)據(jù)庫(kù)系統(tǒng)面臨的風(fēng)險(xiǎn)很多,大到自然災(zāi)害、小到病毒、電源故障乃至操作員的意外操作失誤,都會(huì)影響數(shù)據(jù)庫(kù)系統(tǒng)的正常運(yùn)行,甚至造成整個(gè)系統(tǒng)完全癱瘓。數(shù)據(jù)庫(kù)備份,是在數(shù)據(jù)丟失的情況下,能及時(shí)恢復(fù)重要數(shù)據(jù),防止數(shù)據(jù)丟失的一種重要手段。然而在一些需要7x24運(yùn)行的重要系統(tǒng)中,如果利用傳統(tǒng)的數(shù)據(jù)備份進(jìn)行恢復(fù),需要的時(shí)間過(guò)長(zhǎng),無(wú)法滿足應(yīng)用的需要。
GoldenGate是一種基于日志的數(shù)據(jù)復(fù)制軟件,它通過(guò)解析源數(shù)據(jù)庫(kù)的日志獲得對(duì)象的增刪改變化,再將這些改變應(yīng)用到目標(biāo)數(shù)據(jù)庫(kù)。GoldenGate可以根據(jù)用戶的需要,應(yīng)用在不同的場(chǎng)景:?jiǎn)蜗驈?fù)制,備份或查詢的場(chǎng)景;雙向復(fù)制,災(zāi)備或雙業(yè)務(wù)中心的場(chǎng)景;點(diǎn)對(duì)點(diǎn)復(fù)制,有三個(gè)以上多業(yè)務(wù)中心的場(chǎng)景;廣播復(fù)制,數(shù)據(jù)分發(fā)的場(chǎng)景;集中復(fù)制,數(shù)據(jù)倉(cāng)庫(kù)或N+1災(zāi)備的場(chǎng)景;多級(jí)復(fù)制,層次化的企業(yè)數(shù)據(jù)復(fù)制。
我們可以利用GoldenGate的數(shù)據(jù)復(fù)制功能,實(shí)現(xiàn)企業(yè)數(shù)據(jù)的集中容災(zāi)保護(hù)。使管理人員從繁雜重復(fù)的工作中解放出來(lái),從而提高工作效率,節(jié)省人員管理開(kāi)銷并減少人為失誤的發(fā)生。另外利用GoldenGate的數(shù)據(jù)壓縮功能,也可以最小化網(wǎng)絡(luò)資源的使用,實(shí)現(xiàn)異地容災(zāi)。GoldenGate不僅可以用于oracle數(shù)據(jù)庫(kù),其它如微軟Sql Server,IBM DB2等等,GoldenGate同樣也支持。
2 架構(gòu)及數(shù)據(jù)同步原理
2.1 架構(gòu) GoldenGate主要由以下進(jìn)程組成:管理進(jìn)程(Manager):是GoldenGate的主控制進(jìn)程。一個(gè)管理進(jìn)程可以管理多個(gè)捕獲進(jìn)程和交付進(jìn)程,管理進(jìn)程完成:?jiǎn)?dòng)GoldenGate的進(jìn)程、維護(hù)進(jìn)程端口、管理trail文件、生成錯(cuò)誤報(bào)告等功能。捕獲進(jìn)程(Extract):運(yùn)行于源系統(tǒng),負(fù)責(zé)進(jìn)行數(shù)據(jù)捕獲,它可以被配置實(shí)現(xiàn)初始化數(shù)據(jù)同步和數(shù)據(jù)改變同步兩個(gè)目的。捕獲進(jìn)程通常從源表和數(shù)據(jù)庫(kù)的日志文件兩個(gè)數(shù)據(jù)源捕獲數(shù)據(jù)。多個(gè)捕獲進(jìn)程可以對(duì)不同的對(duì)象進(jìn)行捕獲,只需要給不同的捕獲進(jìn)程分配一個(gè)組名即可。數(shù)據(jù)泵進(jìn)程(Data pump):也是源數(shù)據(jù)庫(kù)的配置,如果沒(méi)有它,捕獲進(jìn)程將捕獲的數(shù)據(jù)直接發(fā)送到目的系統(tǒng)。在一個(gè)使用數(shù)據(jù)泵進(jìn)程的環(huán)境中,源數(shù)據(jù)庫(kù)的捕獲進(jìn)程將捕獲的數(shù)據(jù)改變寫到本地的trail文件中,數(shù)據(jù)泵進(jìn)程將這些trail文件通過(guò)TCP/IP網(wǎng)絡(luò)發(fā)送到目的端。
交付進(jìn)程(Replicat):運(yùn)行在目的數(shù)據(jù)庫(kù)。它負(fù)責(zé)讀取目的系統(tǒng)接收的trail文件,生成DML和DDL語(yǔ)句,在目的數(shù)據(jù)庫(kù)應(yīng)用。和捕獲進(jìn)程類似,也可以配置為初始化數(shù)據(jù)同步、數(shù)據(jù)改變同步兩種方式。
收集進(jìn)程(Collector):當(dāng)配置了數(shù)據(jù)改變同步時(shí),這個(gè)進(jìn)程運(yùn)行在目的系統(tǒng),它負(fù)責(zé)完成以下工作:當(dāng)管理進(jìn)程接收到連接請(qǐng)求時(shí),查找并綁定一個(gè)本地未使用的端口,并將端口號(hào)發(fā)送給管理進(jìn)程;接收捕獲進(jìn)程發(fā)送的數(shù)據(jù)庫(kù)改變,并將它們寫入一個(gè)trail文件。
2.2 基本復(fù)制原理 利用捕獲進(jìn)程在源數(shù)據(jù)庫(kù)端讀取日志文件,解析提取其中需要捕獲的對(duì)象的變化,將相關(guān)信息轉(zhuǎn)換為GoldenGate自定義的格式保存在trail文件中。再利用數(shù)據(jù)泵進(jìn)程將trail文件通過(guò)網(wǎng)絡(luò)傳送到目標(biāo)數(shù)據(jù)庫(kù)系統(tǒng)。捕獲進(jìn)程每次讀完日志文件并將數(shù)據(jù)傳送到目標(biāo)數(shù)據(jù)庫(kù)系統(tǒng)后,會(huì)寫檢查點(diǎn),通過(guò)檢查點(diǎn)來(lái)記錄當(dāng)前讀取log的位置,檢查點(diǎn)機(jī)制使捕獲進(jìn)程在發(fā)生異常終止并恢復(fù)后可以從檢查點(diǎn)位置繼續(xù)捕獲信息。
目標(biāo)數(shù)據(jù)庫(kù)系統(tǒng)的收集進(jìn)程接收數(shù)據(jù)變化并緩存到它本地的trail文件中,等待交付進(jìn)程讀取數(shù)據(jù)。
GoldenGate交付進(jìn)程從隊(duì)列trail文件中讀取數(shù)據(jù)變化并重建對(duì)應(yīng)的SQL語(yǔ)句,通過(guò)目標(biāo)數(shù)據(jù)庫(kù)的本地接口執(zhí)行,提交到數(shù)據(jù)庫(kù)成功后更新檢查點(diǎn),記錄復(fù)制的位置,數(shù)據(jù)的復(fù)制過(guò)程最終完成。整個(gè)過(guò)程中目標(biāo)端數(shù)據(jù)庫(kù)是活動(dòng)的。
3 應(yīng)用效果
在移動(dòng)某省網(wǎng)上營(yíng)業(yè)廳系統(tǒng)中,隨著數(shù)據(jù)庫(kù)容量的增長(zhǎng),備份恢復(fù)需要的時(shí)間也相應(yīng)增加,需要三、四個(gè)小時(shí)才能完成。此外,由于經(jīng)常需要對(duì)用戶訪問(wèn)情況按不同的維度進(jìn)行分析,對(duì)數(shù)據(jù)庫(kù)的性能也造成了很大的壓力。通過(guò)使用GoldenGate軟件,由于主庫(kù)到備庫(kù)進(jìn)行實(shí)時(shí)的數(shù)據(jù)同步,可以在備庫(kù)進(jìn)行統(tǒng)計(jì)查詢工作,exp等邏輯備份也可以在備庫(kù)進(jìn)行,降低了主庫(kù)的壓力。另外,當(dāng)主庫(kù)出現(xiàn)問(wèn)題,也可以方便的切換到備庫(kù),縮短了故障恢復(fù)時(shí)間。
在移動(dòng)某省計(jì)費(fèi)業(yè)務(wù)系統(tǒng)中,需要對(duì)重要的數(shù)據(jù)異地保存。GoldenGate在傳輸中對(duì)數(shù)據(jù)進(jìn)行高達(dá)9:1的壓縮比進(jìn)行壓縮,相比其他的異地備份方法,大大降低了網(wǎng)絡(luò)傳輸中的帶寬需求。
4 結(jié)論
本文分析了GoldenGate的架構(gòu)和原理以及主要應(yīng)用場(chǎng)景,并對(duì)主要的進(jìn)程功能進(jìn)行了簡(jiǎn)要描述。對(duì)于使用GoldenGate軟件在企業(yè)數(shù)據(jù)庫(kù)中實(shí)現(xiàn)數(shù)據(jù)容災(zāi)保護(hù)等問(wèn)題進(jìn)行了有益的探討。
參考文獻(xiàn):
[1]Oracle GoldenGate Administrator’s Guide,2012.
[2]Ben Prusinski,Steve Phillips,Richard Chung.Expert Oracle GoldenGate,2011.
[3]http://wenku.baidu.com/view/291d13c68bd63186bcebbcd
e.html.Oracle GoldenGate產(chǎn)品介紹.