ORACLE同步軟體技術實現對比(轉載)

fyqmegan發表於2013-05-11

 

基於Oracle資料庫的資料同步技術大體上可分為兩類:Oracle自己提供的資料同步技術和第三方廠商提供的資料同步技術。Oracle自己的同步技術有DataGuard,Streams,Advanced Replication和一款叫做GoldenGate的資料同步軟體。第三方廠商的資料同步技術有Quest公司的SharePlex和DSG的RealSync。下面對這些技術逐一進行介紹。

一、DataGuard資料同步技術

DataGuard是Oracle資料庫自帶的資料同步功能,基本原理是將日誌檔案從原資料庫傳輸到目標資料庫,然後在目標資料庫上應用(Apply)這些日誌檔案,從而使目標資料庫與源資料庫保持同步。DataGuard提供了三種日誌傳輸(Redo Transport)方式,分別是ARCH傳輸、LGWR同步傳輸和LGWR非同步傳輸。在上述三種日誌傳輸方式的基礎上,提供了三種資料保護模式,即最大效能(Maximum Performance Mode)、最大保護(Maximum Protection Mode)和最大可用(Maximum Availability Mode),其中最大保護模式和最大可用模式要求日誌傳輸必須用LGWR同步傳輸方式,最大效能模式下可用任何一種日誌傳輸方式。

最大效能模式:這種模式是預設的資料保護模式,在不影響源資料庫效能的條件下提供儘可能高的資料保護等級。在該種模式下,一旦日誌資料寫到源資料庫的聯機日誌檔案,事務即可提交,不必等待日誌寫到目標資料庫,如果網路頻寬充足,該種模式可提供類似於最大可用模式的資料保護等級。

最大保護模式:在這種模式下,日誌資料必須同時寫到源資料庫的聯機日誌檔案和至少一個目標庫的備用日誌檔案(standby redo log),事務才能提交。這種模式可確保資料零丟失,但代價是源資料庫的可用性,一旦日誌資料不能寫到至少一個目標庫的備用日誌檔案(standby redo log),源資料庫將會被關閉。這也是目前市場上唯一的一種可確保資料零丟失的資料同步解決方案。

最大可用模式:這種模式在不犧牲源資料庫可用性的條件下提供了儘可能高的資料保護等級。與最大保護模式一樣,日誌資料需同時寫到源資料庫的聯機日誌檔案和至少一個目標庫的備用日誌檔案(standby redo log),事務才能提交,與最大保護模式不同的是,如果日誌資料不能寫到至少一個目標庫的備用日誌檔案(standby redo log),源資料庫不會被關閉,而是執行在最大效能模式下,待故障解決並將延遲的日誌成功應用在目標庫上以後,源資料庫將會自動回到最大可用模式下。

根據在目標庫上日誌應用(Log Apply)方式的不同,DataGuard可分為Physical Standby(Redo Apply)和Logical Standby(SQL Apply)兩種。

Physical Standby資料庫,在這種方式下,目標庫通過介質恢復的方式保持與源資料庫同步,這種方式支援任何型別的資料物件和資料型別,一些對資料庫物理結構的操作如資料檔案的新增,刪除等也可支援。如果需要,Physical Standby資料庫可以只讀方式開啟,用於報表查詢、資料校驗等操作,待這些操作完成後再將資料庫置於日誌應用模式下。

Logical Standby資料庫,在這種方式下,目標庫處於開啟狀態,通過LogMiner挖掘從源資料庫傳輸過來的日誌,構造成SQL語句,然後在目標庫上執行這些SQL,使之與源資料庫保持同步。由於資料庫處於開啟狀態,因此可以在SQL Apply更新資料庫的同時將原來在源資料庫上執行的一些查詢、報表等操作放到目標庫上來執行,以減輕源資料庫的壓力,提高其效能。

DataGuard資料同步技術有以下優勢:
) Oracle資料庫自身內建的功能,與每個Oracle新版本的新特性(如ASM)都完全相容,且不需要另外付費;
) 配置管理較簡單,不需要熟悉其他第三方的軟體產品;
) Physical Standby資料庫支援任何型別的資料物件和資料型別;
) Logical Standby資料庫處於開啟狀態,可以在保持資料同步的同時執行查詢等操作;
) 在最大保護模式下,可確保資料的零丟失;

DataGuard資料同步技術的劣勢體現在以下幾個方面:
) 由於傳輸整個日誌檔案,因此需要較高的網路傳輸頻寬;
) Physical Standby資料庫雖然可以只讀方式開啟,然後做些查詢、報表等操作,但需要停止應用日誌,這將使目標庫與源資料不能保持同步,如果在此期間源資料庫發生故障,將延長切換的時間;
) Logical Standby資料庫不能支援某些特定的資料物件和資料型別;
) 不支援一對多複製,不支援雙向複製,因此無法應用於資訊整合的場合;
) 只能複製整個資料庫,不能選擇某個schema或表空間進行單獨複製;
) 不支援異構的系統環境,需要相同的作業系統版本和資料庫版本;

DataGuard技術是Oracle推薦的用於高可用災難恢復環境的資料同步技術。


二、Streams資料同步技術

Streams是從版本Oracle 9i才開始具有的資料同步功能,是為提高資料庫的高可用性和資料的分發和共享功能而設計的,Streams利用高階佇列技術,通過用LogMiner挖掘日誌檔案生成變更的邏輯記錄,然後將這些變更應用到目標資料庫上,從而實現資料庫之間或一個資料庫內部的資料同步。

Streams資料同步大致分如下幾個步驟:
) Capture程式分析日誌,生成邏輯記錄LCR,將其放入一個佇列中;
) Propagation程式將LCR傳送到另一個資料庫中,通常是目標資料庫;
) 在目標資料庫中,Apply程式將LCR應用到目標庫,實現資料的同步;

該處理過程的資訊流如下圖:

在簡單的Streams配置中,Capture程式一般位於源資料庫,因此叫做Local Capture Process,Capture程式在分析日誌後將生成的LCR放入佇列中,由Propagation程式將LCR傳送到目標庫中。這樣做的好處是不用在網路上傳送整個的日誌檔案,因此可提高網路傳輸的效率,但這一般會給源資料庫帶來較大的壓力,影響其效能。

另一種配置是Capture程式位於Downstream資料庫中,源資料庫只負責將日誌檔案傳送(日誌傳輸方式可為ARCH傳輸、LGWR同步傳輸和LGWR非同步傳輸中的任何一種)到Downstream資料庫中,所有的Capture操作都在Downstream資料庫上完成。這種配置的好處是可以大大降低源資料庫的壓力,缺點是需要傳輸整個日誌檔案,對網路頻寬要求較高。

Streams資料同步技術有以下優勢:
) 可支援一對多、多對一和雙向複製,可用於資料分發和共享,這是DataGuard所不具備的;
) 可靈活配置只複製資料庫中的一部分物件,如可按Table複製、Schema複製,表空間複製等,並可在複製過程中對資料進行過濾和轉換,使之滿足不同的需要;
) 同DataGuard一樣,是Oracle內建功能,與每個Oracle新版本的新特性(如ASM)都完全相容,且不需要額外付費;
) 可用於異構的作業系統和資料庫版本,但有一些限制;
) 可支援非Oracle資料庫和Oracle資料庫之間的資料同步;
) 目標資料庫處於開啟狀態,可以在保持資料同步的同時執行查詢等操作,分擔源資料庫的壓力;

Streams資料同步技術有以下缺點:
) 配置維護較複雜,需要較高的技術水平;
) 在非Downstream複製中,對源資料庫壓力較大;如果使用Downstream複製,則增加了配置的複雜性且需要通過網路傳輸整個日誌檔案,對網路頻寬要求較高;
) 不能支援某些特定的資料物件和資料型別;
) 不能保證資料的零丟失;

Oracle公司將Streams技術定位於資料的分發和共享,雖然也可用於高可用的災難恢復場合,但Oracle推薦使用的災難恢復技術是DataGuard。

三、Advanced Replication資料同步技術

Advanced Replication配置管理較複雜,且對源資料庫效能影響較大,預計在以後的Oracle版本中將可能逐步被Streams技術所取代,故不再對其做過多的介紹。

四、GoldenGate資料同步技術

GoldenGate原來是一家獨立的軟體廠商的產品,現該產品已被Oracle公司收購,Oracle將GoldenGate軟體整合到到其“融合(Fusion)”中介軟體中,預計以後該產品將與Oracle資料庫更緊密地整合。GoldenGate可以用於多種不同的作業系統平臺(Unix、Linux、Windows)和多種不同資料庫系統(如DB2、Oracle、Infomix、MySQL、Sybase等)之間的資料同步,是一款優秀的資料同步及資料分發產品。

GoldenGate軟體需要安裝在源資料庫伺服器和目標資料庫伺服器上,所需的作業系統資源在10%以下。GoldenGate資料同步的基本原理是由Extract程式讀取源資料庫的事物日誌(Oracle中是redo log),將其中的變更操作(insert、update、delete等)按事務執行的順序組合在一起,直接將其傳送到目標服務其上,或者存放到Trails檔案中,然後由Data Pump程式將Trails檔案傳輸到目標服務其上,在目標伺服器上Collector程式接收從源伺服器傳送過來的Trails檔案,最後由Replicat程式將Trails檔案中的資料裝載到目標資料庫中,其處理過程如下圖:

由於GoldenGate將資料儲存到自己的統一格式的Trail檔案中,因此可以將Trail檔案傳送到不同的作業系統,應用在不同的資料庫系統上,大大增強其靈活性。另外,由於GoldenGate只收集必要的資料到Trail檔案中,且Trail檔案可以壓縮,因此大大減少通過網路傳輸的資料量,壓縮後傳輸的資料量通常是日誌量的1/4或更少。

GoldenGate有以下優點:
) 支援異構的作業系統和資料庫管理系統,便於客戶在不同資料庫管理系統和作業系統平臺之間的資料同步,這是其核心優勢所在;
) 跟DataGuard傳輸整個日誌檔案相比,GoldenGate傳輸的資料量大大降低,在沒有LOB等資料物件的情況下,通常是整個日誌檔案1/4或更少;
) 目標資料庫處於開啟狀態,且支援一對多、多對一,雙向複製等,也可以選擇部分物件進行復制,可滿足資料分發和資料整合的需要,減輕源資料庫壓力;
) 所佔系統資源較少,通常在10%以下;
) GoldenGate被Oracle公司收購後,預計對Oracle資料庫的支援方面會做的更好;

GoldenGate的劣勢體現在以下幾個方面:
) 需要支付額外的Liscense費用,通常是一筆不小的支出;
) 需要在資料庫軟體外安裝一套專門資料同步軟體,增加了管理維護的複雜程度;
) 不能支援某些特定的資料物件和資料型別;
) 由於資料複製操作獨立於資料庫管理系統,因此不能確保資料零丟失。

由以上分析可知,GoldenGate用於資料整合,資料共享和分發方面比較合適,至於在高可用的災難恢復環境中,如果能滿足業務的RPO/RTO要求,也不失為一種理想的資料同步解決方案。

五、SharePlex資料同步技術

SharePlex是Quest公司開發的用於專門用於Oracle資料庫的資料同步軟體,可以執行在異構的作業系統平臺上和Oracle資料庫的不同版本之間。

SharePlex的資料複製原理與GoldenGate類似,需要分別在源資料庫伺服器和目標資料庫伺服器上安裝SharePlex軟體。具體處理過程是:Capture程式分析源資料庫的日誌檔案,抓取所需的資料變更操作,將其儲存在SharePlex自己專有的queue檔案中,放入到Capture Queue,然後由Read程式對queue檔案進行封裝處理,將其放入到Export Queue中,由Export程式將queue檔案通過網路傳送到目標伺服器上,目標伺服器上的Import程式接收這些queue檔案,將其放入到Post Queue中,最後由Post程式將這些queue檔案中的變更應用到目標資料庫中,其處理流程如下圖:

SharePlex資料同步技術的優勢有:
) 支援異構的作業系統平臺,便於資料庫管理系統的版本升級及作業系統平臺切換;
) 跟DataGuard傳輸整個日誌檔案相比,SharePlex傳輸的資料量大大降低,這點跟GoldenGate差不多;
) 目標資料庫處於開啟狀態,且支援一對多、多對一,雙向複製等配置,也可以選擇部分物件進行復制,可滿足資料分發和資料整合的需要,減輕源資料庫壓力,這方面也類似於GoldenGate;
) 所佔系統資源較少,通常在10%以下;

SharePlex資料同步技術的劣勢體現在以下幾個方面:
) 需要支付額外的Liscense費用,通常是一筆不小的支出;
) 需要在資料庫軟體外安裝一套專門資料同步軟體,增加了管理維護的複雜程度;
) 由於資料複製操作獨立於資料庫管理系統,因此不能確保資料零丟失;
) 由於是第三方的軟體產品,在對某些特定的資料物件、資料型別和Oracle某些新特性如ASM的支援方面不如資料庫廠商自己的解決方案;另外,還有一種可能就是如果Oracle對自己的日誌格式做些改變或加密,SharePlex將無能為力;

從上述分析可知,SharePlex雖然專用於Oracle資料庫同步,但同GoldenGate相比並無明顯優勢,GoldenGate對異構資料庫的支援更是SharePlex所不能比。再者,現在GoldenGate已經被Oracle公司收購,成為了Oracle的嫡系部隊,這對SharePlex來說確實是一件不幸的事,關乎生死。

除了上面介紹的這些資料同步技術外,在國內市場上用於Oracle資料同步的產品還有DSG 公司的RealSync軟體,RealSync的實現原理及功能與SharePlex基本類似,也是隻支援Oracle資料庫,也可以跨越不同的作業系統平臺。值得一提的是RealSync在目標資料庫的資料裝載方面,不是通過主鍵或唯一鍵來實現資料記錄的定位,而是自己維護一個源資料庫和目標資料庫的資料記錄的rowid mapping表,通過rowid來實現記錄的定為,因此在資料裝載效率方面有不小的提高


基於Oracle資料庫的資料同步技術大體上可分為兩類:Oracle自己提供的資料同步技術和第三方廠商提供的資料同步技術。Oracle自己的同步技術有DataGuard,Streams,Advanced Replication和一款叫做GoldenGate的資料同步軟體。第三方廠商的資料同步技術有Quest公司的SharePlex和DSG的RealSync。下面對這些技術逐一進行介紹。

相關文章