高級復制、流復制、備庫的區(qū)別
?
?
??? 公司目前需要做一個與生產(chǎn)庫實時同步的備庫,于是做了一些技術(shù)選擇。基本上來說,最省事的當然就是做個DG,但是對系統(tǒng)硬件、操作系統(tǒng)的要求比較高,不可能再弄臺小機搞這玩意。所以只能排除。另外物化視圖也是比較方便的方法,但是因為是需要整庫備份,很明顯是不切實際的。基本上可選的技術(shù)也只有高級復制和流復制兩種了。流復制的配置比較麻煩,而且應(yīng)用也不是很成熟,但是功能強大。高級復制雖然要簡單一些,但是也只能支持Table級,所以在兩者之間還是很困惑,專門找了一些材料對比一下。
?
??? 高級復制(Advanced Replication)
??? 流復制(Streams Replication)
??? 備庫(DataGuard)
?
??? DataGuard在高可用及容災(zāi)方面一般是dba的首選,畢竟DataGuard在這方面存在壓倒性的優(yōu)勢,不管是物理備用庫(physical standby database)還是邏輯備用庫(logical standby database),它們都具有一些共同的待征。
?
??? 配置和管理方面的成本:DataGuard比Stream Replication簡單方便;安全與穩(wěn)定方面的成本:DataGuard比Stream Replication穩(wěn)定可靠。
?
??? 對對于一個24x7的系統(tǒng)來說,這些是非常重要的,系統(tǒng)宕機時間的增加不僅影響著公司的形象,還會影響公司的效益;采用DataGuard,數(shù)據(jù)的安全性相當有保障,物理備用庫可以在最短的時間完成故障切換,邏輯備用庫在保障數(shù)據(jù)安全的同時,也可以承擔大量的報表等業(yè)務(wù);由于DataGuard的配置與管理比較簡單,同理也降低了dba的工作強度;那什么情況下選擇使用Stream Replication呢?
?
??? 1、局部復制 Stream可以只復制某些表或某些模式
??? 2、異構(gòu)環(huán)境 充分利用現(xiàn)有的設(shè)備與技術(shù)
??? 3、遠程容災(zāi) Stream對網(wǎng)絡(luò)的要求較DataGuard低
?
??? Stream Replication有靈活的復制策略,不僅可以配置只復制某些表,還可以配置僅復制某些表上的DDL或DML,相比DataGuard必須整個數(shù)據(jù)庫復制而言,可以節(jié)省相當?shù)拇鎯ν顿Y,畢竟對于某些海量數(shù)據(jù)而言,有許多是不必要復制的。
?
??? 如果在異構(gòu)環(huán)境,即不同的操作系統(tǒng),那DataGuard將會束手無策,非Stream Replication莫屬,這樣可以充分利用現(xiàn)有的環(huán)境,配置高用可方案。在異構(gòu)環(huán)境,Stream Replication將會是Advanced Replication的強勁對手。
?
???
Stream Replication傳播的是經(jīng)過logmnr挖掘并包裝的邏輯改變記錄(LCRs),相比DataGuard傳送archived redo log、Advanced Replication的mview log與MView刷新的方式,Stream Replication對網(wǎng)絡(luò)的需求降低了很多,在遠程異地容災(zāi)的過程中,租用網(wǎng)絡(luò)帶寬是一筆較高的費用,Stream Replication可以適當?shù)亟档瓦@筆費用。
?
???
Advanced Replication相對于DataGuard,缺點是:配置與管理較復雜、安全與穩(wěn)定性不夠;優(yōu)點:局部復制、異構(gòu)環(huán)境等。Advanced Replication是一種相當成熟的技術(shù),在許多關(guān)鍵系統(tǒng)中得到成功的運用,相對于9iR2推出的Stream Replication而言,雙方適用的環(huán)境雖然相當,比如都可以進行局部復制、異構(gòu)復制、遠程容災(zāi)等,Advanced Replication目前在穩(wěn)定性與安全性方面更經(jīng)得起考驗。
?
??? 對比Stream Replication與Advanced Replication底層的實現(xiàn)技術(shù),Stream Replication在實時性、穩(wěn)定性、高效率、低消耗(較少的cpu/network資源)等方面更有優(yōu)勢,但凡一些新推出的功能,都或多或少存在一些不確定的因素。
?
??? 在10gR1中,Oracle針對目前Stream Replication存在的弱點進行了增強,不僅提供了從Advanced Replication遷移到Stream Replication的腳本,還提供了Stream Replication的配置與監(jiān)控工具,Stream Replication在配置與管理方面必將智能化、簡單化,擔負起與shareplex爭奪企業(yè)數(shù)據(jù)復制市場的重任。
?
??? 綜上所述,Oracle在數(shù)據(jù)復制方面,DataGuard、Advanced Replication、Stream Replication都有自己的特點及獨到的地方,做為DBA,用什么樣的方案取決于目前的設(shè)備環(huán)境、業(yè)務(wù)需求、將來的發(fā)展趨勢以及已經(jīng)成熟的技術(shù)。當然,對于已經(jīng)選擇的數(shù)據(jù)復制方案,技術(shù)上必須有一定的掌握;畢竟所有的方案都不是沒有問題的,即使目前較安全、穩(wěn)定、便于管理的DataGuard,也會出現(xiàn)一些莫明其妙的事情,所以最好做到良好的監(jiān)控,預(yù)防可能存在的問題,問題一旦發(fā)生,能快速地解決問題。
?
???
Advanced Replication與Streams Replication的原理是完全不同的,Streams Replication可以到表、用戶、數(shù)據(jù)庫級別,但高級復制似乎只能到表一級。
?
??? 注意:Streams Replication不是高級復制的升級版。
?
?
------------------------------------------------
??? 異構(gòu)環(huán)境下,Oracle的高可用和容災(zāi)有Advanced Replication和Streams Replication兩種,兩種的異同點如下:
?
??? 1.高級復制是基于觸發(fā)器(trigger)原理,而Stream是基于日志挖掘原理,因此Stream復制對源數(shù)據(jù)庫的性能影響更小,但實時性不如高級復制。
??? 2.高級復制復制的對象是基于數(shù)據(jù)庫目標(Object)的,如表、索引和存儲過程,而Stream復制可以針對表、方案(schema)和整個數(shù)據(jù)庫,因此如果出于容災(zāi)整個數(shù)據(jù)庫的考慮,Stream復制的配置相對簡單。
??? 3.高級復制是一種相當成熟的技術(shù),在許多關(guān)鍵系統(tǒng)中得到成功的運用,相對于9iR2推出的Stream復制,高級復制目前在穩(wěn)定性與安全性方面更經(jīng)得起考驗。
??? 4.從發(fā)展的角度看,流的應(yīng)用會越來越多,從Oracle10g開始,Oracle公司提供了從高級復制向流復制移植的工具。可以看出,Oracle公司會更偏重于基于流的新技術(shù)。
??? 5.由于高級復制是基于觸發(fā)器的,因此所有的復制對象結(jié)構(gòu)(DDL)的改變,都必須通過Oracle提供的復制包來實施,和應(yīng)用結(jié)合的比較緊,更適合于開發(fā)者使用,而流復制則更適合DBA來實施。
?
??? 兩種都用了一段時間了,實際使用來看,Streams復制需要更少的帶寬,2m帶寬,如果Streams復制不行,高級復制大概更沒戲,但是用Streams最好別網(wǎng)絡(luò)斷線時間過長,不知道是bug還是Oracle沒考慮這種情況,如果復制停頓一段時間,再恢復正常,大概是隊列表中消息太多了,入隊出隊都很慢,非線性增長啊,這樣就需要不短的一段時間來同步數(shù)據(jù),高級復制就沒這種狀況。
?
???
BUG:反正10.2.0.1有一些,看你碰的到碰不到了,嚴重的能讓你刪掉隊列表重建才行,意味著基本是重建整個復制了,不過想重復一下又不出現(xiàn)了;還有使用negative rule如果站點多了遇到大的更新事務(wù)速度就變得極慢,站點多了要先設(shè)計好結(jié)構(gòu);會不停在有apply進程的站點udump目錄下生成trc文件,雖然還算不上很成熟,不過Streams復制真是好東西,以后必定會取代高級復制,建議打10.2.0.3補丁,據(jù)說修正了不少bug。
?
???
Stream對系統(tǒng)的設(shè)計與維護方要有相當?shù)膶?span id="bhldpvt" class="247530403-01072009">Stream技術(shù)的把控能力,而大多數(shù)系分與DBA對這個東西都沒有經(jīng)驗,所以難以推廣;DataGuard勝在維護簡單可靠,一般DBA都可以維護。Stream以后會的前景會非常廣闊! 尤其是雙向復制,解決了很多實際問題。
?
?