歡迎您光臨本站 註冊首頁

Oracle資料庫同步技術

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

基於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資料庫,在這種方式下,http://www.linuxidc.com目標庫通過介質恢復的方式保持與源資料庫同步,這種方式支持任何類型的數據對象和數據類型,一些對資料庫物理結構的操作如數據文件的添加,刪除等也可支持。如果需要,Physical Standby資料庫可以只讀方式打開,用於報表查詢、數據校驗等操作,待這些操作完成後再將資料庫置於日誌應用模式下。

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

DataGuard數據同步技術有以下優勢:

1) Oracle資料庫自身內置的功能,與每個Oracle新版本的新特性(如ASM)都完全兼容,且不需要另外付費;

2) 配置管理較簡單,不需要熟悉其他第三方的軟體產品;

3) Physical Standby資料庫支持任何類型的數據對象和數據類型;

4) Logical Standby資料庫處於打開狀態,可以在保持數據同步的同時執行查詢等操作;

5) 在最大保護模式下,可確保數據的零丟失;

DataGuard數據同步技術的劣勢體現在以下幾個方面:

1) 由於傳輸整個日誌文件,因此需要較高的網路傳輸帶寬;

2) Physical Standby資料庫雖然可以只讀方式打開,然後做些查詢、報表等操作,但需要停止應用日誌,這將使目標庫與源數據不能保持同步,如果在此期間源資料庫發生故障,將延長切換的時間;

3) Logical Standby資料庫不能支持某些特定的數據對象和數據類型;

4) 不支持一對多複製,不支持雙向複製,因此無法應用於信息集成的場合;

5) 只能複製整個資料庫,不能選擇某個schema或表空間進行單獨複製;

6) 不支持異構的系統環境,需要相同的操作系統版本和資料庫版本;

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

 

二、Streams數據同步技術

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

Streams數據同步大致分如下幾個步驟:

1) Capture進程分析日誌,生成邏輯記錄LCR,將其放入一個隊列中;

2) Propagation進程將LCR發送到另一個資料庫中,通常是目標資料庫;

3) 在目標資料庫中,Apply進程將LCR應用到目標庫,實現數據的同步;

該處理過程的信息流如下圖:

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

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

Streams數據同步技術有以下優勢:

1) 可支持一對多、多對一和雙向複製,可用於數據分發和共享,這是DataGuard所不具備的;

2) 可靈活配置只複製資料庫中的一部分對象,如可按Table複製、Schema複製,表空間複製等,並可在複製過程中對數據進行過濾和轉換,使之滿足不同的需要;

3) 同DataGuard一樣,是Oracle內置功能,與每個Oracle新版本的新特性(如ASM)都完全兼容,且不需要額外付費;

4) 可用於異構的操作系統和資料庫版本,但有一些限制;

5) 可支持非Oracle資料庫和Oracle資料庫之間的數據同步;

6) 目標資料庫處於打開狀態,可以在保持數據同步的同時執行查詢等操作,分擔源資料庫的壓力;

Streams數據同步技術有以下缺點:

1) 配置維護較複雜,需要較高的技術水平;

2) 在非Downstream複製中,對源資料庫壓力較大;如果使用Downstream複製,則增加了配置的複雜性且需要通過網路傳輸整個日誌文件,對網路帶寬要求較高;

3) 不能支持某些特定的數據對象和數據類型;

4) 不能保證數據的零丟失;

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有以下優點:

1) 支持異構的操作系統和資料庫管理系統,便於客戶在不同資料庫管理系統和操作系統平台之間的數據同步,這是其核心優勢所在;

2) 跟DataGuard傳輸整個日誌文件相比,GoldenGate傳輸的數據量大大降低,在沒有LOB等數據對象的情況下,通常是整個日誌文件1/4或更少;

3) 目標資料庫處於打開狀態,且支持一對多、多對一,雙向複製等,也可以選擇部分對象進行複製,可滿足數據分發和數據集成的需要,減輕源資料庫壓力;

4) 所佔系統資源較少,通常在10%以下;

5) GoldenGate被Oracle公司收購后,預計對Oracle資料庫的支持方面會做的更好;

GoldenGate的劣勢體現在以下幾個方面:

1) 需要支付額外的Liscense費用,通常是一筆不小的支出;

2) 需要在資料庫軟體外安裝一套專門數據同步軟體,增加了管理維護的複雜程度;

3) 不能支持某些特定的數據對象和數據類型;

4) 由於數據複製操作獨立於資料庫管理系統,因此不能確保數據零丟失。

由以上分析可知,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數據同步技術的優勢有:

1) 支持異構的操作系統平台,便於資料庫管理系統的版本升級及操作系統平台切換;

2) 跟DataGuard傳輸整個日誌文件相比,SharePlex傳輸的數據量大大降低,這點跟GoldenGate差不多;

3) 目標資料庫處於打開狀態,且支持一對多、多對一,雙向複製等配置,也可以選擇部分對象進行複製,可滿足數據分發和數據集成的需要,減輕源資料庫壓力,這方面也類似於GoldenGate;

4) 所佔系統資源較少,通常在10%以下;

SharePlex數據同步技術的劣勢體現在以下幾個方面:

1) 需要支付額外的Liscense費用,通常是一筆不小的支出;

2) 需要在資料庫軟體外安裝一套專門數據同步軟體,增加了管理維護的複雜程度;

3) 由於數據複製操作獨立於資料庫管理系統,因此不能確保數據零丟失;

4) 由於是第三方的軟體產品,在對某些特定的數據對象、數據類型和Oracle某些新特性如ASM的支持方面不如資料庫廠商自己的解決方案;另外,還有一種可能就是如果Oracle對自己的日誌格式做些改變或加密,SharePlex將無能為力;

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

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



[火星人 ] Oracle資料庫同步技術已經有3450次圍觀

http://coctec.com/docs/linux/show-post-74047.html