1. GoldenGate的歷史
GoldenGate 公司于1995年成立于美國加州舊金山,它的名稱源自舊金山聞名于世的 金門大橋。兩位創始人Eric Fish 和Todd Davidson最初旨在為Tandem計算機公司設計一個 容錯系統,由于GoldenGate 的健壯性和出色的數據復制功能,銀行用它來把AT M網絡的 交易數據發送到IBM 大型機,后來廣泛地應用到金融行業及要求數據復制高效、健壯的各 個行業,全球licences 數量超過4000。
該公司于2009年9 月被Oracle 公司收購,在此之前 Oracle 和GoldenGate 公司就有了 長達超過10年的合作關系。Oracle 收購GoldenGate 以后,按照Oracle 公司的一貫策略, 迅速把它和自己的數據庫、中間件以及應用集成,依托 Oracle 公司研發技術的優勢,并對 其做了大量的更新和改進。截止到目前為止,全球已經有五百多家大客戶使用GoldenGate 作為其容災、復制的解決方案。作為一個企業級的成熟產品,因為其快速、易用、靈活、 健壯等特性,越來越多的用戶把它作為關鍵業務系統容災、復制、同步的首選。隨著Oracle 公司對其不斷改進,這個產品會越來越穩定、成熟、可靠,同時也會有更多人去學習它, 使用它。
目前GoldenGate 的最新版本為11.1 ,為了和 Oracle 數據庫、中間件產品的稱謂保持一 致,Oracle 稱之為11g ,目前Oracle 公司把它歸到Fusion Middleware ,也就是融合中間件 產品線中。但實際上它和數據庫的聯系更加緊密,有經驗的DBA花較短的時間就可以迅 速地掌握它。
2. GoldenGate家族
Oracle GoldenGate最為常見的家族成員包括GoldenGate 、GoldenGate Director(現更 名為GoldenGate Management Pack,但是絕大部分熟悉 GoldenGate 的人還是習慣性地稱其 為GoldenGate Director,為了保證上下文的一致性,這里統一稱其為 GoldenGate Director)、 GoldenGate Veridata 。另外,也有不太常見的GoldenGate for Mainframe 和GoldenGate Adapters。
GoldenGate 產品是核心產品,GoldenGate Director為GoldenGate 提供友好的GUI 配置 管理界面,而GoldenGate Veridata為GoldenGate 源端和目標端提供數據比對和校驗的功能。 注意這三者并不是一個打包的產品,比如如果您購買了 GoldenGate 軟件,如果需要圖 形界面或需要數據校驗的功能,就需要額外購買 GoldenGate Director 或者GoldenGate Veridata。
3. GoldenGate及Oracle產品戰略
在Oracle 收購GoldenGate 以后,與 Oracle 原有的 Data Guard、 ODI 互為補充,共同 為企業提供跨平臺實時數據同步的解決方案。與此同時,又可以與Oracle Real Application Cluster 、Data Guard 一起為用戶提供豐富、靈活的容災方案及高可用特性,這既是Oracle 公司當前也是其未來的產品發展策略與方向。
另外有的人可能注意到了Oracle 公司對其集成在數據庫中的Streams的態度的一些 變化。Oracle 公司聲稱對其產品Streams將不再做任何重大改進,而是會把 Streams的一些 優秀特性集成到GoldenGate 產品上來,同時 Oracle 也承諾繼續對現有使用Streams的客戶 提供技術支持。與此同時,集成在Oracle 數據庫中的另外一項邏輯復制產品——Data Guard Logical Standby 也遭受了同樣的命運。Oracle 對其產品線可整合能力可見一斑。
4. GoldenGate支持的平臺以及數據庫
截止到筆者撰寫本書為止,GoldenGate 幾乎支持市面上流行的所有主流操作系統平臺 和數據庫。
目前經過GoldenGate 11.1 認證的主流數據庫版本包括以下幾種。
? ? Oracle 8i (只支持DML)。
? ? Oracle 9 i 以上所有的數據庫版本 ( 支持DML和DDL)。
? ? IBM DB2 UDB 8.1 、8.2、9.1、9.5 以上版本(只支持DML)。
? ? Microsoft SQL Server 2000、2005和2008(只支持DML)。
? ? MySQL 4.1、5.0(只支持DML)。
? ? Sybase ASE 12.5.4 、15.0 (只支持DML)。
5. GoldenGate的定位
? ? 零宕機時間數據庫升級和遷移。
? ? 滿足用戶亞秒級實時數據的需求。
? ? 可持續的數據高可用性和實時商務智能。
? ? 異構平臺及跨操作系統實時數據同步。
? ? 對源系統和目標系統是非侵入式的。
6. GoldenGate技術架構
和傳統的邏輯復制一樣,Oracle GoldenGate 實現原理是通過抽取源端的redo log 或者 archive log ,然后通過TCP/IP投遞到目標端,最后解析還原應用到目標端,使目標端實現 同源端數據同步。圖1-1 是Oracle GoldenGate 的技術架構。
6.1 Manager進程
Manager進程是GoldenGate 的控制進程。如果把所有的 Oracle 進程比喻為軍隊,那么 Manager 就相當于司令。Manager 進程運行在源端和目標端上,它主要有以下幾個方面的 作用:啟動、監控、重啟GoldenGate 的其他進程,報告錯誤及事件,分配數據存儲空間, 發布閾值報告等。
每個源端或者目標端有且只能存在一個 Manager 進程。其運行狀態有兩種即 RUNNING(正在運行)和STOPPED(已經停止)。
在Windows 系統上,Manager進程是作為一個服務來啟動的,而在類UNIX 系統中, Manager則是一個操作系統進程。
6.2 Extract 進程
Extract 運行在數據庫源端,負責從源端數據表或者日志中捕獲數據。在早期的 GoldenGate 版本中,它通常被稱為Collect 進程。按照其所處的階段不同,Extract 的作用 可以按照時間來劃分。
初始數據裝載階段:在初始數據裝載階段,Extract 進程直接從源端的數據表中抽取數據。 同步變化捕獲階段:初始數據同步完成以后,Extract 進程負責捕獲源端數據的變化 (DML和DDL)。
Extract 進程利用其內在的checkpoint 機制,周期性地檢查并記錄其讀寫的位置,通常 是寫入到一個本地的trail 文件。這種機制是為了保證如果Extract 進程終止或者操作系統 宕機,重新啟動 Extract 進程后,GoldenGate 能夠恢復到以前的狀態,從上一個斷點處繼續 往下運行,而不會有任何數據損失。
Extract 進程的狀態包括STOPPED(正常停止)、STARTING (正在啟動)、RUNNING (正在運行)、ABENDED (Abnomal End 的縮寫,表示異常結束)。
6.3 Pump 進程
Pump 進程運行在數據庫源端,其作用非常簡單。如果源端使用了本地的trail 文件, 那么Pump 進程就會把trail 以數據塊的形式通過TCP/IP協議發送到目標端,這通常也是推 薦的方式。Pump 進程本質是Extract 進程的一種特殊形式,如果不使用trail 文件,那么就 是Extract 進程在抽取完數據以后,直接投遞到目標端。
與Pump 進程相對應的叫做Server Collector 進程,這個進程不需要引起人們的關注, 因為在實際操作過程中無需對其進行任何配置,所以對人們來說它是透明的。它運行在目 標端,其任務就是把 Extract/Pump 投遞過來的數據塊重新組裝成trail 文件,人們稱之為遠 程trail 文件。
6.4 Trail文件
為了更有效、更安全地把數據庫事務信息從源端投遞到目標端,GoldenGate 引進trail 文件的概念。前面提到Extract 抽取完數據以后GoldenGate 會將抽取的事務信息轉化為一 種GoldenGate 專有格式的文件,然后Pump 負責把源端的trail 文件投遞到目標端,所以源、 目標兩端都會存在這種文件,源端存放的trail 文件叫本地trail 文件,目標端存放的trail 文件叫遠程trail 文件。trail 文件存在的目的旨在防止單點故障,將事務信息持久化,并且 使用checkpoint 機制來記錄其讀寫位置,如果故障發生,則數據可以根據checkpoint 記錄 的位置來重傳。
值得一提的是,trail 文件并不總是必須的。人們可以在配置Extract 進程的時候通過 TCP/IP協議直接把日志的信息投遞到目標端。但通常并不推薦這么做,因為一旦發生系統 宕機或者網絡故障,則有可能造成數據的丟失。
6.5 Replicat 進程
Replicat 進程,通常也把它叫做應用進程。運行在目標端,是數據傳遞的最后一站, 負責讀取目標端trail 文件中的內容,并將其解析為 DML或DDL語句,然后應用到目標數 據庫中。
和Extract 進程一樣,Replicat也有其內部的checkpoint 機制,保證進程重新啟動后可 以從上次記錄的位置開始恢復,而無數據損失的風險。 它的運行狀態和 Extract 進程一致,包括 STOPPED、STARTING 、RUNNING 、 ABENDED 。
6.6 GGSCI
GGSCI是GoldenGate Software Command Interface的縮寫,它提供了十分豐富的命令 來對GoldenGate 進行各種操作,如創建、修改、監控GoldenGate 進程等。
絕大部分的操作都是通過它來完成的。當然如果您需要GUI 方式的圖形界面來管理, 則需要購買GoldenGate Director。
7. GoldenGate的復制模式
GoldenGate 的模式包括圖1-2 中描述的幾種,其中“一對一”是 GoldenGate 最簡單的 一種模式,也是最常用的模式。
這種模式的一種典型應用就是用于數據容災,通常源端數據庫為生產端,目標端數據 庫為容災端。
另外一種應用場景是把源端的OLTP系統產生的交易日志傳送到目標端,使用BI數據 倉庫或者是OLAP。