三點(diǎn)之間的對(duì)等DB2 Q復(fù)制配置如何操作?
以下的文章主要是介紹三點(diǎn)之間的對(duì)等(peer-to-peer)Q 復(fù)制配置,我們大家都知道對(duì)等 (peer-to-peer) Q 復(fù)制是 DB2 Q 復(fù)制中一種。利用這種對(duì)等 Q 復(fù)制可以將任何一臺(tái)服務(wù)器上發(fā)生的數(shù)據(jù)變化通過 MQ 傳輸?shù)狡渌嚓P(guān)聯(lián)的服務(wù)器上,并復(fù)制到這些服務(wù)器上。
從而實(shí)現(xiàn)多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)同步。 本文將通過一個(gè)例子說明如何搭建對(duì)等 Q 復(fù)制的基本配置環(huán)境,實(shí)現(xiàn)三個(gè)點(diǎn)之間的對(duì)等 Q 復(fù)制。
簡(jiǎn)介
對(duì)等 Q 復(fù)制主要適用于在兩臺(tái)或者多臺(tái)數(shù)據(jù)庫(kù)之間同步數(shù)據(jù),它具有如下主要特性:
可以對(duì)兩臺(tái)或者兩臺(tái)以上的數(shù)據(jù)庫(kù)服務(wù)器的表進(jìn)行復(fù)制。
在對(duì)等配置中的任何一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器上的變化可以復(fù)制到其它所有相關(guān)的數(shù)據(jù)庫(kù)服務(wù)器中。
所有的服務(wù)器是對(duì)等關(guān)系,沒有“主”服務(wù)器的概念,如果發(fā)生沖突,最近時(shí)間戳更新的數(shù)據(jù)是有效數(shù)據(jù)。
越來越多的用戶開始采用 DB2 Q 復(fù)制作為 DB2 的一種高可用,高擴(kuò)展性的解決方案,搭建“雙活” 甚至“三活”的數(shù)據(jù)庫(kù)系統(tǒng)。
圖 1. 三臺(tái)服務(wù)器之間的對(duì)等 Q 復(fù)制架構(gòu)圖
本文將通過一個(gè)例子來說明如何在三個(gè)數(shù)據(jù)庫(kù)之間搭建對(duì)等 DB2 Q 復(fù)制環(huán)境。
本文檔主要分為三個(gè)大部分:
***個(gè)部分是操作系統(tǒng)、數(shù)據(jù)庫(kù)、 MQ 的基本配置 ;
第二個(gè)部分是通過復(fù)制中心建立對(duì)等 Q 復(fù)制環(huán)境;
第三部分是對(duì)等 Q 復(fù)制的配置校驗(yàn)和復(fù)制測(cè)試。
操作系統(tǒng)、數(shù)據(jù)庫(kù)、 MQ 的基本配置
配置前準(zhǔn)備工作
在搭建 Q 復(fù)制環(huán)境之前,需要進(jìn)行如下準(zhǔn)備工作:
1. 安裝 DB2 數(shù)據(jù)庫(kù)軟件。
2. 在操作系統(tǒng)中創(chuàng)建如表 1 所示的 db2 instance 、mqm 用戶及組。
表 1. 用戶及組設(shè)置
描述 Peer A Peer B Peer C
- Instance ID db2inst1 db2inst2 db2inst3
- Instance Group db2grp1,mqm db2grp2,mqm db2grp3,mqm
- Fence ID db2fenc1 db2fenc2 db2fenc3
- Fence Group db2fgrp1,mqm db2fgrp2,mqm db2fgrp3,mqm
- MQ ID mqm mqm mqm
- MQ Group mqm mqm mqm
- REP ID qrepladm qrepladm qrepladm
3. 安裝 MQ 軟件。
4. 創(chuàng)建 DB2 實(shí)例和數(shù)據(jù)庫(kù)。
注:本文使用的軟件版本是DB2 v9.1.0.6和WebSphere MQ 6.0.2.3。本文測(cè)試環(huán)境是在同一臺(tái)Linux服務(wù)器上創(chuàng)建三個(gè)DB2實(shí)例和數(shù)據(jù)庫(kù)來模擬三點(diǎn)之間的復(fù)制。
數(shù)據(jù)庫(kù)設(shè)置
在上述準(zhǔn)備工作完成以后,實(shí)例和數(shù)據(jù)庫(kù)信息如表 2 所示。
表 2. 數(shù)據(jù)庫(kù)信息
描述 Peer A Peer B Peer C
- Instance db2inst1 db2inst2 db2inst3
- Port 50000 50001 50002
- IP 127.0.0.1 127.0.0.1 127.0.0.1
- Indirect Database TP1 TP2 TP3
- Remote Database TP2, TP3 TP1, TP3 TP1, TP2
注 : 在使用復(fù)制功能之前,所有數(shù)據(jù)庫(kù)都應(yīng)該將日志模式設(shè)置為archive logging模式(歸檔日志模式)。
創(chuàng)建完 DB2 實(shí)例和數(shù)據(jù)庫(kù)以后,需要在本地進(jìn)行編目遠(yuǎn)程數(shù)據(jù)庫(kù)后才可以對(duì)其進(jìn)行訪問操作。
例如:在 db2inst1 用戶下,輸入清單 1 所示的命令來實(shí)現(xiàn)對(duì)遠(yuǎn)程 TP2,TP3 數(shù)據(jù)庫(kù)的編目:
清單 1. 編目 DB2 數(shù)據(jù)庫(kù)
- db2 catalog tcpip node db2inst2 remote 127.0.0.1 server 50001 db2 catalog database tp2
atnode db2inst2 db2 catalog tcpip node db2inst3 remote 127.0.0.1 server 50002 db2 catalog database tp3 at node db2inst3 db2 terminate
用清單 2 所示的方法測(cè)試 db2inst1 實(shí)例是否能正常連接 db2inst2 、db2inst3 實(shí)例上的 TP2 、TP3 數(shù)據(jù)庫(kù)。
清單 2. 連接遠(yuǎn)程數(shù)據(jù)庫(kù)
- db2 connect to tp2 user db2inst2 using *** db2 connect to tp3 user db2inst3 using *** db2 terminate
同樣的方法在 db2inst2 和 db2inst3 上編目相應(yīng)的節(jié)點(diǎn)和數(shù)據(jù)庫(kù)信息。使每個(gè)實(shí)例都能訪問其他兩個(gè)實(shí)例上的數(shù)據(jù)庫(kù)。
為了方便復(fù)制操作,通常會(huì)在各個(gè)數(shù)據(jù)庫(kù)上創(chuàng)建相同的模式和復(fù)制表。
用清單 3 所示的方法在 TP1、TP2、TP3 上給 qrepladm 用戶授權(quán)并創(chuàng)建 DB2 QREPLADM.S_TAB 表
清單 3. 授權(quán)及建表
- db2 grant DBADM on DATABASE to USER qrepladm db2 "create table QREPLADM.S_TAB(id integer not null PRIMARY KEY,content varchar(20))"
MQ 對(duì)象設(shè)置
本文附件提供一些腳本用于創(chuàng)建相關(guān)的 MQ 對(duì)象,用戶可以修改或者直接使用它們來創(chuàng)建必要的 MQ 對(duì)象。QM1.mqs、QM2.mqs、QM3.mqs 文件分別用于創(chuàng)建 QM1、QM2、QM3 相關(guān)的消息對(duì)象。上述三個(gè)腳本中分別定義了 QM1、QM2、QM3 三個(gè)隊(duì)列管理器中的隊(duì)列、通道等對(duì)象。
在 Peer A 上,定義名叫 DB2 QM1 的 MQ manager。如果 QM1 已經(jīng)存在,按照清單 4 所示的命令刪除舊的 QM1:
清單 4. 停止并刪除隊(duì)列管理器
- endmqm QM1 dltmqm QM1
然后按照清單 5 所示的方法來創(chuàng)建 QM1
【編輯推薦】