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