江蘇 霍祥偉
為保證有線電視的安全播出,確保用戶服務(wù)質(zhì)量和核心數(shù)據(jù)信息安全,某公司在某區(qū)建立了省級數(shù)字電視容災(zāi)備份中心。當(dāng)公司主機房發(fā)生重大故障省前端信號無法使用的情況下,災(zāi)備中心可立即啟用,作為備份信源給某地市提供安全可靠的備份信號,確保廣播電視信號傳輸不中斷。某區(qū)數(shù)字電視容災(zāi)備份中心設(shè)計定位是省級數(shù)字電視容災(zāi)備份中心,也是全國第一家省級異地數(shù)字電視信號備份中心,作為各地市電視信號的備份前端,與省播控中心實現(xiàn)傳輸信號的1+1 備份。
某區(qū)備份中心互動門戶系統(tǒng)由門戶展現(xiàn)Portal、后臺管理APP、增值業(yè)務(wù)平臺、注入M3P、核心數(shù)據(jù)庫組成,建設(shè)目標(biāo)為實現(xiàn)與門戶主數(shù)據(jù)庫實時同步,負(fù)載實時切換,并具備負(fù)載全省門戶展現(xiàn)業(yè)務(wù)的承載能力。一般情況下,備份中心數(shù)據(jù)庫僅用于保持與主前端數(shù)據(jù)庫的數(shù)據(jù)一致,并不負(fù)載業(yè)務(wù)。
按照主中心和災(zāi)備中心同步負(fù)載業(yè)務(wù)的設(shè)計要求,主前端和備份中心的后臺APP 及展現(xiàn)Portal 都要向全省互動電視用戶提供服務(wù),對于主中心和備份中心核心數(shù)據(jù)庫均存在寫操作,如果采用數(shù)據(jù)雙向同步的方式無法保證數(shù)據(jù)的一致性,且容易導(dǎo)致數(shù)據(jù)邏輯混亂,基于以上原因,備份中心門戶數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)同步采用單向同步的方式,即僅主前端門戶數(shù)據(jù)庫將數(shù)據(jù)同步至備份中心門戶數(shù)據(jù)庫。
GoldenGate 同步軟件是一種基于日志的結(jié)構(gòu)化數(shù)據(jù)復(fù)制備份軟件,它通過解析源數(shù)據(jù)庫在線日志或歸檔日志獲得數(shù)據(jù)的增量變化,再將這些變化應(yīng)用到目標(biāo)數(shù)據(jù)庫,從而實現(xiàn)源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫同步。GoldenGate可以在不同類型和版本的數(shù)據(jù)庫之間進(jìn)行數(shù)據(jù)復(fù)制,如 ORACLE、DB2、SYBASE、SQL SERVER,INFORMIX 和Teradata 等。適用于不同操作系統(tǒng)如Windows 2000/2003/XP、Linux、Sun Solaris、HP NonStop、HP-UX等。GoldenGate 對操作系統(tǒng)內(nèi)存的需求主要取決于Extract和Replicat進(jìn)程數(shù)。圖1 為主備數(shù)據(jù)庫同步原理示意圖。
圖1 主備數(shù)據(jù)庫同步原理示意圖
GoldenGate 能夠支持多種拓?fù)浣Y(jié)構(gòu),包括一對一,一對多,多對一,層疊和雙向復(fù)制等等,如圖2 所示。
圖2 GoldenGate 復(fù)制的拓?fù)浣Y(jié)構(gòu)
同步由4 個主要步驟完成:
1.Local Extract Process,利用抽取進(jìn)程(Extract Process)在 主前端數(shù)據(jù)庫端讀取Online Redo Log 或Archive Log,然后進(jìn)行解析,只提取其中變化的數(shù)據(jù)如增、刪、改操作,并將相關(guān)信息轉(zhuǎn)換為GoldenGate TDM 自定義的中間格式存放在隊列文件(Trail file)中。
2.Starting the Pump,通過數(shù)據(jù)傳送進(jìn)程(Date Pump Process)將隊列文件(Trail file)通 過TCP/IP傳送到備份中心數(shù)據(jù)庫。
3.Performing the Initial Load,抽取進(jìn)程(Extract Process)在每次讀完log 中的數(shù)據(jù)變化并在數(shù)據(jù)傳送到目標(biāo)數(shù)據(jù)庫后,會寫入檢查點(check point),記錄當(dāng)前完成抽取的log 位置,檢查點(check point)可以使抽取進(jìn)程(Extract Process)中 止并恢復(fù)后從檢查點(check point)位置繼續(xù)復(fù)制。
4.Starting the Replicate,備份中心數(shù)據(jù)庫接收數(shù)據(jù)并緩存到GoldenGate TDM 隊列中(隊列為臨時存儲數(shù)據(jù)變化的文件),等待復(fù)制進(jìn)程(Replicat Progress)讀取數(shù)據(jù)。復(fù)制進(jìn)程(Replicate Progess)從隊列中讀取數(shù)據(jù)變化并創(chuàng)建對應(yīng)的SQL 語句,通過數(shù)據(jù)庫本地接口執(zhí)行,提交到數(shù)據(jù)庫成功后更新檢查點(Check Point),記錄已經(jīng)完成復(fù)制的位置,整個數(shù)據(jù)復(fù)制過程結(jié)束。
由以上步驟可見,GoldenGate 是一種基于變化數(shù)據(jù)的復(fù)制方式,它從數(shù)據(jù)庫的日志解析數(shù)據(jù)的變化(數(shù)據(jù)量只有日志的四分之一)。
1.門戶數(shù)據(jù)庫主備同步
備份中心門戶數(shù)據(jù)庫通過GoldenGate 數(shù)據(jù)同步軟件保持與主前端數(shù)據(jù)庫數(shù)據(jù)的一致性,備份門戶APP 及門戶展現(xiàn)Portal 的數(shù)據(jù)源正常情況下指向主前端門戶數(shù)據(jù)庫,如圖3 所示。
當(dāng)主前端數(shù)據(jù)庫暫時無法提供服務(wù)(如掉電、突發(fā)故障、設(shè)備搬遷等)時,通過將主前端及備份中心的門戶后臺管理APP 及門戶展現(xiàn)Portal 的數(shù)據(jù)源由主前端數(shù)據(jù)庫修改為備份中心數(shù)據(jù)庫,實現(xiàn)門戶數(shù)據(jù)庫的主備切換,如圖4 所示。
圖3 數(shù)據(jù)庫同步鏈路
圖4 用戶訪問路徑
2.計劃內(nèi)主備切換要點
當(dāng)前,省公司新建成的麒麟三網(wǎng)融合基地將成為省公司的新機房所在地,老機房將面臨搬遷,對于設(shè)備搬遷引起的主前端數(shù)據(jù)庫無法提供服務(wù)所進(jìn)行的主備切換屬于計劃內(nèi)切換,備份中心數(shù)據(jù)庫在省公司機房搬遷期間(一個月甚至幾個月)內(nèi)應(yīng)全面接管主前端數(shù)據(jù)庫所負(fù)載的業(yè)務(wù),如圖4 虛線所示。此時應(yīng)以確?;与娨晿I(yè)務(wù)功能及性能為首要目標(biāo),需保持正常的節(jié)目、排版、海報等的更新工作,在切換期間內(nèi)將產(chǎn)生大量的數(shù)據(jù)變更,因此,在主前端數(shù)據(jù)庫恢復(fù)服務(wù)提供能力后,應(yīng)采取全量同步的方式在備份中心數(shù)據(jù)庫與主前端數(shù)據(jù)庫之間做一次全數(shù)據(jù)復(fù)制,然后將業(yè)務(wù)系統(tǒng)數(shù)據(jù)源指向指回主前端數(shù)據(jù)庫,最后恢復(fù)主備庫之間的GoldenGate 數(shù)據(jù)同步。
3.非計劃內(nèi)應(yīng)急切換測試
經(jīng)過測試,正常情況下利用GoldenGate 軟件進(jìn)行的同步數(shù)據(jù)延遲在30 秒以內(nèi),基本上符合實時同步的要求,對用戶體驗無明顯影響。對于掉電、突發(fā)故障引起的主前端數(shù)據(jù)庫無法提供服務(wù)所進(jìn)行的主備切換屬于非計劃內(nèi)應(yīng)急切換,可以預(yù)見,恢復(fù)時間一般在小時(最差在天)級別,此時應(yīng)以盡快恢復(fù)業(yè)務(wù)為首要目標(biāo),盡量減少對數(shù)據(jù)庫的改動,同時節(jié)目、排版、海報等的更新工作應(yīng)暫時停止。另外,在備份中心數(shù)據(jù)庫接管業(yè)務(wù)期間產(chǎn)生的不可避免的新增寫數(shù)據(jù),如續(xù)看表、集數(shù)記憶、節(jié)目收藏等可暫不處理或通過事后手動同步個別表數(shù)據(jù)的方式將切換期間產(chǎn)生的變更的數(shù)據(jù)同步回主前端數(shù)據(jù)庫。
1.數(shù)據(jù)庫庫同步狀態(tài)檢查
CRT 登錄至10.73.X.X(用戶名/密碼),輸入/ggs/ggsci,進(jìn)入goldengate操作區(qū),輸入命令info all來查看各進(jìn)程的狀態(tài),正常情況下Status 應(yīng)該為running,Lag 應(yīng)該為0-3s 之間??梢园l(fā)現(xiàn)兩個數(shù)據(jù)庫同步Lag 值長達(dá)5:40:31。
通過df -h 檢查磁盤空間,prtdiag 檢查CPU 內(nèi) 存使用率,機房巡檢檢查硬件狀態(tài)。
圖5 為數(shù)據(jù)庫同步異常狀態(tài)截圖。
圖5 數(shù)據(jù)庫同步異常狀態(tài)截圖
2.GoldenGate 數(shù)據(jù)庫同步測試
GoldenGate 數(shù)據(jù)同步所需的網(wǎng)絡(luò)帶寬是目前各種技術(shù)中最低的,GoldenGate 將數(shù)據(jù)變化轉(zhuǎn)化為自己的格式,直接通過TCP/IP 網(wǎng)絡(luò)傳輸,無需依賴于數(shù)據(jù)庫自身的數(shù)據(jù)傳輸方式。復(fù)制全庫數(shù)據(jù)時,通常GoldenGate 隊列文件大小與數(shù)據(jù)庫日志大小的比例為1:4,GoldenGate網(wǎng)絡(luò)傳輸壓縮比例為1:8,TCP/IP 網(wǎng)絡(luò)傳輸效率最高為0.7。
根據(jù)以上數(shù)據(jù)估算,以業(yè)務(wù)高峰期每小時產(chǎn)生100GB 數(shù)據(jù)庫日志為例,GoldenGate 維持秒級數(shù)據(jù)同步延遲的帶寬要求為:50×1024(MB/小時)×8(每字節(jié)8 位)/3600(秒/小時)/4 (隊列/日志比例)/8(傳輸壓縮比例)/0.7(網(wǎng)絡(luò)傳輸效率)=10.16Mbps。從實際監(jiān)控數(shù)據(jù)來看,主前端至備份中心用于數(shù)據(jù)庫數(shù)據(jù)同步的鏈路帶寬峰值在20Mbps 以下。
本文主要介紹了利用Goldengate 軟件實現(xiàn)備份中心與主前端互動電視門戶數(shù)據(jù)庫的異地數(shù)據(jù)同步方法,為全國各省異地建設(shè)省級數(shù)字電視備份中心實現(xiàn)數(shù)據(jù)庫備份方法提供思路。
備份中心目標(biāo)是與主前端(包括將來的麒麟樞紐)形成雙核心的業(yè)務(wù)承載架構(gòu),在具備數(shù)據(jù)冗余備份的前提下兼具用戶負(fù)載的相互切換能力,實現(xiàn)雙中心同時負(fù)載業(yè)務(wù)并互為備份的全冗余電視平臺。