2022年7月5日 星期二

1. Oracle Golden Gate 介紹

Oracle Golden Gate (簡稱 OGG) 是一套主要用來做資料同步的軟體, Oracle 資料庫本身已經有 Stream 這項功能用來做資料同步,不過 Stream 的設定與管理不易,在 Oracle 併購了 Golden Gate 之後已漸漸用 OGG 取代了 Stream 作為主要資料同步的方式,而 Oracle 自 19c 這個版本開始已經不再支援 Stream 這項功能了, Golden Gate 已成為 Oracle 做資料同步的主流產品。


同樣作為資料同步之用, OGG 不同於 Physical Standby 、 Materialized view 的地方在於, OGG 的同步是以 Table 為單位,在交易 commit 之後便立刻進行同步,提供了資料同步的即時性,而且 Source 與 Target 可以是不同的 Oracle 版本,或者是不同的作業系統平台,甚或可以是不同種類的資料庫 (例如 Oracle to MySQL 、 SQL Server to SQL Server …等) ,在跨平台的支援之下,運用起來比起 Stream 更為彈性,使得 Oracle 發展的重心移往 OGG 這項產品。


資料同步可運用的場景在 Data Guard 的章節已討論過,例如 Target 資料庫可以當作備份或報表伺服器之用…等, OGG 在即時資料同步的特性之下,最常運用的場景在於資料庫的異機升級,或者是資料庫的異機同質或異質平台的移轉,透過 OGG 的同步機制,可以大量減少資料庫移轉的服務停止時間。


OGG 另一項優點是軟體本身是輕量的,軟體的安裝不需要花費太多空間,不像資料庫軟體動輒就要幾十G 的空間,並且安裝與設定上也非常容易。 OGG 整體的概念上也非常的簡單,在 Source 與 Target 資料庫所在的 Server 上安裝好 OGG 軟體之後,首先要先啟動 Manager (MGR) 這個 Process , MGR 主要的功能在於定義 Source 與 Target 之間溝通所需要的 Port ,以及啟動與關閉 Extract 、 Pump 、 Replicate 等 Process 所用 :


在設定完 MGR 之後, Source 端需要設定兩種 Process , Extract 與 Pump , Extract 主要的功能是從 Source 資料庫的交易日誌檔將交易抽取出來,這些被抽取出來的交易紀錄便會放入 Trail 這個檔案當中; Pump 主要的目的就是將 Trail 的內容傳送到 Target 端。 Target 端也有兩種 Process , Collector 與 Replicate , Collector 是一個隱含的 Process ,一般不用特別去設定它,主要的功能是用來接收 Source 端 Pump 所傳過來的 Trail , Replicate 則是用來將 Trail 的內容 Apply 到 Target 資料庫中,這邊就需要去定義它哪些資料庫物件是需要被 Apply 的。


OGG 的 Extract 只會抓取已經 commit 的交易,所以它資料同步的順序是以交易 commit 的順序來同步,例如 Source 資料庫先發起了一個交易 TX1 進行了 Insert 與 Update 等動作,在這中途又有另一個交易 TX2 發起了 Insert 的動作,而 TX2 進行完 Insert 之後立即執行了 commit 在 TX1 之前 :


由於 TX2 先於 TX1 前進行 commit ,所以 Extract 會先將 TX2 抽取出來,因此在 Trail 裡面的順序會先進行 TX2 然後才進行 TX1 ,到了 Target 端 Apply 的順序也會從 TX2 先進行 Apply 。 OGG 在抽取、傳送、 Apply 每個交易之後都會做一個 Checkpoint 並記錄起來,這邊稱作 CSN (Commit Sequence Number) ,用途在於當發生異常中斷時,可以藉由 CSN 確認同步到哪一筆交易,然後再接續同步往後的交易, OGG 的 CSN 就等同於 Oracle 資料庫的 SCN ,若是同步 Oracle 資料庫,這兩者是可以對應起來的。


OGG 在操作上使用的是文字介面,都是經由 ggsci 這個介面來做操作,在 OGG 安裝目錄下執行 ggsci 便會進入到 GGSCI 的介面 :

$ ./ggsci

GGSCI>

GGSCI> info all


在進入 GGSCI 之後,我們所要學習的第一個命令就是 info all ,透過 info all 就可以馬上知道目前 OGG 設定多少個同步的 Group ,以及當下同步的狀態為何 :


既然 OGG 操作上使用的是文字介面,那麼當然爾所有的設定也是透過文字介面來完成,所有的 MGR 、 Extract 、 Pump 、 Replicate 設定都是透過參數檔來完成,這些參數檔都是位於 OGG 安裝目錄下的 dirprm 目錄,並且都是以 *.prm 來命名,而這些 Process 的 Log 檔我們稱作 Report File ,位於 dirrpt 目錄底下,以 *.rpt 命名,同時在 dirrpt 目錄底下還會有另一種檔案 *.dsc ,表示 Discard File ,這個檔案是用來存放同步中有發生異常的資料。


在初學 OGG 階段,我們只需要知道 info all 、 以及參數檔 dirprm 、 Log 檔 dirrpt 這些東西就已經足夠,設定上也並不複雜,是一個蠻好上手的工具。


沒有留言:

張貼留言