DB2數(shù)據(jù)庫的數(shù)據(jù)復制詳解
本文將為您詳細分析DB2數(shù)據(jù)庫中的數(shù)據(jù)復制技術,供您參考。需要注意的是,本文將主要討論DB2之間的數(shù)據(jù)復制,而不考慮包含非IBM數(shù)據(jù)庫的數(shù)據(jù)復制。
-什么是數(shù)據(jù)復制
數(shù)據(jù)復制就是通過將源數(shù)據(jù)庫中指定的數(shù)據(jù)復制到目標數(shù)據(jù)庫中,以保持源數(shù)據(jù)庫與目標數(shù)據(jù)庫中指定數(shù)據(jù)的同步(一致)。
基礎概念
CD表:change data tables更改數(shù)據(jù)表,用于臨時存放更改數(shù)據(jù)的表。一般包含有需要捕捉更改的列及一些控制列。
例如:用戶指定的,要捕捉更改的列
CREATE TABLE DEPARTMENT ( DEPTNO …, <-- DEPTNAME …, <-- MGRNO …, ADMRDEPT …, LOCATION …)
源表
CREATE TABLE CD20030805296530( IBMSNAP_UOWID …, IBMSNAP_INTENTSEQ…, IBMSNAP_OPERATION …, DEPTNO…, <-- DEPTNAME …) <--
CD表
DB2日志類型:
循環(huán)日志 歸檔日志:
DB2數(shù)據(jù)復制的組件
DB2 DataPropagator由三部分組成:管理界面、更改捕捉機制、應用程序
注意:此處應用程序(Apply program)與我們通常所說的應用程序是不同的概念,本文中如無特殊說明,“應用程序”都是指DB2數(shù)據(jù)復制的組件。#p#
管理界面
我們主要用它來創(chuàng)建用于存儲復制標準的控制表??刂票碛卸喾N類型,用來存放要復制哪些表哪些列等信息,我們在后面再仔細探討。我們可以使用的管理界面有兩種:
1.DB2 Control Center(DB2 控制中心)
只能針對DB2服務器之間的數(shù)據(jù)復制
2.DataJoiner Replication Administration (DJRA)
可包含非IBM數(shù)據(jù)庫的數(shù)據(jù)復制(本文不詳細討論)
具體控制表類型可通過查看文件“SQLLIB\samples\repl\dpcntl.udb”來獲得,本文涉及到的控制表主要有:ASN.IBMSNAP_REGISTER、ASN.IBMSNAP_UOW等。
更改捕捉機制
在建立復制環(huán)境之后,利用該機制去捕捉源數(shù)據(jù)庫發(fā)生的更改,且將更改臨時存放于CD表中。 DB2數(shù)據(jù)復制解決方案提供兩種捕捉數(shù)據(jù)的機制:
1.捕捉DB2源表的捕捉程序
當源是DB2表時,捕捉程序會捕捉在源上所發(fā)生的更改。捕捉程序使用數(shù)據(jù)庫日志去捕捉發(fā)生于源數(shù)據(jù)庫上的更改,并將更改臨時存儲在表里。捕捉程序運行在源服務器上。
2.捕捉非IBM數(shù)據(jù)庫源表的捕捉觸發(fā)器(本文不詳細討論)#p#
應用程序
當捕捉程序?qū)⒃幢戆l(fā)生的更改臨時存放于CD表中后,應用程序再從這些表中讀出源數(shù)據(jù)庫的更改,將它應用于目標數(shù)據(jù)庫,或者直接將數(shù)據(jù)從源數(shù)據(jù)庫拷貝到目標數(shù)據(jù)庫。
1.當剛搭建起復制環(huán)境時,有一個初始化過程,該過程應用程序?qū)⒅苯訌脑幢砘蛞晥D讀數(shù)據(jù)來初始目標表。而后如果你想復制更改,應用程序從CD表中讀取臨時存儲的變化數(shù)據(jù),將它應用于目標表。
2.應用程序通常運行在目標服務器上,但它也可以運行在可以連接到源、控制和目標服務器的網(wǎng)絡上的任一服務器上。多個應用程序?qū)嵗梢赃\行在相同或不同的服務器上。
3.每一個應用程序與一個包含著控制表的控制服務器相關聯(lián),控制表中包含著預訂集的定義。控制表可以被多個應用程序?qū)嵗褂?。比如:你有一個源服務器和兩個目標服務器,那么,你就可以將應用程序分別運行于每一臺目標服務器上。這兩個應用實例可以共享控制表,控制表中有特定的信息與每一應用實例相關聯(lián)。
各復制組件之間如何通訊
各復制組件之間是相互獨立的,所以他們依賴于控制表中的信息進行通信。捕捉、應用程序通過更新控制表以指示復制的進程及協(xié)調(diào)變化進程。
對于DB2之間的復制,捕捉程序通過讀取源服務器上的日志來捕捉源表中數(shù)據(jù)的更改。然后捕捉程序?qū)⒏牡臄?shù)據(jù)放入稱之為更改數(shù)據(jù)(CD)表的表中。
每次應用程序拷貝數(shù)據(jù)到目標數(shù)據(jù)庫,目標數(shù)據(jù)庫的內(nèi)容將反映出在源數(shù)據(jù)庫上發(fā)生的更改。應用程序是通過應用自應用程序所知道的對于目標的上一次更新以來累加的事務來實現(xiàn)的,即只應用還沒應用的更改。