1. 程式人生 > >轉://Oracle Golden Gate 概念和原理

轉://Oracle Golden Gate 概念和原理

拓撲 根據 target 提高 支持斷點續傳 占用 均衡負載 col 都是

引言:Oracle Golden Gate是Oracle旗下一款支持異構平臺之間高級復制技術,是Oracle力推一種HA高可用產品,簡稱“OGG”,可以實現Active-Active 雙業務中心架構

一、Golden Gate 特點

1.實時數據復制

2.異構平臺數據同步

3.支持斷點續傳,不影響系統連續運行

4.高性能,屬於輕量級軟件

5.保證數據引用完整性和事物一致性

6.整合ETL Tools Message Service

7.靈活拓撲結構 1:1 1:N N:1 N:N 雙向復制

8.復制沖突檢測和解決

9.支持數據壓縮和加密

10.TCP/IP WAN LAN

11.根據事務大小和數量自動管理內存

12.支持多活業務中心

13.以交易數據為單位復制,保證交易一致性

14.支持數據過濾和轉換,可自定義基於表和行的過濾規則,實時在異構環境下轉換數據

二、Golden Gate用途

1.跨多版本數據庫升級

Oracle 8i ————————> Oracle 11G

2.均衡負載

Load Balance

3.容災

Switchover

4.支持異構平臺數據交換,如下圖所示

技術分享圖片

三、Oracle Golden Gate拓撲結構

技術分享圖片

四、Oracle Golden Gate 體系結構

技術分享圖片

上圖是最簡單Golden Gate結構圖,Golden Gate有源端和目標端,源端捕獲日誌發送到目標端應用,這個過程分為六步驟。

1.捕獲:實時捕獲交易日誌(已提交數據),包含DML和DDL,並可根據規則進行過濾

2.隊列:把捕獲的日誌數據加載入隊列(寫入trail文件),這是可選項,為了提高安全性,怕網絡傳丟了。

也可以不入隊列,直接從redo buffer傳遞給目標端

3.數據泵:將trail文件廣播到不同的目標端

4.網絡:從源網絡壓縮加密後傳送到目的網絡

5.接收隊列:接收從源端傳過來的trail文件

6.交付:把trail文件內容轉換成SQL語句在目標庫執行

雙向復制:在把另一端重新配置成源端,即可實現雙向復制,這就是Active-Active雙業務中心

五、Golden Gate進程

我們還是根據GG工作流程來講解GG進程

1.Manager進程:這是GG全局主進程,它是GG守護進程統籌全局,它可以啟動、監控、終止Golden Gate的其它進程,收集錯誤報告及事件,分配數據存儲空間,發布閥值告警等,在源端和目標端有且只有一個Manager進程。

2.Extract進程:運行在源端的進程,實時捕獲交易數據,可以直接在redo buffer捕獲傳遞到目標端,也可以在redo buffer捕獲先寫入trail隊列在傳遞到目標端。非Oracle庫支持從數據表捕獲數據。

3.Pump進程:運行在源端的進程,將源端產生的本地trail文件廣播到不同的目標端,pump進程本質是extract進程的一種特殊形式,如果不使用trail文件,那麽extract進程在捕獲完交易日誌後直接傳遞到目標端,生成遠程trail文件。

4.Collector進程:運行在目標端的進程,專門接收從源端傳過來的trail文件日誌生成隊列。

5.Delivery進程:運行在目標端的進程,通常我們也把它叫做replicat進程,是數據傳遞的最後一站,負責讀取遠程trail文件內容,解析為SQL語句在目標庫上執行。

六、Oracle Golden Gate數據復制機制

首先,我們要理解GG基於日誌的實時數據復制技術,Oracle中還有哪些是基於日誌的技術呢?大家想一想

1. Data Guard 基於日誌

2. Oracle Streams 基於日誌

3. Advance Replication 基於觸發器,觸發器占用資源多,導致系統性能下降

大家在思考一個問題,GG的基於日誌和DG的基於日誌有什麽區別呢,哪個性能更好呢?

答:GG是不依賴於數據庫而獨立的軟件,擁有自己專屬進程,不依賴數據庫的觸發器和規則,對數據庫影響小。

DG是數據庫的一個HA功能,它需要數據庫的進程支持,與數據庫進程息息相關,屬於數據庫的一部分,對數據庫影響大。

下面我們根據圖示來解析GG復制原理

技術分享圖片

先來看2個概念

(1)Trail文件

就是上圖中紅箭頭所指文件,為了更有效,更安全的把數據庫事務信息從源端傳遞到目標端,GG引進了trail文件概念。圖中所示Extract進程在redo buffer中提取完日誌數據後會寫入一種GG專有格式的文件,這個文件就是trail文件,然後data pump進程負責把源端的trail文件傳遞到目標端,因此源端和目標端都會存在這種文件。

Trail文件存在目的旨在防止單點故障,例如數據庫abort,系統宕機,突發斷電,網絡不通等情況,結合checkpoint機制把沒有順利傳遞到目標端的文件進行斷點續傳,保證GG高可用。

(2)checkpoint檢查點

GG中的檢查點機制與Oracle數據庫檢查點機制有異曲同工之處,都是用於記錄日誌數據傳輸應用的進度點,進程會在trail文件中標記checkpoint位置,如果發生故障,則數據可以根據checkpoint記錄的位置來重傳恢復。

理解了上面的概念,我們就可以了解GG數據傳輸的原理,大體上可以分成兩種模式

1)直接傳輸:Extract直接從redo buffer中捕獲日誌傳遞到目標端,在源端不寫入trail文件。

2)文件傳輸:Extract先把捕獲的日誌寫入trail文件,再用Pump進程泵出到目標端,這樣的好處第一安全,第二備份恢復。

轉://Oracle Golden Gate 概念和原理