Apress Expert Oracle GoldenGate - Architecture

snowdba發表於2014-10-29
第一篇 Architecture

文章出處來自Expert Oracle GoldenGate。本人英語水平有限,按照自己對OGG的理解和書面表達的含義寫下了這篇部落格,為自己的學習之路做個紀念。
該篇為Architecture體系結構,讓我們從概念開始一步一步學習OGG。


Architecture 體系結構

典型的OGG流程圖

GoldenGate元件

圖中的各個元件是最常用到的部分,每個元件都有著自己獨特的作用。

Source Database 
源端資料庫、生產庫

OGG獲取資料的源頭並不是一個元件,通常是一個資料庫。在企業級應用中多數情況都是生產庫來擔當此角色,習慣上稱之為源端。

Capture (Local Extract) Process 
捕獲程式

Capture是從源端抽取插入、更改、刪除等DML操作的程式。在OGG中被稱為Extract(抽取)。該程式為源端服務,更確切的命名是Local Extract(本地抽取或者主要抽取)。之所以這麼命名是為了區分另一個抽取程式Data Pump。該程式負責將Local Extract的結果傳送到目標資料庫,也就是Target Database。
    
Extract是執行在源端的伺服器程式,從事務日誌(transaction logs)中獲取變化。也就是從聯機日誌或者歸檔日誌中獲取變化,然後寫入到Trail檔案中。獲取事務變化時只選擇已經提交的事務(commit),並且過濾掉回滾的事務(rollback)。OGG還可以捕獲DDL語句,比如建立一個新的表空間、為表空間新增新的資料檔案,還可以捕獲序列(sequences),比如用序列自動生產表中的ID列。如果資料庫比較小的情況下Extract可以將源端資料庫複製到目標端,但通常不建議這樣做,還是使用Oracle的複製工具比較好,如RMAN或者exp/imp。
    
Extract使用起來非常靈活,可以根據需要只獲取源端的部分內容。使用萬用字元*可以獲取某個使用者下的所有表,HR.*,或者摸個表中的指定列,例如獲取customer表中的name欄位等於“Jones”的資料變化。

遇到捕獲失敗的時候可以將錯誤資訊寫入descard file中並且自動生成報表,每隔一段時間自動進行統計。

Source Trail
源端事務跟蹤檔案

抽取程式源源不斷的將已經提交的事物寫入到source trail中。為了更好的效能資料被寫入了較大的資料塊中。source trail檔案中的資料按照序列被髮送到目標資料庫或者其它的程式,如data pump。 為了保障安全,資料在寫入trail檔案時可以選擇加密方式來進行處理。
      
我們可以為trail檔案設定大小,當檔案達到了預設的大小會自動生成新的檔案。比如將trail檔案大小設定為200MB,Extract程式將已經提交的事物變化寫滿了當前的trail檔案後會自動建立一個新的trail檔案。為了節約磁碟空間,配置一個trail檔案的有效期顯得格外重要,OGG按照配置,自動刪除已經過期的trail檔案,保證磁碟空間一直可用。
     
 trail檔案中的資料格式預設情況下與平臺無關,OGG有著自己的資料格式。另外每個trail檔案都包含一個檔案頭,每條記錄也包含自己的頭資訊。OGG使用checkpoints來儲存每個程式的位置,並採用CommitSequenceNumber來跟蹤每一個事物的程式,從而保證資料的完整性。注意名稱中的Commit,再一次強調其關注點是已經提交的事物。這個CommitSequenceNumber在Oracle中與之相對應的就是SCN。有一點需要注意的時OGG中的checkpoints與Oracle中的checkpoint功能有區別。前者是記錄程式的位置(進度),後者是檢查點。
     
如果需要,我們可以使用GoldenGate Logdump工具來檢測trail檔案中的細節,在處理故障的時候這個功能非常有用。

Data Pump
投遞程式

data pump是另一種型別的抽取程式。data pump讀取由Local Extract寫入source trail中的記錄通過TCP/IP網路傳送到目標端,並且在目標端建立一個remote trail。雖然data pump程式也可以像Local Extract一樣對資料進行過濾和轉換,但是在大多數案例中還是僅用於傳遞資料而已。這種用法在OGG中叫做passthru 模式。如果資料需要過濾或者轉換,使用data pump可以有效的節省網路頻寬。

雖然從嚴格的意義上講data pump並不是必須配置的,但是配置一個data pump還是有些好處的。它在Local Extract向目標端傳送的過程中增加了一個保護層,隔絕了網路中斷的問題。舉例來說,如果源端到目標端的網路出現異常會導致抽取(Local Extract)程式失敗。擁有data pump程式的話抽取程式可以繼續工作,受影響的只是data pump。當網路恢復後,data pump能重新啟動並且迅速的處理已經由Local Extract抽取成功並寫入source trail檔案中的佇列。

Network
網路

OGG使用Local Extract或者data pump通過TCP/IP網路將source trail傳送到遠端主機並寫入remote trail檔案中。目標端和源端相連線的程式叫做Collector。 每個源端的抽取程式(Local Extract)都需要目標端Collector自動開啟一個網路通道來對應。Collector同過OGG預先配置號的埠號進行監聽。從源端到目標端的傳輸過程中,可以開啟資料壓縮來節約網路頻寬。另外我們還可以調整TCP/IP socket buffer大小並且配置連線超時引數來提供更好的網路效能。為了資料的安全可以將要傳輸的資料進行加密,在傳輸結束後由接收端也就是目標端自動進行解密。

Collector
收集程式

Collector程式由管理程式(Manager)自動啟動。它執行在目標端系統的後臺,負責將記錄寫入remote trail。寫入的記錄是源端通過Local Extract或者data pump通過網路傳送過來的。

Remote Trail
遠端事務跟蹤檔案

remote trail和source trail很相像,被data pump建立在遠端伺服器(remote server)或者中間伺服器上。這兩種不同的trail預設的儲存位置是檔案系統的dirdat目錄。它們的名字有著相同的結構.前2位是字母,後面6位是數字,比如rx000000。從源端傳送到目標端的trail檔案大小相同,可以採用源端管理Local trail的方式為其制定保留策略,定期刪除過期的檔案節省磁碟空間。

和源端trail檔案一樣remote trail有著自己的資料格式。每個trail檔案都包含一個檔案頭,每條記錄也包含自己的頭資訊。OGG程式將remote trail中的位置記錄在checkpoints,或則記錄在資料庫表中。

如果需要,我們可以使用GoldenGate Logdump工具來檢測trail檔案中的細節,在處理故障的時候這個功能非常有用。

Delivery (Replicat)
複製程式

Delivery是源端的資料變化應用到到目標資料庫的過程。在GoldenGate中應用本地資料庫SQL完成資料複製的功能叫做Replicat。Replicat應用trail檔案中資料變化同源端Extract抽取已經提交的事物順序相同,從而保證資料的完整性。

通過正確的配置我們不僅可以複製資料的的DML操作,也可以複製DDL操作和序列(sequences)。連初始化資料也可以使用特殊的Replicat來完成,但是通常建議使用Oracle資料庫的工具來完成,比如資料泵。

和抽取程式(Extract)一樣,我們可以配置一個或多個複製程式(Replicat)並行執行來提高效率。各個複製程式之間是獨立的,每個複製程式可以在不同的表中工作。既可以使用一個複製程式來應用一個模式(schema也可以理解成使用者)的所有表,也可以使用多個程式分別對應一個模式下的多個表。這樣的配置非常靈活,可以根據需要自行配製。

Replicat可以使用萬用字元來複制整個模式下的所有資料,一個單獨的表,一張表的部分行或者部分列。我們可以配置源端和目標端資料的對應關係,轉換、過濾那些只符合條件的部分資料。比如複製程式可以通過過濾,只挑選customer資料中姓名為Jones的那些記錄。

我們可以將任何一個Replicat處理不了的資料寫入discard檔案中。顯示Repicat配置的報表可以按照使用者的配置自動生成,並且根據設定的時間週期來獲取最新的資料統計。

Target Database
目標資料庫、災備資料庫

和源端資料庫一樣,目標資料庫也不是OGG的一個元件。它是接收並應用源端資料變換的資料庫。

Manager
管理程式

GoldenGate的Manager程式用來管理GoldenGate的所有程式和資源。在所有程式中它被第一個啟動,然後由Manager開啟或者關閉其他OGG程式,管理trail檔案,生成日誌和報表


第一章 完

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29047826/viewspace-1313814/,如需轉載,請註明出處,否則將追究法律責任。

相關文章