前言
維持資料庫的高可用性是各個DBA維護工作的首要任務,而各家的資料庫 系統 也都有提供相關的技術提高資料庫高可用性,身為資料庫領導廠商的ORACLE當然也不例外.維繫資料庫的高可用性所需的花費從數萬元到數百萬元甚至上千萬元的金額均有可能,能提供的DownTime時間也不盡相同.本期簡介花費最少的複寫機制,來提供資料庫高可用性的運作環境.
何謂複寫
複寫資料庫與分散式資料庫觀念不盡相同,實作方式亦有所不同.複寫資料庫是指將相同的資料庫內容架構(Schema)在遠端資料庫 系統 上複製一份一模一樣的內容架構(如圖一),而分散式資料庫則是將資料庫內容架構切割後置於不同的資料庫 系統 上(如圖二).
圖一
圖二
複寫所提供的好處
1.提供 系統 高可用性.
2.分散 系統Loading,提供更好的 系統 效能.
3.提供後 台開 發人員與前台相同的 開發 環境.
複寫的種類:
1.Multimaster Sites replication(站台複寫):亦稱為點對點(Peer-to-Peer)複寫或多路徑(n-way)複寫,允許多的站台彼此之間互相複寫(如圖三).
圖三
2.Matrialized View(Snapshot) Sites Replication(具體化視圖(快照)複寫):
提供單一時間完整或部分的資料複寫功能,可以是唯讀或可更新Matrialized Views.
提供下面的功能:
I. 提供本地端的存取功能,提供較短的查詢回應時間.
II. 提供離線查詢的功能.
III. 增加資料的安全性,允許User只能複寫部分的資料.
圖四
3.Multimaster Sites replication and Matrialized View(Snapshot) Sites Hibrid Configuration(站台與具體化視圖(快照)混合複寫設定):
Multimaster Sites與Matrialized View(Snapshot)可結合成混合型複寫,亦可稱為"Mixed"設定,以滿足不同的Application需求.可以擁有不受限制的主站台數目與單一主站台可以擁有多個Matrialized View(Snapshot),如圖五.
圖五
複寫架構
複寫分為下面幾個部分:
Replication Objects:欲進行複寫的物件,如
TABLE,VIEW,FUNCTION,PL/SQL,StoreProcdure…等.
Replication Groups:Replication Objects的集合.
Replication Sites:Replication Sites可分為兩種-
I.Master Sites:適用於及時線上交易.
II.Matrialized View(Snapshot) Sites:適用於Full Table Copy.可分為兩
種:single Matrialized View Site 以
及Advence Matrialized View
Site.(後面會介紹)
DataBaseLinks:遠端資料庫鏈結,透過資料庫鏈結,可讓使用者直接存取
遠端資料庫.
* 使用資料庫鏈結必須在Oracle 起始檔(init.ora)中將GLOBLE_NAME=True
建立資料庫鏈結
1 Create public database link db.Tai.asia-sys.com
2 Connect to TaiUser identified by asia-sys
3 Using ‘tai’
第一行:database Link 共分為兩種:PublicLink及Share Link.Public Link是指
使用者再進行連線時彼此的連線是獨立的(即10個USER連線就會建
立10條Connection);而Share Link是多個User共同使用相同的資料
庫連線(即10個USER連線只會建立1條Connection),必須透過MTS
Server來達到這樣的動作.
第二行:Connect to 使用者帳號 identified by 使用者密碼(每個連線使用固定的
使用者帳號/密碼,每個連線有共同的權限).
Connect to Current_user(每個連線使用當時執行資料庫鏈結的使用者帳
號/密碼,每個連線都有各自的權限).
第三行:遠端資料庫的Service Name.
Matrialized View Sites的種類:
1.single Matrialized View Site
來源端資料表與目的端資料表示一對一複製的關係(如圖六所示),並可以結合使用Matrialized View Log來紀錄交易情形.
圖六
2.Advence Matrialized View Site
來源端資料表與目的端資料表示多個Table對一個Table複製的關係,透過Join或Union (如圖七所示).
圖七
站台複寫(Master Replicaton)的種類及運作方式
1. 非同步資料複寫(Asynchronous Data Replication):
資料是排程進行同步.當前端Application對來源端資料表進行變更時, 系統 會將資料庫異動的紀錄儲存起來,存放於來源端資料庫的延遲交易佇列(Deferred Transcation Queue),再之後進行資料記錄同步的動作,因此非同步資料複寫亦稱為儲存與轉送資料複寫機制(Store and Forward Data Replication).
STEP1:使用者對資料表進行存取,因而發生資料表異動.
STEP2:更動資料表而引發Trigger.
STEP3:Trigger 將資料表異動的資料存放置延遲交易佇列.
STEP4:背景服務程式(BGP)啟動對延遲交易佇列進行存取.
STEP5:將佇列中的紀錄傳送至目的地端.
STEP6:變更目的地端的資料庫資料.
2. 同步資料複寫(Synchronous Data Replication):
資料是即時進行同步.當前端Application對來源端資料表進行變更時, 系統 會觸發觸發程序,呼叫遠端程序呼叫(RPC),啟動資料庫內儲程序進行資料表同步的動作,因此同步資料複寫亦稱為即時資料複寫機制(Real-time Data Replication).
STEP1:使用者對資料表進行存取,因而發生資料表異動.
STEP2:更動資料表而引發Trigger.
STEP3:Trigger 呼叫PRC程序執行內儲程序.
STEP4:透過內儲程序變更目的地端資料庫.
複寫衝突解決的方式
在設計複寫機制時會遇到最大的問題就是交易資料衝突.Oracle提供下面解決資料衝突的解決方式:
1. 最先與最後的資料時間戳記.
2. 資料複寫與捨棄.
3. 選擇最大值與最小值.
4. 累計值與平均值.
5. 時間戳記.
6. 優先權群組.
7. 站台優先權.
站台資料複寫模型的規劃
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/submarinechen/1380246446-2021559828.jpg)