三点之间的对等peertopeerQ 复制配置.docx

上传人:b****5 文档编号:7268154 上传时间:2023-01-22 格式:DOCX 页数:26 大小:615.87KB
下载 相关 举报
三点之间的对等peertopeerQ 复制配置.docx_第1页
第1页 / 共26页
三点之间的对等peertopeerQ 复制配置.docx_第2页
第2页 / 共26页
三点之间的对等peertopeerQ 复制配置.docx_第3页
第3页 / 共26页
三点之间的对等peertopeerQ 复制配置.docx_第4页
第4页 / 共26页
三点之间的对等peertopeerQ 复制配置.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

三点之间的对等peertopeerQ 复制配置.docx

《三点之间的对等peertopeerQ 复制配置.docx》由会员分享,可在线阅读,更多相关《三点之间的对等peertopeerQ 复制配置.docx(26页珍藏版)》请在冰豆网上搜索。

三点之间的对等peertopeerQ 复制配置.docx

三点之间的对等peertopeerQ复制配置

三点之间的对等(peer-to-peer)Q复制配置

  2009年12月24日  来源:

ibm  作者:

曾宏  收藏本文

-

对等(peer-to-peer)Q复制是DB2Q复制中一种。

利用这种对等Q复制可以将任何一台服务器上发生的数据变化通过MQ传输到其它相关联的服务器上,并复制到这些服务器上,从而实现多台数据库服务器之间的数据同步。

本文将通过一个例子说明如何搭建对等Q复制的基本配置环境,实现三个点之间的对等Q复制。

  三点之间的对等(peer-to-peer)Q复制配置

  对等(peer-to-peer)Q复制是DB2Q复制中一种。

利用这种对等Q复制可以将任何一台服务器上发生的数据变化通过MQ传输到其它相关联的服务器上,并复制到这些服务器上,从而实现多台数据库服务器之间的数据同步。

本文将通过一个例子说明如何搭建对等Q复制的基本配置环境,实现三个点之间的对等Q复制。

  简介

  对等Q复制主要适用于在两台或者多台数据库之间同步数据,它具有如下主要特性:

  可以对两台或者两台以上的数据库服务器的表进行复制。

  在对等配置中的任何一台数据库服务器上的变化可以复制到其它所有相关的数据库服务器中。

  所有的服务器是对等关系,没有“主”服务器的概念,如果发生冲突,最近时间戳更新的数据是有效数据。

  越来越多的用户开始采用DB2Q复制作为DB2的一种高可用,高扩展性的解决方案,搭建“双活”甚至“三活”的数据库系统。

图1.三台服务器之间的对等Q复制架构图

  查看原图(大图)

  本文将通过一个例子来说明如何在三个数据库之间搭建对等Q复制环境。

  本文档主要分为三个大部分:

  第一个部分是操作系统、数据库、MQ的基本配置;

  第二个部分是通过复制中心建立对等Q复制环境;

  第三部分是对等Q复制的配置校验和复制测试。

  操作系统、数据库、MQ的基本配置

  配置前准备工作

  在搭建Q复制环境之前,需要进行如下准备工作:

  1.安装DB2数据库软件。

  2.在操作系统中创建如表1所示的db2instance、mqm用户及组。

表1.用户及组设置

描述

PeerA

PeerB

PeerC

InstanceID

db2inst1

db2inst2

db2inst3

InstanceGroup

db2grp1,mqm

db2grp2,mqm

db2grp3,mqm

FenceID

db2fenc1

db2fenc2

db2fenc3

FenceGroup

db2fgrp1,mqm

db2fgrp2,mqm

db2fgrp3,mqm

MQID

mqm

mqm

mqm

MQGroup

mqm

mqm

mqm

REPID

qrepladm

qrepladm

qrepladm

  3.安装MQ软件。

  4.创建DB2实例和数据库。

  注:

本文使用的软件版本是DB2v9.1.0.6和WebSphereMQ6.0.2.3。

本文测试环境是在同一台Linux服务器上创建三个DB2实例和数据库来模拟三点之间的复制。

  数据库设置

  在上述准备工作完成以后,实例和数据库信息如表2所示。

表2.数据库信息

描述

PeerA

PeerB

PeerC

Instance

db2inst1

db2inst2

db2inst3

Port

50000

50001

50002

IP

127.0.0.1

127.0.0.1

127.0.0.1

IndirectDatabase

TP1

TP2

TP3

RemoteDatabase

TP2,TP3

TP1,TP3

TP1,TP2

  注:

在使用复制功能之前,所有数据库都应该将日志模式设置为archivelogging模式(归档日志模式)。

  创建完DB2实例和数据库以后,需要在本地进行编目远程数据库后才可以对其进行访问操作。

  例如:

在db2inst1用户下,输入清单1所示的命令来实现对远程TP2,TP3数据库的编目:

清单1.编目DB2数据库

 db2 catalog tcpip node db2inst2 remote 127.0.0.1 server 50001 

 db2 catalog database tp2 at node db2inst2 

 db2 catalog tcpip node db2inst3 remote 127.0.0.1 server 50002 

 db2 catalog database tp3 at node db2inst3 

 db2 terminate 

  用清单2所示的方法测试db2inst1实例是否能正常连接db2inst2、db2inst3实例上的TP2、TP3数据库。

清单2.连接远程数据库

 db2 connect to tp2 user db2inst2 using *** 

 db2 connect to tp3 user db2inst3 using *** 

 db2 terminate 

  同样的方法在db2inst2和db2inst3上编目相应的节点和数据库信息。

使每个实例都能访问其他两个实例上的数据库。

  为了方便复制操作,通常会在各个数据库上创建相同的模式和复制表。

  用清单3所示的方法在TP1、TP2、TP3上给qrepladm用户授权并创建QREPLADM.S_TAB表

清单3.授权及建表

 db2 grant DBADM on DATABASE to USER qrepladm 

 db2 "create table QREPLADM.S_TAB(id integer not null PRIMARY KEY,content varchar(20))" 

  MQ对象设置

  本文附件提供一些脚本用于创建相关的MQ对象,用户可以修改或者直接使用它们来创建必要的MQ对象。

QM1.mqs、QM2.mqs、QM3.mqs文件分别用于创建QM1、QM2、QM3相关的消息对象。

上述三个脚本中分别定义了QM1、QM2、QM3三个队列管理器中的队列、通道等对象。

  在PeerA上,定义名叫QM1的MQmanager。

如果QM1已经存在,按照清单4所示的命令删除旧的QM1:

清单4.停止并删除队列管理器

 endmqm QM1 

 dltmqm QM1 

  然后按照清单5所示的方法来创建QM1:

清单5.创建队列管理器及MQ对象

 crtmqm QM1 

 strmqm QM1 

 runmqsc QM1 QM1.log 

  用同样的办法在PeerB和PeerC上定义名叫QM2和QM3的MQmanager。

  创建好所有的MQ对象以后,按照清单6所示的方法查看QM1的队列和通道信息

清单6.查看MQ队列和通道信息

 mqm@ibmswg01:

~> echo "dis Queue(*)" |runmqsc QM1 

 |grep -i Queue|grep -Ev "SYSTEM|AMQ8409" 

 

 Starting MQSC for queue manager QM1. 

 1 :

 dis Queue(*) 

 QUEUE(IBMQREP.SPILL.MODELQ) TYPE(QMODEL) 

 QUEUE(P1_ADMINQ) TYPE(QLOCAL) 

 QUEUE(P1_RESTARTQ) TYPE(QLOCAL) 

 QUEUE(P1_TO_P2_Q) TYPE(QREMOTE) 

 QUEUE(P1_TO_P3_Q) TYPE(QREMOTE) 

 QUEUE(P2_ADMINQ) TYPE(QREMOTE) 

 QUEUE(P2_TO_P1_Q) TYPE(QLOCAL) 

 QUEUE(P3_ADMINQ) TYPE(QREMOTE) 

 QUEUE(P3_TO_P1_Q) TYPE(QLOCAL) 

 QUEUE(QM2) TYPE(QLOCAL) 

 QUEUE(QM3) TYPE(QLOCAL) 

 

 mqm@ibmswg01:

~> echo "dis CHANNEL(*)" |runmqsc QM1 

 |grep -i CHANNEL |grep -Ev "SYSTEM|AMQ8414" 

 

 1 :

 dis CHANNEL(*) 

 CHANNEL(P1_TO_P2) CHLTYPE(SDR) 

 CHANNEL(P1_TO_P3) CHLTYPE(SDR) 

 CHANNEL(P2_TO_P1) CHLTYPE(RCVR) 

 CHANNEL(P3_TO_P1) CHLTYPE(RCVR) 

  用户还可以通过图形界面来查看MQ对象相关信息。

如图2所示,在图形界面中使用WebsphereMQExplorer查看QM1的队列信息。

图2.使用MQExplorer查看QM1的队列信息

  查看原图(大图)

  在创建以及查看相关MQ对象后,需要测试MQ对象(如MQ通道和队列等)是否能正常工作。

例如测试从P1到P2发送消息通道配置是否正常的方法如下:

  1.执行清单7所示的命令将消息放入到QM1的远程队列P1_TO_P2_Q中。

清单7.放置消息到队列中

 mqm@ibmswg01:

~/qmgrs> /opt/mqm/samp/bin/amqsput P1_TO_P2_Q QM1 

 Sample AMQSPUT0 start 

 target queue is CAP_ADMINQ 

 test massage from P1 to P2 

 Sample AMQSPUT0 end 

  2.然后执行如清单8所示的命令从QM2中的本地队列P1_TO_P2_Q中获取信息。

清单8.从队列中获取消息

 mqm@ibmswg01:

~/qmgrs> /opt/mqm/samp/bin/amqsget P1_TO_P2_Q QM2 

 Sample AMQSGET0 start 

 message  

  Q复制的其他配置信息

  QCapture目录是指启动QCapture服务器的目录。

QApply目录是指启动QApply服务器的目录。

在各点上分别创建表3中的QCapture目录和QApply目录。

表3. Q复制其他配置信息

描述

PeerA

PeerB

PeerC

QCaptureschema

ASN

ASN

ASN

QApplyschema

ASN

ASN

ASN

QCapturePath

/home/db2inst1/cap_tp1

/home/db2inst2/cap_tp2

/home/db2inst3/cap_tp3

QApplyPath

/home/db2inst1/app_tp1

/home/db2inst2/app_tp2

/home/db2inst3/app_tp3

  Apply程序要连接到Capture服务器,先要在Apply目录中创建Apply程序所需要的密码文件。

如清单9所示,在TP1Apply目录上创建所需的密码文件:

清单9设置密码文件

 db2inst1@ibmswg01:

~/app_tp1> asnpwd init 

 2009-07-06-05.37.24.339783 ASN1981I "Asnpwd" :

 "" :

 "Initial". 

 The program completed successfully using password file "asnpwd.aut". 

  

 db2inst1@ibmswg01:

~/app_tp1> asnpwd add alias tp2 id db2inst2 password db2inst2 

 2009-07-06-05.38.08.066997 ASN1981I "Asnpwd" :

 "" :

 "Initial". 

 The program completed successfully using password file "asnpwd.aut". 

 

 db2inst1@ibmswg01:

~/app_tp1> asnpwd add alias tp3 id db2inst3 password db2inst3 

 2009-07-06-05.38.45.351191 ASN1981I "Asnpwd" :

 "" :

 "Initial". 

 The program completed successfully using password file "asnpwd.aut". 

 

 db2inst1@ibmswg01:

~/app_tp1> ls 

 asnpwd.aut 

  复制配置

  在上述准备工作做完以后,就可开始进行Q复制配置工作,复制配置可以通过命令行或者复制中心图形界面的方式来完成。

本文将使用复制中心来完成整个配置工作。

图3显示在图形界面环境下使用db2rc命令启动复制中心。

图3.复制中心向导

  查看原图(大图)

  创建QCapture服务器时,需要指定QCapture服务器的名字、模式、用户以及密码。

在对等Q复制中,每个数据库上同时运行Capture服务器和Apply服务器,可以同时选择创建Apply服务器。

如图4所示,指定Capture服务器为TP1,QCapture模式为ASN,并选择“CreatebothQCaptureandQApplycontroltablesonthisserver”用来同时创建TP1Apply服务器。

图4.指定QCapture服务器和模式

  查看原图(大图)

  运行在Capture服务器上的QCapture程序读取DB2的变化数据的恢复日志并把这些变化写到Capture服务器上的队列管理器的对应队列中去。

如图5所示,设置Capture服务器TP1上的QManager为QM1,Adminqueue选择为P1_ADMINQ,Restartqueue选择为P1_RESTARTQ。

图5.设置MQ对象信息

  查看原图(大图)

  用上述同样的步骤创建TP2、TP3Capture服务器和TP2、TP3Apply服务器。

  创建好所有的Capture和Apply服务器后,在复制中心向导中继续创建Q预订集。

要实现三点之间的Q复制需要选择“三点或更多点对等”的复制类型。

  如图6所示,在复制类型页面中选择"Peer-to-peer,threeormoreservers"。

图6.复制类型

  查看原图(大图)

  在选择完复制类型后,再把创建好的Capture和Apply服务器加入对等复制的配置中去。

通过图7所示的“增加服务器”对话框,可以增加TP1服务器,并且配置TP1到TP3之间的复制队列图。

图7.增加服务器

  查看原图(大图)

  点击图7中“FromTP1”和“ToTP1”按钮创建从TP1到TP3和从TP3到TP1的复制队列图。

如图8所示的TP1到TP3的复制队列图。

CaptureServer为TP1,ApplyServer为TP3,Capture服务器上的Sendqueue为QM1上的远程Q:

P1_TO_P3_Q,Apply服务器上的Receivequeue为QM3上的本地Q:

P1_TO_P3_Q。

Capture服务器上Adminqueue为QM1上的本地Q:

P1_ADMINQ,Apply服务器上的Adminqueue为QM3上的远程Q:

P1_ADMINQ。

复制队列图名称为TP1_ASN_TO_TP3_ASN。

图8.创建复制队列图

  查看原图(大图)

  同样的办法创建其它所需的复制队列图,结果如图9所示

图9.各点之间的复制队列图

  查看原图(大图)

  为了实现三点之间的对等复制,需要把TP1、TP2和TP3都加入到对等复制的配置中去。

如图10所示,TP1、TP2和TP3都加入成为对等服务器。

图10.点对点服务器

  查看原图(大图)

  配置完对等服务器后需要对复制表进行定义。

如图11所示,选择复制源表为上文创建的QREPLADM.S_TAB。

图11.选择复制源表

  复制表定义完成以后,三点对等Q复制配置中会生成N*(N-1)个Q预订集(N为点的个数,本文中为3)。

图12显示所生成6个Q预订集。

图12.检查并完成预订集设置

  查看原图(大图)

  检查及测试

  配置校验

  完成对等复制配置以后,接着对配置进行校验确认。

主要校验内容如下:

  1.QCAPTURE服务器CAPPARMS参数校验:

  如清单10所示,在PeerA上CAPTURE服务器TP1的CAPPARMS配置参数如下:

QMGR应为QM1,ADMINQ应为P1_ADMINQ,RESTARTQ应为P1_RESTARTQ。

清单10.校验CAPPARMS配置参数

 db2inst1@ibmswg01:

~> db2 "select char(qmgr,10) qmgr, char(adminq,10) 

 adminq, char(RESTARTQ,15) RESTARTQ , startmode from asn.ibmqrep_capparms" 

 

 QMGR ADMINQ RESTARTQ STARTMODE 

 ---------- ---------- --------------- --------- 

 QM1 P1_ADMINQ P1_RESTARTQ WARMSI 

   1 record(s) selected. 

  同样的办法可以校验TP2和TP3上QCAPTURE服务器的CAPPARMS参数配置。

  2.QCAPTURE服务器SUBS校验:

  如清单11所示,在PeerA上CAPTURE服务器TP1的SUBS配置如下:

TARGET_ALIAS应为另外两个远程节点(在TP1上的远程节点应该是TP2和TP3),在TP1上的SENDQ应为P1_TO_P2_Q和P1_TO_P3_Q。

清单11.校验SUBS配置

 db2inst1@ibmswg01:

~> db2 "select char(subgroup, 10) subgroup, 

 target_alias, char(sendq,15) sendq, count(source_name) tables_per_target 

 from asn.ibmqrep_subs group by subgroup, target_alias, sendq" 

 

 SUBGROUP TARGET_ALIAS SENDQ TABLES_PER_TARGET 

 ---------- ------------ --------------- ----------------- 

 000001 TP2 P1_TO_P2_Q 1 

 000001 TP3 P1_TO_P3_Q 1 

 

 2 record(s) selected. 

  同样的办法可以校验TP2和TP3上QCAPTURE服务器的SUBS配置。

  3.QCAPTURE服务器SENDQ校验:

  如清单12所示,在PeerA上CAPTURE服务器TP1的SENDQ配置参数如下:

复制队列图应为TP1_ASN_TO_TP3_ASN和TP1_ASN_TO_TP2_ASN,SENDQ应为QM1上的远程队列P1_TO_P3_Q和P1_TO_P2_Q,APPLY_ALIAS应为TP3和TP2,RECVQ应为QM3上的本地队列P1_TO_P3_Q和QM2上的本地队列P1_TO_P2_Q。

清单12.校验SENDQ配置参数

db2inst1@ibmswg01:

~> db2 "select char(pubqmapname, 20) pubqmapname, 

char(sendq,15) sendq, apply_alias, char(recvq, 15) recvq 

from asn.ibmqrep_sendqueues" 

PUBQMAPNAME SENDQ APPLY_ALIAS RECVQ 

-------------- ------- ------ -------- 

TP1_ASN_TO_TP3_ASN P1_TO_P3_Q TP3 P1_TO_P3_Q 

TP1_ASN_TO_TP2_ASN P1_TO_P2_Q TP2 P1_TO_P2_Q 

 

2 record(s) selected. 

 

  同样的办法可以校验TP2和TP3的QCAPTURE端SENDQ配置。

  4.QAPPLY服务器APPLYPARMS校验:

  如清单13所示,在PeerA的APPLY服务器TP1上的APPLYPARMS配置参数中的QMGR应为QM1。

清单13.校验APPLYPARMS配置

 db2inst1@ibmswg01:

~> db2 "select char(qmgr,20) qmgr 

 from asn.ibmqrep_applyparms" 

 

 QMGR 

 -------------------- 

 QM1 

 

 1 record(s) selected. 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1