Golden Gate - 概念和机制
Oracle Golden Gate - 概念和機制 (ogg)
Golden Gate(簡稱OGG)提供異構環境下交易數據的實時捕捉、變換、投遞。
OGG支持的異構環境有:
GoldenGate能夠支持多種拓撲結構,包括一對一,一對多,多對一,層疊和雙向復制等等。
GoldenGate基本架構
?
OGG的特性:
- 對生產系統影響小:實時讀取交易日志,以低資源占用實現大交易量數據實時復制
- 以交易為單位復制,保證交易一致性:只同步已提交的數據
- 高性能
- 智能的交易重組和操作合并
- 使用數據庫本地接口訪問
- 并行處理體系
- 靈活的拓撲結構:支持一對一、一對多、多對一、多對多和雙向復制等
- 支持數據過濾和轉換
- 可以自定義基于表和行的過濾規則.
- 可以對實時數據執行靈活影射和變換.
- 提供數據壓縮和加密:降低傳輸所需帶寬,提高傳輸安全性.
OGG的工作原理:
OGG的進程:
- Manager進程是GoldenGate的控制進程,運行在源端和目標端上。它主要作用有以下幾個方面:啟動、監控、重啟Goldengate的其他進程,報告錯誤及事件,分配數據存儲空間,發布閥值報告等。在目標端和源端有且只有一個manager進程
- Extract運行在數據庫源端,負責從源端數據表或者日志中捕獲數據。Extract的作用可以按照階段來劃分為:
- 初始時間裝載階段:在初始數據裝載階段,Extract進程直接從源端的數據表中抽取數據
- 同步變化捕獲階段:初始數據同步完成以后,Extract進程負責捕獲源端數據的變化(DML和DDL)
- Data Pump進程運行在數據庫源端,其作用是將源端產生的本地trail文件,把trail以數據塊的形式通過TCP/IP 協議發送到目標端,這通常也是推薦的方式。pump進程本質是extract進程的一種特殊形式,如果不使用trail文件,那么extract進程在抽 取完數據以后,直接投遞到目標端,生成遠程trail文件。
- Collector進程與Data?Pump進程對應 的叫Server Collector進程,這個進程不需要引起我的關注,因為在實際操作過程中,無需我們對其進行任何配置,所以對我們來說它是透明的。它運行在目標端,其 任務就是把Extract/Pump投遞過來的數據重新組裝成遠程ttrail文件。
- Replicat進程,通常我們也把它叫做應用進程。運行在目標端,是數據傳遞的最后一站,負責讀取目標端trail文件中的內容,并將其解析為DML或 DDL語句,然后應用到目標數據庫中。
關于OGG的Trail文件:
-
- 為了更有效、更安全的把數據庫事務信息從源端投遞到目標端。GoldenGate引進trail文件的概念。前面提到extract抽取完數據以 后 Goldengate會將抽取的事務信息轉化為一種GoldenGate專有格式的文件。然后pump負責把源端的trail文件投遞到目標端,所以源、 目標兩端都會存在這種文件。
- trail文件存在的目的旨在防止單點故障,將事務信息持久化,并且使用checkpoint機制來記錄其讀寫位置,如果故障發生,則數據可以根據checkpoint記錄的位置來重傳 。
?
Oracle GoldenGate(OGG)可以在多樣化和復雜的 IT 架構中實現實時事務更改數據捕獲、轉換和發送;其中,數據處理與交換以事務為單位,并支持異構平臺,例如:DB2,MSSQL等
? ? ?
? ? ?Golden Gate 所支持的方案主要有兩大類,用于不同的業務需求:
? ? ?
? ? ?● 高可用和容災解決方案
? ? ?● 實時數據整合解決方案
? ? ?
? ? ?其中,高可用和容災解決方案 主要用于消除計劃外和計劃內停機時間,它包含以下三個子方案:
? ? ?1. ?容災與應急備份
? ? ?2. ?消除計劃內停機
? ? ?3. ?雙業務中心(也稱:雙活)
? ? ?
?
? ? ?實時數據整合解決方案 主要為 DSS 或 OLTP 數據庫提供實時數據,實現數據集成和整合,它包含以下兩個子方案:
? ? ?1. ?數據倉庫實時供給
? ? ?2. ?實時報表
? ? ?
?
? ? ?靈活拓撲結構實現用戶的靈活方案:
? ? ?
?
? ? ?下圖是一個典型的 Golden Gate 配置邏輯結構圖:
? ?
? ? ?① Manager
? ? ? ??
? ? ? ? 顧名思義、Manager進程是Golden Gate中進程的控制進程,用于管理 Extract,Data Pump,Replicat等進程
? ? ? ? 在 Extract、Data Pump、Replicat 進程啟動之前,Manager 進程必須先要在源端和目標端啟動
? ? ? ? 在整個 Golden Gate 運行期間,它必須保持運行狀態
? ? ? ??
? ? ? ? ⒈ 監控與啟動 GoldenGate 的其它進程
? ? ? ? ⒉ 管理 trail 文件及 Reporting
? ? ? ??
? ? ? ? 在 Windows 系統上,Manager 進程是作為一個服務來啟動的,在 Unix 系統下是一個進程
? ? ? ??
? ? ?② Extract
? ? ? ??
? ? ? ? Extract 進程運行在數據庫源端上,它是Golden Gate的捕獲機制,可以配置Extract 進程來做如下工作:
? ? ? ? ⒈ 初始數據裝載:對于初始數據裝載,Extract 進程直接從源對象中提取數據
? ? ? ? ⒉ 同步變化捕獲:保持源數據與其它數據集的同步。初始數據同步完成后,Extract 進程捕獲源數據的變化;如DML變化、 DDL變化等
? ? ? ??
? ? ?③ Replicat
? ? ? ??
? ? ? ? Replicat 進程是運行在目標端系統的一個進程,負責讀取 Extract 進程提取到的數據(變更的事務或 DDL 變化)并應用到目標數據庫
? ? ? ? 就像 Extract 進程一樣,也可以配置 Replicat 進程來完成如下工作:
? ? ? ? ⒈ 初始化數據裝載:對于初始化數據裝載,Replicat 進程應用數據到目標對象或者路由它們到一個高速的 Bulk-load 工具上
? ? ? ? ⒉ 數據同步,將 Extract 進程捕獲到的提交了的事務應用到目標數據庫中
? ? ? ??
? ? ?④ Collector
? ? ?
? ? ? ? Collector 是運行在目標端的一個后臺進程
? ? ? ? 接收從 TCP/IP 網絡傳輸過來的數據庫變化,并寫到 Trail 文件里
? ? ? ? 動態 collector:由管理進程自動啟動的 collector 叫做動態 collector,用戶不能與動態 collector 交互
? ? ? ? 靜態 collector:可以配置成手工運行 collector,這個 collector 就稱之為靜態 collector
? ? ? ??
? ? ?⑤ Trails
? ? ? ??
? ? ? ? 為了持續地提取與復制數據庫變化,GoldenGate 將捕獲到的數據變化臨時存放在磁盤上的一系列文件中,這些文件就叫做 Trail 文件
? ? ? ??
? ? ? ? 這些文件可以在 source DB 上也可以在目標 DB 上,也可以在中間系統上,這依賴于選擇哪種配置情況
? ? ? ? 在數據庫源端上的叫做 Local Trail 或者 Extract Trail;在目標端的叫做 Remote Trail
? ? ? ??
? ? ?⑥ Data Pumps
? ? ? ??
? ? ? ? Data Pump 是一個配置在源端的輔助的 Extract 機制
? ? ? ? Data Pump 是一個可選組件,如果不配置 Data Pump,那么由 Extract 主進程將數據發送到目標端的 Remote Trail 文件中
? ? ? ? 如果配置了 Data Pump,會由 Data Pump將Extract 主進程寫好的本地 Trail 文件通過網絡發送到目標端的 Remote Trail 文件中
? ? ? ??
? ? ? ? 使用 Data Pump 的好處是:
? ? ? ? ⒈ 如果目標端或者網絡失敗,源端的 Extract 進程不會意外終止
? ? ? ? ⒉ 需要在不同的階段實現數據的過濾或者轉換
? ? ? ? ⒊ 多個源數據庫復制到數據中心
? ? ? ? ⒋ 數據需要復制到多個目標數據庫
? ? ? ??
? ? ?⑦ Data source
? ? ? ??
? ? ? ? 當處理事務的變更數據時,Extract 進程可以從數據庫(Oracle, DB2, SQL Server,?MySQL等)的事務日志中直接獲取
? ? ? ? 或從 GoldenGate VAM中獲取。通過 VAM,數據庫廠商將提供所需的組件,用于 Extract 進程抽取數據的變更
? ? ? ??
? ? ?⑧ Groups
? ? ? ??
? ? ? ? 為了區分一個系統上的多個 Extract 和 Replicat 進程,我們可以定義進程組
? ? ? ? 例如:要并行復制不同的數據集,我們可以創建兩個 Replicat 組
? ? ? ? 一個進程組由一個進程組成(Extract 進程或者 Replicat 進程),一個相應的參數文件,一個 Checkpoint 文件,以及其它與之相關的文件
? ? ? ? 如果處理組中的進程是 Replicat 進程,那么處理組還要包含一個 Checkpoint 表
?
OGG_Oracle GoldenGate簡介
一、摘要
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.
?
總結
以上是生活随笔為你收集整理的Golden Gate - 概念和机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java函数命名规范_java命名规范
- 下一篇: BIGEMAP APP离线卫星地图数据应