江蘇 霍祥偉
為保證有線電視的安全播出,確保用戶服務質量和核心數據信息安全,某公司在某區建立了省級數字電視容災備份中心。當公司主機房發生重大故障省前端信號無法使用的情況下,災備中心可立即啟用,作為備份信源給某地市提供安全可靠的備份信號,確保廣播電視信號傳輸不中斷。某區數字電視容災備份中心設計定位是省級數字電視容災備份中心,也是全國第一家省級異地數字電視信號備份中心,作為各地市電視信號的備份前端,與省播控中心實現傳輸信號的1+1 備份。
某區備份中心互動門戶系統由門戶展現Portal、后臺管理APP、增值業務平臺、注入M3P、核心數據庫組成,建設目標為實現與門戶主數據庫實時同步,負載實時切換,并具備負載全省門戶展現業務的承載能力。一般情況下,備份中心數據庫僅用于保持與主前端數據庫的數據一致,并不負載業務。
按照主中心和災備中心同步負載業務的設計要求,主前端和備份中心的后臺APP 及展現Portal 都要向全省互動電視用戶提供服務,對于主中心和備份中心核心數據庫均存在寫操作,如果采用數據雙向同步的方式無法保證數據的一致性,且容易導致數據邏輯混亂,基于以上原因,備份中心門戶數據庫系統數據同步采用單向同步的方式,即僅主前端門戶數據庫將數據同步至備份中心門戶數據庫。
GoldenGate 同步軟件是一種基于日志的結構化數據復制備份軟件,它通過解析源數據庫在線日志或歸檔日志獲得數據的增量變化,再將這些變化應用到目標數據庫,從而實現源數據庫與目標數據庫同步。GoldenGate可以在不同類型和版本的數據庫之間進行數據復制,如 ORACLE、DB2、SYBASE、SQL SERVER,INFORMIX 和Teradata 等。適用于不同操作系統如Windows 2000/2003/XP、Linux、Sun Solaris、HP NonStop、HP-UX等。GoldenGate 對操作系統內存的需求主要取決于Extract和Replicat進程數。圖1 為主備數據庫同步原理示意圖。

圖1 主備數據庫同步原理示意圖
GoldenGate 能夠支持多種拓撲結構,包括一對一,一對多,多對一,層疊和雙向復制等等,如圖2 所示。

圖2 GoldenGate 復制的拓撲結構
同步由4 個主要步驟完成:
1.Local Extract Process,利用抽取進程(Extract Process)在 主前端數據庫端讀取Online Redo Log 或Archive Log,然后進行解析,只提取其中變化的數據如增、刪、改操作,并將相關信息轉換為GoldenGate TDM 自定義的中間格式存放在隊列文件(Trail file)中。
2.Starting the Pump,通過數據傳送進程(Date Pump Process)將隊列文件(Trail file)通 過TCP/IP傳送到備份中心數據庫。
3.Performing the Initial Load,抽取進程(Extract Process)在每次讀完log 中的數據變化并在數據傳送到目標數據庫后,會寫入檢查點(check point),記錄當前完成抽取的log 位置,檢查點(check point)可以使抽取進程(Extract Process)中 止并恢復后從檢查點(check point)位置繼續復制。
4.Starting the Replicate,備份中心數據庫接收數據并緩存到GoldenGate TDM 隊列中(隊列為臨時存儲數據變化的文件),等待復制進程(Replicat Progress)讀取數據。復制進程(Replicate Progess)從隊列中讀取數據變化并創建對應的SQL 語句,通過數據庫本地接口執行,提交到數據庫成功后更新檢查點(Check Point),記錄已經完成復制的位置,整個數據復制過程結束。
由以上步驟可見,GoldenGate 是一種基于變化數據的復制方式,它從數據庫的日志解析數據的變化(數據量只有日志的四分之一)。
1.門戶數據庫主備同步
備份中心門戶數據庫通過GoldenGate 數據同步軟件保持與主前端數據庫數據的一致性,備份門戶APP 及門戶展現Portal 的數據源正常情況下指向主前端門戶數據庫,如圖3 所示。
當主前端數據庫暫時無法提供服務(如掉電、突發故障、設備搬遷等)時,通過將主前端及備份中心的門戶后臺管理APP 及門戶展現Portal 的數據源由主前端數據庫修改為備份中心數據庫,實現門戶數據庫的主備切換,如圖4 所示。

圖3 數據庫同步鏈路

圖4 用戶訪問路徑
2.計劃內主備切換要點
當前,省公司新建成的麒麟三網融合基地將成為省公司的新機房所在地,老機房將面臨搬遷,對于設備搬遷引起的主前端數據庫無法提供服務所進行的主備切換屬于計劃內切換,備份中心數據庫在省公司機房搬遷期間(一個月甚至幾個月)內應全面接管主前端數據庫所負載的業務,如圖4 虛線所示。此時應以確保互動電視業務功能及性能為首要目標,需保持正常的節目、排版、海報等的更新工作,在切換期間內將產生大量的數據變更,因此,在主前端數據庫恢復服務提供能力后,應采取全量同步的方式在備份中心數據庫與主前端數據庫之間做一次全數據復制,然后將業務系統數據源指向指回主前端數據庫,最后恢復主備庫之間的GoldenGate 數據同步。
3.非計劃內應急切換測試
經過測試,正常情況下利用GoldenGate 軟件進行的同步數據延遲在30 秒以內,基本上符合實時同步的要求,對用戶體驗無明顯影響。對于掉電、突發故障引起的主前端數據庫無法提供服務所進行的主備切換屬于非計劃內應急切換,可以預見,恢復時間一般在小時(最差在天)級別,此時應以盡快恢復業務為首要目標,盡量減少對數據庫的改動,同時節目、排版、海報等的更新工作應暫時停止。另外,在備份中心數據庫接管業務期間產生的不可避免的新增寫數據,如續看表、集數記憶、節目收藏等可暫不處理或通過事后手動同步個別表數據的方式將切換期間產生的變更的數據同步回主前端數據庫。
1.數據庫庫同步狀態檢查
CRT 登錄至10.73.X.X(用戶名/密碼),輸入/ggs/ggsci,進入goldengate操作區,輸入命令info all來查看各進程的狀態,正常情況下Status 應該為running,Lag 應該為0-3s 之間。可以發現兩個數據庫同步Lag 值長達5:40:31。
通過df -h 檢查磁盤空間,prtdiag 檢查CPU 內 存使用率,機房巡檢檢查硬件狀態。
圖5 為數據庫同步異常狀態截圖。

圖5 數據庫同步異常狀態截圖
2.GoldenGate 數據庫同步測試
GoldenGate 數據同步所需的網絡帶寬是目前各種技術中最低的,GoldenGate 將數據變化轉化為自己的格式,直接通過TCP/IP 網絡傳輸,無需依賴于數據庫自身的數據傳輸方式。復制全庫數據時,通常GoldenGate 隊列文件大小與數據庫日志大小的比例為1:4,GoldenGate網絡傳輸壓縮比例為1:8,TCP/IP 網絡傳輸效率最高為0.7。
根據以上數據估算,以業務高峰期每小時產生100GB 數據庫日志為例,GoldenGate 維持秒級數據同步延遲的帶寬要求為:50×1024(MB/小時)×8(每字節8 位)/3600(秒/小時)/4 (隊列/日志比例)/8(傳輸壓縮比例)/0.7(網絡傳輸效率)=10.16Mbps。從實際監控數據來看,主前端至備份中心用于數據庫數據同步的鏈路帶寬峰值在20Mbps 以下。
本文主要介紹了利用Goldengate 軟件實現備份中心與主前端互動電視門戶數據庫的異地數據同步方法,為全國各省異地建設省級數字電視備份中心實現數據庫備份方法提供思路。
備份中心目標是與主前端(包括將來的麒麟樞紐)形成雙核心的業務承載架構,在具備數據冗余備份的前提下兼具用戶負載的相互切換能力,實現雙中心同時負載業務并互為備份的全冗余電視平臺。