[Oracle]分散式系統的資料複製技術(轉)
一箇中型或大型公司往往由地理上分散的部門所組成,這些部門通常需要進行資料共享。針對這些共享資料,可以將其儲存在某個站點上,需要的使用者都從這個站點上存取。這種方案的優點是資料的一致性容易保證,但其缺點也是很突出的,那就是該站點的負載大、網路負載大,遠端使用者的資料響應遲緩。資料複製技術可以有效地解決這個問題,它透過將這些共享資料複製到位於不同地點的多個資料庫中,從而實現資料的本地訪問,減少了網路負荷,並提高了資料訪問的效能,而且透過對資料庫中的資料定期同步(通常是每天晚上),從而確保了所有的使用者使用同樣的、最新的資料。該技術適用於使用者數量較大、地理分佈較廣、而且需要實時地訪問相同資料的應用模式。
資料複製的概念及特點
1、資料複製的概念及分類
資料複製,就是將資料庫中的資料複製到另外一個或多個不同的物理站點上,從而保持源資料庫與目標資料庫中指定資料的一致性。
按照資料複製的實時性,資料複製可分為同步資料複製和非同步資料複製。同步資料複製是指將本地生產資料以完全同步的方式複製到異地,每一本地IO交易均需等待遠端複製的完成方予以釋放。非同步資料複製則是指將本地生產資料以後臺同步的方式複製到異地,每一本地IO交易均正常釋放,無需等待遠端複製的完成。同步複製實時性強,遠端資料與本地資料完全同步。但這種方式受頻寬影響較大,資料傳輸距離較短。非同步複製不影響本地交易,傳輸距離長,但其資料比本地資料略有延遲。在非同步複製環境中,對於所有應用最關鍵的就是要確保資料的一致性。
按照複製站點的型別,資料複製可分為多主控站點複製、物化檢視複製及混合複製。多主控站點複製也稱為對等站點複製,其中每個站點都是主控站點,都需要與其他站點進行資訊交流,各站點之間是平等的。物化檢視複製包含一個主控站點、一個或多個物化檢視站點,
物化檢視中的內容可以為目標主物件在某個時間點的全部複製或部分複製,其中目標主物件既可以是主控站點上的表也可以是物化檢視站點上的主物化檢視。混合複製包含多個主控站點和多個物化檢視站點,是主控站點複製和物化檢視複製的結合體,適合於複雜的業務情況。
2、資料複製的特點
資料複製透過在多個站點上建立備份,能夠提高資料的安全性,同時也提高了資料的可用性,這是因為如果一個站點出現了問題,使用者可以選擇其他站點繼續進行操作,應用系統還可繼續執行,從而資料複製提供了容錯保護機制。
然而資料複製最基本的功能是提高資料庫的效能。它透過將遠端資料庫中的資料複製到本地,使得應用能夠就近訪問資料,從而降低網路傳輸負載,提高效率。而且在資料複製系統中,可以提供多個站點之間的負載平衡,讓這幾個使用者使用這個,另外幾個使用者可以
使用其他的,以避免某些站點負載過重。
物化檢視還提供了按子集進行復制,這樣各站點就可只複製自己需要的資料,也能減輕網路的傳輸量。
資料複製的實現方法
在具體的實現之前,首先要做好設計與規劃。這就需要細緻分析具體的業務情況,設計出一套能夠滿足業務需要的方案。通常在設計過程中,需要確定出要建立的資料庫站點,各站點的型別,需要複製的資料物件,以及同步方式、衝突解決方案等內容。
在設計完成之後,就可具體來實現資料複製,實現主要包括以下幾步:
(1)建立複製站點
(2)建立組物件
(3)配置衝突解決方案
下面我們舉一個例子來說明各步具體需要完成的工作。在這個例子中我們採用多主控站點複製方式,設有兩個主控站點和兩個共享資料表。兩個主控站點分別為:處理站點(cl.world)和解釋站點(js.wo rld);兩個資料表為測區( survey)和測線( line)。
STEP1 建立複製站點
(1)首先以SYSTEM身份登陸主站點資料庫cl.worldCONNECT system/manager@cl.world
(2)建立使用者—複製管理員,併為該使用者授權複製管理員負責複製站點的建立和管理,每個複製站點都必須建立複製管理員:
CREATE USER repadmin IDENTIFIED BY repadmin;
BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (username => ’repadmin’);
END;
(3)為本站點指定傳播者
傳播者負責將本地最新更新的資料傳播到其他站點上:
BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => ’repadmin’);
END;
(4)為本站點指定接收者
接收者負責接收其他站點上的傳播者傳送過來的資料:
BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => ’repadmin’,
privilege_type => ’receiver’,
list_of_gnames => NULL);
END;
(5)確定清除時間
為了使傳送過來事務佇列不致過大,需要將成功載入的事務從事物佇列裡清除掉,這裡設定每小時清除一次。
CONNECT repadmin/repadmin@cl.world
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => ’SYSDATE + 1/24’,
delay_seconds => 0);
END;
在建立好站點cl.world後,以同樣的方法建立站點js. world。
(6)建立各主控站點之間的排程連結
建立各主控站點之間的排程連結需要先在各主控站點間建立資料庫連結,之後為每個資料庫連結定義排程時間。
首先,在處理站點上建立與解釋站點的資料庫連結,這裡需要先建立一個公用資料庫連結,供其他私有資料庫連結來使用。
CONNECT SYSTEM/MANAGER@cl.world
CREATE PUBLIC DATABASE LINK js.world USING ’js.world’;
CONNECT repadmin/repadmin@cl.world
CREATE DATABASE LINK js.world CONNECT TO repadmin
IDENTIFIED BY repadmin;
同樣,在解釋站點上建立與處理站點的資料庫連結
CONNECT SYSTEM/MANAGER@js.world
CREATE PUBLIC DATABASE LINK cl.world USING ’cl.world’;
CONNECT repadmin/repadmin@js.world
CREATE DATABASE LINK cl.world CONNECT TO repadmin
IDENTIFIED BY repadmin;
排程連結確定本站點上的事務向其他站點傳送的頻度,下面的程式碼為10分鐘一次:
CONNECT repadmin/repadmin@cl.world
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => ’js.world’,
interval => ’SYSDATE + (1/144)’,
next_date => SYSDATE,
parallelism => 1,
execution_seconds => 1500,
delay_seconds => 1200);
END;
在解釋站點上做相同的工作STEP2 建立主控組在複製環境中,Oracle用組來管理複製物件。透過將相關的複製物件放在一個組裡,從而方便對大量資料物件的管理。
這裡我們假設使用者模式integr ation 在處理站點和解釋站點都已存在,而且表測區(survey )和測線(line)也已經建立。
(1)建立主控組物件
CONNECT repadmin/repadmin@cl.world
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPGROUP (
gname => ’inte_repg’);
END;
(2)向主控組中新增資料物件,將測區表survey加入到組inte_repg中
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => ’inte_repg’,
type => ’TABLE’,
oname => ’survey’,
sname => ’integration’,
use_existing_object => TRUE,
copy_rows => FALSE);
END;
以同樣的方法將測線表line 加入到組inte_repg中
(3)在主控組中新增其他參與複製的站點,資料庫之間的同步方式在此指定
BEGIN
DBMS_REPCAT.ADD_MASTER_DATABASE (
gname => ’inte_repg’,
master => ’js.world’,
use_existing_objects => TRUE,
copy_rows => FALSE,
propagation_mode => ’ASYNCHRONOUS’);
END;
(4)如果可能出現衝突,則需要配置衝突解決方案。衝突解決方案將在後面介紹。
(5)為每個物件生成複製支援
BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => ’integration’,
oname => ’survey’,
type => ’TABLE’,
min_communication => TRUE);
END;
測線表line也一樣
(6)重新開始複製
BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => ’inte_repg’);
END;
以同樣的方式設定解釋站點。設定成功後,資料複製過程就宣告完畢,庫中的資料就可進行復制。
資料複製中衝突的解決方案
在複製環境中,儘管在資料庫和應用程式設計過程中,會盡量避免各站點間衝突的發生,但完全避免衝突的可能性還是比較小的,那麼一旦衝突發生,就需要一個按照具體業務規則的衝突解決機制,來使得各站點的資料保持一致。
首先需要分析哪些物件容易出現衝突。通常來說,靜態的資料變化少,衝突出現的可能性也小;而有些資料變化非常大,衝突出現的可能性也大。確定了衝突易發的物件後,需要確定怎樣解決衝突,比如在各站點之間建立優先次序,在資料不一致時,以某個站點上的為
準;或以某個站點上最新的修改為準。
Oracle提供了多中衝突解決方案,具體包括:針對更新衝突的方案、針對唯一性衝突的方案、針對刪除衝突的方案。除了這些方案以外,使用者還可以自定義衝突解決方法。每種方案都有自己的適用情況,那麼我們需要根據具體的業務來選擇合適的衝突解決方案。
結束語
本文詳細介紹了分散式系統Oracle中的資料複製技術,在具體應用中,還有許多比較複雜的問題需要解決,比如主控組中如果包含迴圈依賴的表或自相關的表時如何處理;如何利用模版機制來建立物化檢視站點;如何對資料複製環境進行管理與維護。這些問題需要在實際
應用中逐步探索,深入研究。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9417382/viewspace-963613/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 詳解 Oracle 分散式系統資料複製技術Oracle分散式
- 聊聊Oracle的分散式資料庫技術Oracle分散式資料庫
- 分散式系統技術:儲存之資料庫分散式資料庫
- Oracle 資料庫分散式技術的探討Oracle資料庫分散式
- 「分散式技術專題」資料分佈(資料複製、資料分片及優劣勢)分散式
- Bayou複製分散式儲存系統分散式
- 分散式資料庫的複製原理 - Quastor分散式資料庫AST
- Oracle流複製技術Oracle
- 【大資料】BigTable分散式資料儲存系統分散式資料庫 | 複習筆記大資料分散式資料庫筆記
- oracle複製軟體排名『複製技術系列』Oracle
- duplicate rman複製資料庫技術資料庫
- Oracle分散式系統中的全域性資料庫名Oracle分散式資料庫
- 分散式資料庫技術論壇分散式資料庫
- 資料庫複製技術全面瞭解資料庫
- 搞懂分散式技術1:分散式系統的一些基本概念分散式
- ORACLE流複製技術介紹Oracle
- 分散式系統原理--日誌技術Redo Log分散式
- 使用零複製技術提高儲存系統效能
- 崑崙分散式資料庫技術特點分散式資料庫
- 崑崙分散式資料庫技術優勢分散式資料庫
- [技術思考]分散式儲存系統的雪崩效應分散式
- 不同體系分散式儲存技術的技術特性分散式
- Oracle下的資料分片技術(轉)Oracle
- 資料庫系統防駭客入侵技術(轉)資料庫
- 在Oracle中實現資料庫的複製(轉)Oracle資料庫
- 分散式系統技術難題--異地多活分散式
- MIT 6.824 分散式系統課程第四課:主備複製MIT分散式
- 分散式資料庫技術論壇回顧分散式資料庫
- 華為CloudNative分散式資料庫技術解析Cloud分散式資料庫
- 阿里分散式資料庫未來技術之路阿里分散式資料庫
- 分散式資料庫重要技術概念小記分散式資料庫
- 「分散式技術專題」資料分佈(原理、資料分片)分散式
- 分散式資料庫系統(DDBS) 概述分散式資料庫
- 分散式系統(Distributed System)資料分散式
- 深入理解分散式系統:分割槽、複製、分散式事務以及系統一致性與共識分散式
- Rman duplicate資料庫複製(單系統)資料庫
- 分散式Redis主備複製分散式Redis
- MySQL的零複製技術MySql