OGG_Oracle GoldenGate簡介(概念)


2014-03-01 Created By BaoXinjian

一、摘要


GoldenGate軟件是一種基於日志的結構化數據復制軟件,它通過解析源數據庫在線日志或歸檔日志獲得數據的增量變化,再將這些變化應用到目標 數據庫,從而實現源數據庫與目標數據庫同步。

GoldenGate 可以在異構的IT基礎結構(包括幾乎所有常用操作系統平台和數據庫平台)之間實現大量數據亞秒一級的實時復制,從而在可以在應急系統、在線報表、實時數據 倉庫供應、交易跟蹤、數據同步、集中/分發、容災等多個場景下應用。

 

同時,GoldenGate可以實現一對一、廣播(一對多)、聚合(多對一)、雙向、點對點、級聯等多種靈活的拓撲結構。

 

1. 優點:

(1). 安裝、配置簡單

(2). 管理維護相對直觀,通過其自帶的Oracle Management Pack for Oracle GoldenGate管理工具,能夠對其進行圖形化界面的管理

(3). 支持異構復制,如不同用戶,不同數據庫平台的復制,這也是其亮點所在

(4). 未來發展潛力還是很看好

2. 缺點:

(1). 官方的軟件目前都只支持64位系統

(2). 由於是第三方工具,對環境要求比較高,特別是在LINUX環境下,對操作系統的字符集有所要求,主要是我們系統中的表名都是中文,必須要其對中文的支持

(3). 在進行應用進程的參數配置時候發現,對於特別多的表復制,暫時不清楚GoldenGate是否有限制,因為啟動的時候,我配置參數對ZLHIS所有表進行復制的時候,會提示“”錯誤,但是如果只對少數表或者單個表復制的時候,又不出現該提示,這個問題正在核實

(4). 目前網上能查詢到的資料相當有限,普及率不是很高

3. 綜上所述,GoldenGate同流復制比較起來的亮點還是在異構上,不過Oracle官方的說法是以后一流的Streams技術將被集成到GoldenGate中,這也是其發展的趨勢,其價值對於我們用戶的應用來說,還是很值得繼續深入研究

 

 

 

二、解析


1. OGG是數據同步軟件,或者說是邏輯復制軟件,其競爭對手有IBM CDC,DELL shareplex,DSG,DDS等等。

2. OGG軟件是需要安裝在操作系統上的,Oracle DB軟件沒有自帶OGG軟件(至少目前是這樣的)

3. OGG軟件有三大進程(說四大進程也行):

  • 三大進程:源頭抽取進程、源頭傳輸進程、目的端應用進程(即:復制進程)
  • 四大進程:源頭抽取進程、源頭傳輸進程、目的端server進程(負責在目的端寫入trail文件)、目的端應用進程(即:復制進程)

4. OGG軟件有兩種trail file

  • 源頭的trail file:由源頭抽取進程寫入。
  • 目的端的trail file: 源頭傳輸進程傳輸到目的端,由目的端的server 進程寫入目的端操作系統的指定路徑下。

5.OGG軟件中三大進程都有自己的checkpoint(即:檢查點,用來記錄每種進程讀取到什么位置了,寫入到什么位置了)

  • 源頭抽取進程:有讀取檢查點 和寫入檢查點
  • 源頭傳輸進程:有讀取檢查點 和寫入檢查點
  • 目的端應用進程:有讀取檢查點

6.OGG軟件三大進程處理trail file的過程:

  • 源頭抽取進程:讀取oracle redo log(假設源頭數據庫是oracle),結合抽取進程的參數文件,將redo log中的內容變為OGG自有格式的文件(即:trail file),並寫入到源頭操作系統的指定路徑下
  • 源頭傳輸進程:讀取“源頭抽取進程寫入的trail file”,結合傳輸進程的參數文件,發送需要同步的數據到目的端,在目的端是由server 進程負責寫入。
  • 目的端應用進程:讀取目的端操作系統的指定路徑下的trail file,結合應用進程的參數文件,形成sql語句,在目的端db上執行這些sql語句。

7. OGG系統結構圖

8. OGG可應對數據維護情況

 

三、進程結構


Manager進程:

運行在源端和目標端上。每個源端或者目標端有且只能存在一個Manager進程。

它是GoldenGate的控制進程,用於啟動、監控、重啟GoldenGate的其他進程,報告錯誤及事件,分配數據存儲空間,發布閾值報告等。

其運行狀態有兩種即RUNNING(正在運行)和STOPPED(已經停止)。

2. Extract進程:運行在數據庫源端。

負責從源端數據表或者日志中捕獲數據。Extract進程利用其內在的checkpoint機制,周期性地檢查並記錄其讀寫的位置,通常是寫入到一個本地的trail文件。

在初始數據裝載階段,Extract進程直接從源端的數據表中抽取所有數據。

初始數據同步完成以后,Extract進程負責捕獲源端數據的變化(DML和DDL)。

extract進程會優選online log。

其運行狀態包括STOPPED(正常停止)、STARTING(正在啟動)、RUNNING(正在運行)、ABENDED(Abnomal End的縮寫,表示異常結束)。

3. Pump進程:運行在數據庫源端。

如果源端使用了本地的trail文件,那么Pump進程就會把trail以數據塊的形式通過TCP/IP協議發送到目標端。

Pump進程本質是Extract進程的一種特殊形式,如果不使用trail文件,那么就是Extract進程在抽取完數據以后,直接投遞到目標端。

與Pump進程相對應的叫做Server Collector進程,對人們來說它是透明的。它運行在目標端,其任務就是把Extract/Pump投遞過來的數據塊重新組裝成trail文件,人們稱之為遠程trail文件。

4. Trail文件:將抽取的事務信息轉化成的一種GoldenGate專有格式的文件源、目標兩端都會存在這種文件,源端存放的trail文件叫本地trail文件,目標端存放的trail文件叫遠程trail文件。

trail文件存在的目的旨在防止單點故障,將事務信息持久化,並且使用checkpoint機制來記錄其讀寫位置,如果故障發生,則數據可以根據checkpoint記錄的位置來重傳。

5. Replicat進程:運行在目標端負責讀取目標端trail文件中的內容,並將其解析為DML或DDL語句,然后應用到目標數據庫中。

和Extract進程一樣,Replicat也有其內部的checkpoint機制,保證進程重新啟動后可以從上次記錄的位置開始恢復,而無數據損失的風險。

它的運行狀態和Extract進程一致,包括STOPPED、STARTING、RUNNING、ABENDED。

 

四、目錄結構


 

1. dirchk:檢查點文件

(1).用於存放由extract抽取進程和replicat復制進程創建的checkpoint文件,checkpoint文件保存者當前讀和寫的時間戳信息,通過這些信息保證了數據的准確性和數據容錯功能。

      文件格式如下:<group name><sequence number>.<ext>

(2).group name就是我們配置的進程名稱,序列號,加上后綴名成,后綴名稱分為cpe(checkpoint extract)和cpr(checkpoint replicat)。

2. dirdat:跟蹤文件和抽取文件

(1).用於存放GG跟蹤文件和由extract進程創建的抽取文件,這些文件將被復制進程(或者其他需要的)進一步處理和使用。

(2).文件格式如下:用戶自定義的2個前綴字符+6為序列號(跟蹤文件)

                         或者 用戶自定義的格式(抽取文件

3. dirdef:數據定義文件

(1).用於存放由DEFGEN組件創建的定義文件,包含在異構環境同步中的源或者目標端的數據定義。

(2).是一個可編輯的文本文件,比如你要添加一個新進創建表的相關的同步定義就可以在此直接編輯。

      文件格式如下:用戶通過DEFGEN參數文件自定義

4. dirprm:參數文件

(1).用於存放GG的參數文件,這些參數文件可以通過系統文本編輯器直接編輯,也可以通過在ggsci命令行下edit params來編輯,達到的效果是一樣的。

(2).文件格式如下:<group name/user-defined name>.prm

5. dirpcs:狀態文件

(1).用於存放各個進程的狀態信息,當相關進程運行的時候,這些進程的相關信息,比如程序名稱,進程名稱,進程監聽端口,進程ID等等都將被寫入各自狀態信息文件。

     文件格式如下:<group>.<extension>

(2).其中extension有3個:pce(extract)  pcr(replicat)  pcm(manager)

6. dirrpt:報告文件

(1).用於存放各個進程的報告文件,內容為extract、replicat和manager進程運行相關的統計報告信息。

(2).文件格式如下:<group name><sequence number>.rpt

7. dirsql:SQL腳本文件

(1).用於存放由TRIGGEN組件創建的SQL腳本文件,這些SQL腳本用於創建GG相關的記錄觸發器和日志表。

(2).文件格式如下:用戶自定義名稱.sql

                         或者  表名稱.sql

8. dirtmp:臨時文件

The default location for storing large transactions when the size exceeds the allocated memory size.

Do not edit these files.

 

Thanks and Regards


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM