程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle Golden Gate原理簡介

Oracle Golden Gate原理簡介

編輯:Oracle教程

http://www.askoracle.org/oracle/HighAvailability/20140109953.html#6545406-tsina-1-3386-14a237f3587652368b695b00507b1475

 

GoldenGate簡介 OracleGolden Gate是一種基於日志的結構化數據復制備份軟件,它通過解析Source Database在線日志或歸檔日志獲得數據的增量變化,再將這些變化應用到TargetDatabase,從而實現源數據庫和目標數據庫之間的同步。 Oracle Golden Gate可以實現在I

   

Oracle Golden Gate是一種基於日志的結構化數據復制備份軟件,它通過解析Source Database在線日志或歸檔日志獲得數據的增量變化,再將這些變化應用到Target Database,從而實現源數據庫和目標數據庫之間的同步。

Oracle Golden Gate可以實現在IT異構平台之間實現大量數據秒級的實時同步,由於其功能強大,所以用於很多應用系統,像在線報表系統、實時數據倉庫供應、數據同步、數據移植、雙業務中心等;同時,Oracle Golden Gate可以實現一對一、一對多、多對一、級聯等多種拓撲結構。

Oracle官方也提供了Oracle Golden Gate軟件下載和在線學習文檔(11g R2)。

下圖展示了一個用於初始化數據和同步DML/DDL操作的Oracle Golden Gate邏輯架構圖,這種被建議的可變化模式依賴於業務需求。

此進程運行的Source System,它是Golden Gate的Extraction(capture提取)機制,其主要用於以下目的:

1. Initial Loads:初始化加載數據,從源對象直接捕獲提取一個當前的、靜態的數據集(這裡是指用EXPDP/IMPDP工具把數據從源庫導入到備庫,對此工具還不了的的同學可以參考Oracle工具EXPDP詳解& IMPDP詳解)

2. Change Synchronization:改變同步,在初始化同步完成後Extract捕獲DML & DDL操作,使Source Database與另一個數據集保持同步。

Extract可以通過以下方式捕獲源數據庫數據:

1. 如果是初始化加載,可以直接從Source Tables捕獲

2. 從數據庫的Recovery Logs或者Transaction Logs(像Oracle的Redo Log或者是Sql/MX的Audit Trails),實際中捕獲數據的方法依賴於數據庫類型

3. 第三方捕獲模塊,此方式提供了一個通訊蹭,將數據和源數據從外部的API傳送到Extract API,由數據供應商或者第三方供應商提供該組件。

當Extract配置為Change Synchronization時,Extract會對其配置的對象上執行的DML & DDL進行捕獲,Extract存儲這些操作直到該操作的事務提交或者回滾;當收到的是事務回滾時,Extract會丟棄這個事務中的操作,當收到的是事務提交時,Extract會將這個事務持久化到磁盤上的一系列文件中,此類文件叫Trail,這些文件排隊等待被傳輸到Target Database。事務中的所有操作以序列化被組織的事務單元寫入到Trail中,這種設計即確保了速度也保證了數據的完整性。

可以同時配置多個Extract進程去操作不同的對象。例如,當數據變動量太大的時候,可以使用兩個Extract進程並行提取和傳送到兩個Replicat進程以最小化目標等待時間,每個Extract需要分配一個Group。

此組件是Oracle Golden Gate配置在Source端的二級Extract Group,如果Data Pump沒有被使用,那麼Extract要負責將捕獲的操作傳送到Target端的Remote Trail。在使用Data Pump的典型配置中,Primary Extract進程只負責將捕獲的操作寫入到Source Database的Trail文件中,Data Pump負責讀取這些Trail通過網絡將其傳送到Target Database的Remote Trail。Data Pump增加了存儲的靈活性,並且實現了Primary Extract進程與TCP/IP的有效隔離。

通常情況下,Data Pump能夠執行過濾、映射、轉換等操作,或者也可以將其設置為Pass-through模式,這種模式下數據被動傳輸,這種模式增大了Data Pump的吞吐量,因為可以繞過查找對象定義的功能。

使用Data Pump有以下優點:

1.對於網絡和目標失敗的保護

對於一個基礎配置的Golden Gate中,只有Target端有一個Trail,Extract連續在內存中抽取數據而不在Source端存放Trail,如果網絡或者目標端變的不可用,那麼Extract進程可能會因內存不足而abend異常終止。當網絡或目標端恢復正常時,data pump會將從Source端的Trail中捕獲的數據發送到Target端。

2.可以實現多個階段的數據過濾

當需要復雜的數據過濾時,可以使用data pump在source端或者target端,甚至在intermediary system中間系統上執行第一次過濾,然後使用另一個data pump或者replicate執行第二次過濾。

3. 合並來自多個數據源的數據到一個目標

當需要同步來自多個源的數據庫到目標系統的時候,可以在每個Source端配置Extract抽取進程,然後在每個Source端使用data pump將他們傳送到target的trail中。這樣可以分割source和target的存儲負載

4. 單Source對多Target

當需要對多個Target進行同步時,可以在每個Target端設置一個data pump,這樣任意一個Target出現問題,數據可以繼續發送到其他的Target,保證數據的有效性。

此組件運行在Target端,它讀取系統上的Trail文件,並重新架構DML和DDL操作,將它們應用到目標數據庫。你可以配置Replicat進程用於以下目的之一:

1. Initial Loads:用於初始化數據加載,

2. Change Synchronization:當配置為Change Synchronization時,Replicat進程使用本地數據庫接口或ODBC,依賴於數據類型,將從Source復制來的數據操作應用到Target;為了保證數據的完整性,Replicat按照源端提交的方式應用復制操作。

可以配置多個Replicat進程並發來提高吞吐量,為了保證數據的完整性,不同的Replicat進程處理不同的對象集,需要為每個Replicat進程分配一個Group。

可以延遲復制使它在應用復制的操作到目標之前等待一個你指定的時間。這個延遲是可以被設計的,比如預防錯誤的SQL傳播、控制來自不同時區的數據的到達、或者給予另一個計劃的事件發生的時間。這個延遲的長度由參數DEFERAPPLYINTERVAL控制

為了支持對數據庫改變連續的提取和復制,Oracle Goldengate將捕獲改變的記錄臨時的存儲在磁盤上的一系列的文件中,這一系列文件叫做trail。Trail能夠出現在source端、target端、intermediary端或者他們的組合,這依賴於你怎麼配置Oracle Goldengate。在local system它被稱為extract trail(local trail)。在remote system它被稱作remote trail。

使用trail作為存儲,Oracle Goldengate支持數據准確性和容錯。使用trail也使提取和復制活動彼此獨立的發生。由於這些進程的分離,對於數據的處理和交付你有了更多的選擇。比如替代提取和復制連續的發生,你可以讓提取連續發生,當target需要的時候再進行復制處理。

Source端的Extract和Data Pump進程負責寫Trail,並且每個extract進程必須連接到一個Trail。

讀Trail進程:

Data-pump Extrac:從連接到前一個Extract的Local Trail裡提取DML和DDL操作

Replicat:讀取Trail文件,並且把復制過來的DML和DDL應用到目標數據庫

Trail文件在處理期間會自己創建,但是你需要在使用ADD EXTTRAIL或ADD RMTTRAIL將它添加到Oracle Goldengate配置時給它指定一個兩個字符的名字。默認情況下,trails存放在Oracle Goldengate安裝目錄下的dirdat子目錄下。

完整的trail文件不需要內部維護會自動增長以支持連續處理。當每一個新的trail文件創建時,它會繼承兩個字符的名字並在後面追加一個唯一的6位序列數字,這個序列從000000到999999,例如:/home/ogg/dirdat/lt000001,當數字到達999999時,下一個序列將從000000開始。

你可以創建多個trail以分離不同的對象或應用。你可以通過在extract參數文件中的table和sequence參數前添加exttrail或rmttrail參數來指定與對象連接的trail。增長的trail可以通過Manager參數文件中的PURGEOLDEXTRACTS參數進行purge。

在一些配置中,Oracle Goldengate提取的數據存儲在一個extract file中而不是一個trail,這個extract file可以是一個單獨的文件,也可以是一個由於操作系統的文件大小限制被配置成多個滾動文件。在這個場景中,它類似於一個trail文件,只是它不記錄checkpoint,文件在運行時自動創建。適用於trail的相同的版本功能也適用於extract file。

為了恢復的目的,Checkpoints進程存儲當前寫和讀到磁盤。Checkpoints是為了確認需要同步而被標記的數據的改變是否被Extract所捕獲,並且被Replicat所應用,並且預防數據冗余。它對由於網絡、系統、Oracle Goldengate進程需要重啟而要丟失數據提供了容錯。對於復雜的同步配置,checkpoints能夠使多個Extract或者Replicat進程讀取同一個trail集,Checkpoints使用內部進程確認以防止消息在網絡中丟失。

Extract為它在數據源和trail中的位置創建checkpoints。因為Extract只捕獲提交了的事務,它必須保持對所有打開事務提交事件操作的跟蹤。這要求Extract去記錄一個檢查點,這個點就是當前一個事務日志中正在讀的位置,加上最老打開事務的起始位置,可以是當前日志或者前一個日志。

為了控制在斷電後必須重新處理的事務日志的量,Extract在指定的間隔持久化處理當前狀態和數據到磁盤,包括狀態和長事務數據(如果有的話)。如果Extract在這些間隔中的一段停止,它可以從前一個間隔或最後一個checkpoint的位置進行恢復,而不是回到最老打開的長事務第一次出現的日志的位置恢復。

Replicat為了在trail中創建checkpoints,Replicat存儲它的checkpoints在目標數據庫上的一張checkpoint表上,為了使它提交的事務與它在trail中的位置所對應。Checkpoint表通過在一個數據庫恢復中確保一個事務只會被應用一次而保證了一致性,即使replicat進程或者數據庫進程失敗。為了報告的目的,Replicat也會有一個checkpoint文件在磁盤上,存放在Oracle Goldengate安裝目錄下的dirchk子目錄裡。

對於非連續性的,如果需要可以從開始點重新運行的配置,比如初始化加載,Checkpoints是不需要的。

Manager是用來控制Oracle Goldengate的進程的。在Extract和Replicat能運行之前,Manager在每台系統上必須被運行,並且在那些進程運行期間Manager必須保持運行以執行管理功能。Manager執行以下的功能:

啟動Oracle Golden Gate進程,啟動動態進程,維護進程端口,執行Trail管理,創建event、error和threshold reports,一個Manager進程能控制多個Extarct或者Replicat進程。在windows系統上Manager能以一個服務運行。實例如下:

1 2 3 4 5 6 GGSCI (ogg2) 1> edit params ./GLOBALS MGRSERVNAME OracleGoldenGate ggschema ogg C:\>cd D:\goldengate C:\>D: D:\goldengate>install addservice addevents

#這樣在windows系統服務裡就能看到一個OracleGoldenGate的服務

當連續、在線的change synchronization活動時,Collector是一個運行在target端的後台進程。Collector做以下的事情:

1. 提交一個來自遠程Extract的連接請求給Manager,掃描和綁定一個可用的端口並且發送這個端口給Manager用來分配給請求的Extract進程

2. 接受來自Extract發送過來的提取了的數據庫的改變,並且將他們寫到一個trail文件中。當有一個網絡連接請求時,Manager自動啟動Collector,Oracle Goldengate用戶不需要與它進行交互。Collector只能從一個Extract進程接收信息,所以你用的每一個Extract都有一個對應的Collector

默認情況下,是由source端的Extract初始化TCP/IP連接到目標端的Collector,但是Oracle Goldengate也能被配置成由target端的Collector初始化連接。由目標端初始化連接可能是被要求的,比如目標端是在一個信任的網絡區域內,而source端是在一個不被信任的網絡區域內。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved