傳統的數據庫級數據備份在遇到災難性恢復時,往往會造成數據的丟失。想要實現實時的數據備份需要花費較大的硬件成本。
GoldenGate數據復制,可以實現在不引進其他多種類軟硬件產品的同時滿足數據的實時備份,確保數據中心的數據安全,從而降低運維的復雜度和資本的投入。
在主系統出現故障時,災備系統可迅速恢復和切換,可以最大限度的降低數據的丟失。
GoldenGate采用的工作原理為數據復制。它分單向數據復制和雙項復制模式。

圖1 單項數據復制

圖2 雙項數據復制
單向數據復制:利用Capture進程在源端讀取Log,確定需要進行的操作(增、刪、改),并通過Capture隊列將相關操作指令傳送到目標端。目標端的Deliver進程用于接受相關內容,通過Replicate進程創建同步所需的SQL語句,并在目標端執行,如圖1所示。
雙向數據復制:源端和目標端為Capture進程和Deliver進程,兩端互為源/目的數據復制對象,如圖2所示。
在配置雙向數據復制時,需要通過命令行向兩邊的數據庫中加入跟蹤表。當Capture進程讀到一個交易中有針對跟蹤表的更新,Capture進程就知道這個交易是由復制進程產生的并且把這筆交易忽略掉。
如果沒有針對跟蹤表的更新,Capture進程就知道這個交易是由應用程序產生的并且把這筆交易讀取出來。
GoldenGate四大優點:
1.實時性:源數據端的新請求或事務,目標端會馬上捕獲并轉換,在極短的時間內傳遞給目標數據庫,完成數據的同步。
2.持續可用性:
GoldenGate的運行即使遇到計劃或非計劃的服務中斷,也不影響系統的可用性,在服務恢復正常時,數據同步會繼續進行。
3.多元化:GoldenGate不僅支持Oracle數據庫,還支持目前的各類主流數據庫、主流平臺等,使平臺更加的靈活。
支持的操作系統包括Windows、Linux、Unix、AIX等。支持的Oracle、DB2、MS SQL Server、MySQL、Sybase、其他ODBC兼容數據庫等。
4.高性能,低影響:Gold
enGate能夠支持每秒數千的事務處理,同時對源系統和目標系統的性能影響極小。
Manager進 程: 是GoldenGate的控制進程,運行在源端和目標端,用于啟動、監控、重啟GoldenGate其他進程,報告錯誤等。
Extract進程:運行在源端,負責從源數據庫表或者日志中捕獲數據庫。所有提交的事務相關的日志會被以事務為單元順序記錄到Trail文件,Extract進程也有其內部的Checkpoint機制,周記性記錄讀寫位置。
Checkpoint機制是為了在Extract進程崩潰后重新啟動Extract進程后,GoldenGate可以恢復到之前Checkpoint狀態,從而從這個點繼續運行。Extract是通過上面的Trail文件和Checkpoint來保證數據的完整性。
Pump進程:Pump進程運行在數據庫源端,主要是在將源端產生的本地Trail文件,然后把Trail以數據塊形式通過TCP/IP發送到目標端。如果不使用Trail文件,Extract進程會抽取完數據以后,直接投遞到目標端,生成遠程Trail文件。
Trail文件:Extract抽取完數據后會將對應的事務信息轉化為GoldenGate專有格式文件Trail,Trail文件主要是為了防止單點故障,事務信息持久化,并且使用Checkpoint機制記錄其讀寫位置,如果故障發生,則數據可以根據Checkpoint記錄的位置來重傳。
Server collector進程:Server collector 進 程主要是把Extract或Pump進程投遞過來的數據組裝成遠程的Trail文件,Server collector不需要我們對其進程任何配置。
Replicat進程:Replicat進程運行在目標端,主要是通過讀取目標端的Trail文件內容然后將其解析為對應的dml和ddl語句,最后應用到目標數據庫中。
Replicat進程也有其內部的Checkpoint機制,保證重啟后可以從上次記錄的位置開始恢復從而保證數據一致性和安全性。
1.查詢業務分離:遇到大型數據庫應用時,我們經常遇到由于較大數據量的查詢業務,導致資源消耗較多,應用較慢。
利用GoldenGate單向復制技術,我們可以建立一套完整的實時查詢系統,實現查詢業務的分離,減少查詢對業務系統的影響。
2.容災備份:GoldenGate的數據復制,實現了生產系統的業務操作實時傳遞到備份系統中,有了生產數據的實時復制,可以保證應用系統7*24小時不間斷運行。
當生產環境出現緊急事件或要進行例行維護時,可將應用切換到復制數據庫中。例行維護結束時,可將備份系統的數據復制回生產系統中,確保生產系統數據的完整性。
3.負載均衡:通過GoldenGate一對多的復制,可復制多個版本的數據源,可將不同的用戶分配到不同的數據源,從而實現數據庫的負載均衡。
4.異地備份和區域數據同步:GoldenGate通過LAN或WAN進行實時復制,將生產數據庫中的數據拷貝到需要的地方,也可在遠程數據庫間進行復制。
雙向復制中,最主要的問題是需要防止數據的循環應用和防止數據發生沖突。
在GoldenGate中,需要從兩方面進行預防循環應用的問題:
(1)防止Extract進程抓取Replicat進程的SQL操作。
(2) 使 Extract進 程識別本地Replicat執行的DML事務,并進行忽略。Oracle 10G及以上的數據庫需要在Extract進程加入 參 數 :TRANLOGOPTIONS EXCLUDEUSER
如果是Oracle 9i或之前的版本,需要配置tracetable。
對于數據沖突,由于是雙向復制,那么當兩端都對同一數據進行操作時,就會發生沖突。
比如,同時對某行數據進行修改,修改的操作將會被覆蓋(視lag以及事務的先后);再比如兩端插入或刪除相同鍵值的數據。
對于這類數據沖突,最好是在業務應用層解決。比如,可以劃分兩端數據庫應用的業務范圍,一部分數據只在一端修改維護,另一端則修改維護其他數據;在兩端定義不同的鍵值生成策略;關注同步表上的觸發器和on delete cascade約束。此外,也可以借助GoldenGate的映射和過濾功能,對于兩端同步的數據進行區分。
總結:利用GoldenGate的數據復制原理,我們可以建立靈活的應用方案,如一對一復制、一對多復制、多對多復制、多對一復制、雙向復制等。各種類型的復制可以實現不同業務場景的需求,我們要理解并掌握GoldenGate的數據復制原理,幫助我們建立起系統災備的解決方案。