1、三点之间的对等peertopeerQ 复制配置三点之间的对等(peer-to-peer)Q 复制配置 2009年12月24日 来源:ibm 作者:曾宏 收藏本文 -对等 (peer-to-peer) Q 复制是 DB2 Q 复制中一种。利用这种对等 Q 复制可以将任何一台服务器上发生的数据变化通过 MQ 传输到其它相关联的服务器上,并复制到这些服务器上,从而实现多台数据库服务器之间的数据同步。 本文将通过一个例子说明如何搭建对等 Q 复制的基本配置环境,实现三个点之间的对等 Q 复制。 三点之间的对等(peer-to-peer)Q 复制配置对等 (peer-to-peer) Q 复制是 DB2
2、 Q 复制中一种。利用这种对等 Q 复制可以将任何一台服务器上发生的数据变化通过 MQ 传输到其它相关联的服务器上,并复制到这些服务器上,从而实现多台数据库服务器之间的数据同步。 本文将通过一个例子说明如何搭建对等 Q 复制的基本配置环境,实现三个点之间的对等 Q 复制。简介对等 Q 复制主要适用于在两台或者多台数据库之间同步数据,它具有如下主要特性:可以对两台或者两台以上的数据库服务器的表进行复制。在对等配置中的任何一台数据库服务器上的变化可以复制到其它所有相关的数据库服务器中。所有的服务器是对等关系,没有“主”服务器的概念,如果发生冲突,最近时间戳更新的数据是有效数据。越来越多的用户开始采
3、用 DB2 Q 复制作为 DB2 的一种高可用,高扩展性的解决方案,搭建“双活” 甚至“三活”的数据库系统。图 1. 三台服务器之间的对等 Q 复制架构图查看原图(大图)本文将通过一个例子来说明如何在三个数据库之间搭建对等 Q 复制环境。本文档主要分为三个大部分:第一个部分是操作系统、数据库、 MQ 的基本配置 ;第二个部分是通过复制中心建立对等 Q 复制环境;第三部分是对等 Q 复制的配置校验和复制测试。操作系统、数据库、 MQ 的基本配置配置前准备工作在搭建 Q 复制环境之前,需要进行如下准备工作:1. 安装 DB2 数据库软件。2. 在操作系统中创建如表 1 所示的 db2 instan
4、ce 、mqm 用户及组。表 1. 用户及组设置描述 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.
5、 安装 MQ 软件。4. 创建 DB2 实例和数据库。注:本文使用的软件版本是DB2 v9.1.0.6和WebSphere MQ 6.0.2.3。本文测试环境是在同一台Linux服务器上创建三个DB2实例和数据库来模拟三点之间的复制。数据库设置在上述准备工作完成以后,实例和数据库信息如表 2 所示。表 2. 数据库信息描述 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 TP
6、2 TP3 Remote Database TP2, TP3 TP1, TP3 TP1, TP2 注 : 在使用复制功能之前,所有数据库都应该将日志模式设置为archive logging模式(归档日志模式)。创建完 DB2 实例和数据库以后,需要在本地进行编目远程数据库后才可以对其进行访问操作。例如:在 db2inst1 用户下,输入清单 1 所示的命令来实现对远程 TP2,TP3 数据库的编目:清单 1. 编目 DB2 数据库db2catalogtcpipnodedb2inst2remote127.0.0.1server50001db2catalogdatabasetp2atnodedb2
7、inst2db2catalogtcpipnodedb2inst3remote127.0.0.1server50002db2catalogdatabasetp3atnodedb2inst3db2terminate用清单 2 所示的方法测试 db2inst1 实例是否能正常连接 db2inst2 、db2inst3 实例上的 TP2 、TP3 数据库。清单 2. 连接远程数据库db2connecttotp2userdb2inst2using*db2connecttotp3userdb2inst3using*db2terminate同样的方法在 db2inst2 和 db2inst3 上编目相应的节
8、点和数据库信息。使每个实例都能访问其他两个实例上的数据库。为了方便复制操作,通常会在各个数据库上创建相同的模式和复制表。用清单 3 所示的方法在 TP1、TP2、TP3 上给 qrepladm 用户授权并创建 QREPLADM.S_TAB 表清单 3. 授权及建表db2grantDBADMonDATABASEtoUSERqrepladmdb2createtableQREPLADM.S_TAB(idintegernotnullPRIMARYKEY,contentvarchar(20)MQ 对象设置本文附件提供一些脚本用于创建相关的 MQ 对象,用户可以修改或者直接使用它们来创建必要的 MQ 对象
9、。QM1.mqs、QM2.mqs、QM3.mqs 文件分别用于创建 QM1、QM2、QM3 相关的消息对象。上述三个脚本中分别定义了 QM1、QM2、QM3 三个队列管理器中的队列、通道等对象。在 Peer A 上,定义名叫 QM1 的 MQ manager。如果 QM1 已经存在,按照清单 4 所示的命令删除旧的 QM1:清单 4. 停止并删除队列管理器endmqmQM1dltmqmQM1然后按照清单 5 所示的方法来创建 QM1:清单 5. 创建队列管理器及 MQ 对象crtmqmQM1strmqmQM1runmqscQM1QM1.log用同样的办法在 Peer B 和 Peer C 上定
10、义名叫 QM2 和 QM3 的 MQ manager 。创建好所有的 MQ 对象以后,按照清单 6 所示的方法查看 QM1 的队列和通道信息清单 6. 查看 MQ 队列和通道信息mqmibmswg01:echodisQueue(*)|runmqscQM1|grep-iQueue|grep-EvSYSTEM|AMQ8409StartingMQSCforqueuemanagerQM1.1:disQueue(*)QUEUE(IBMQREP.SPILL.MODELQ)TYPE(QMODEL)QUEUE(P1_ADMINQ)TYPE(QLOCAL)QUEUE(P1_RESTARTQ)TYPE(QLOCA
11、L)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)mqmibmswg01:echodisCHANNEL(*)|runmqscQM1|grep-iCHANNEL|grep-EvSYSTEM|AMQ84141:
12、disCHANNEL(*)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 所示,在图形界面中使用 Websphere MQ Explorer 查看 QM1 的队列信息。图 2. 使用 MQ Explorer 查看 QM1 的队列信息查看原图(大图)在创建以及查看相关 MQ 对象后,需要测试 MQ 对象(如 MQ 通道和队列等)是否能正常工作。例如测试
13、从 P1 到 P2 发送消息通道配置是否正常的方法如下:1. 执行清单 7 所示的命令将消息放入到 QM1 的远程队列 P1_TO_P2_Q 中。清单 7. 放置消息到队列中mqmibmswg01:/qmgrs/opt/mqm/samp/bin/amqsputP1_TO_P2_QQM1SampleAMQSPUT0starttargetqueueisCAP_ADMINQtestmassagefromP1toP2SampleAMQSPUT0end2. 然后执行如清单 8 所示的命令从 QM2 中的本地队列 P1_TO_P2_Q 中获取信息。清单 8. 从队列中获取消息mqmibmswg01:/qm
14、grs/opt/mqm/samp/bin/amqsgetP1_TO_P2_QQM2SampleAMQSGET0startmessageQ 复制的其他配置信息Q Capture 目录是指启动 Q Capture 服务器的目录。Q Apply 目录是指启动 Q Apply 服务器的目录。在各点上分别创建表 3 中的 Q Capture 目录和 Q Apply 目录。表 3. Q 复制其他配置信息描述 Peer A Peer B Peer C Q Capture schema ASN ASN ASN Q Apply schema ASN ASN ASN Q Capture Path /home/db
15、2inst1/cap_tp1 /home/db2inst2/cap_tp2 /home/db2inst3/cap_tp3 Q Apply Path /home/db2inst1/app_tp1 /home/db2inst2/app_tp2 /home/db2inst3/app_tp3 Apply 程序要连接到 Capture 服务器,先要在 Apply 目录中创建 Apply 程序所需要的密码文件。如清单 9 所示,在 TP1 Apply 目录上创建所需的密码文件:清单 9 设置密码文件db2inst1ibmswg01:/app_tp1asnpwdinit2009-07-06-05.37.24
16、.339783ASN1981IAsnpwd:Initial.Theprogramcompletedsuccessfullyusingpasswordfileasnpwd.aut.db2inst1ibmswg01:/app_tp1asnpwdaddaliastp2iddb2inst2passworddb2inst22009-07-06-05.38.08.066997ASN1981IAsnpwd:Initial.Theprogramcompletedsuccessfullyusingpasswordfileasnpwd.aut.db2inst1ibmswg01:/app_tp1asnpwdadda
17、liastp3iddb2inst3passworddb2inst32009-07-06-05.38.45.351191ASN1981IAsnpwd:Initial.Theprogramcompletedsuccessfullyusingpasswordfileasnpwd.aut.db2inst1ibmswg01:/app_tp1lsasnpwd.aut复制配置在上述准备工作做完以后,就可开始进行 Q 复制配置工作,复制配置可以通过命令行或者复制中心图形界面的方式来完成。本文将使用复制中心来完成整个配置工作。图 3 显示在图形界面环境下使用 db2rc 命令启动复制中心。图 3. 复制中心向导
18、查看原图(大图)创建 Q Capture 服务器时,需要指定 Q Capture 服务器的名字、模式、用户以及密码。在对等 Q 复制中,每个数据库上同时运行 Capture 服务器和 Apply 服务器,可以同时选择创建 Apply 服务器。 如图 4 所示,指定 Capture 服务器 为 TP1, Q Capture 模式为 ASN,并选择“Create both Q Capture and Q Apply control tables on this server”用来同时创建 TP1 Apply 服务器。图 4. 指定 Q Capture 服务器和模式查看原图(大图)运行在 Captu
19、re 服务器上的 Q Capture 程序读取 DB2 的变化数据的恢复日志并把这些变化写到 Capture 服务器上的队列管理器的对应队列中去。 如图 5 所示,设置 Capture 服务器 TP1 上的 Q Manager 为 QM1,Admin queue 选择为 P1_ADMINQ,Restart queue 选择为 P1_RESTARTQ 。图 5. 设置 MQ 对象信息查看原图(大图)用上述同样的步骤创建 TP2 、TP3 Capture 服务器 和 TP2 、TP3 Apply 服务器。创建好所有的 Capture 和 Apply 服务器后,在复制中心向导中继续创建 Q 预订集。
20、要实现三点之间的 Q 复制需要选择“三点或更多点对等”的复制类型。如图 6 所示,在复制类型页面中选择Peer-to-peer,three or more servers。图 6. 复制类型查看原图(大图)在选择完复制类型后,再把创建好的 Capture 和 Apply 服务器加入对等复制的配置中去。通过图 7 所示的 “增加服务器” 对话框,可以增加 TP1 服务器,并且配置 TP1 到 TP3 之间的复制队列图。图 7. 增加服务器查看原图(大图)点击图 7 中 “From TP1”和“To TP1” 按钮创建从 TP1 到 TP3 和从 TP3 到 TP1 的复制队列图。如图 8 所示的
21、 TP1 到 TP3 的复制队列图。Capture Server 为 TP1, Apply Server 为 TP3, Capture 服务器上的 Send queue 为 QM1 上的远程 Q: P1_TO_P3_Q ,Apply 服务器上的 Receive queue 为 QM3 上的本地 Q : P1_TO_P3_Q。Capture 服务器上 Admin queue 为 QM1 上的本地 Q: P1_ADMINQ , Apply 服务器上的 Admin queue 为 QM3 上的远程 Q: P1_ADMINQ。复制队列图名称为 TP1_ASN_TO_TP3_ASN。图 8. 创建复制队
22、列图查看原图(大图)同样的办法创建其它所需的复制队列图,结果如图 9 所示图 9. 各点之间的复制队列图查看原图(大图)为了实现三点之间的对等复制,需要把 TP1、TP2 和 TP3 都加入到对等复制的配置中去。如图 10 所示 ,TP1、TP2 和 TP3 都加入成为对等服务器。图 10. 点对点服务器查看原图(大图)配置完对等服务器后需要对复制表进行定义。如图 11 所示,选择复制源表为上文创建的 QREPLADM.S_TAB 。图 11. 选择复制源表复制表定义完成以后,三点对等 Q 复制配置中会生成 N*(N-1) 个 Q 预订集(N 为点的个数,本文中为 3)。图 12 显示所生成
23、6 个 Q 预订集。图 12. 检查并完成预订集设置查看原图(大图)检查及测试配置校验完成对等复制配置以后,接着对配置进行校验确认。主要校验内容如下:1. Q CAPTURE 服务器 CAPPARMS 参数校验:如清单 10 所示, 在 Peer A 上 CAPTURE 服务器 TP1 的 CAPPARMS 配置参数如下:QMGR 应为 QM1 ,ADMINQ 应为 P1_ADMINQ,RESTARTQ 应为 P1_RESTARTQ 。清单 10. 校验 CAPPARMS 配置参数db2inst1ibmswg01:db2selectchar(qmgr,10)qmgr,char(adminq,1
24、0)adminq,char(RESTARTQ,15)RESTARTQ,startmodefromasn.ibmqrep_capparmsQMGRADMINQRESTARTQSTARTMODE-QM1P1_ADMINQP1_RESTARTQWARMSI1record(s)selected.同样的办法可以校验 TP2 和 TP3 上 Q CAPTURE 服务器的 CAPPARMS 参数配置。2. Q CAPTURE 服务器 SUBS 校验:如清单 11 所示,在 Peer A 上 CAPTURE 服务器 TP1 的 SUBS 配置如下:TARGET_ALIAS 应为另外两个远程节点(在 TP1 上
25、的远程节点应该是 TP2 和 TP3), 在 TP1 上的 SENDQ 应为 P1_TO_P2_Q 和 P1_TO_P3_Q 。清单 11. 校验 SUBS 配置db2inst1ibmswg01:db2selectchar(subgroup,10)subgroup,target_alias,char(sendq,15)sendq,count(source_name)tables_per_targetfromasn.ibmqrep_subsgroupbysubgroup,target_alias,sendqSUBGROUPTARGET_ALIASSENDQTABLES_PER_TARGET-00
26、0001TP2P1_TO_P2_Q1000001TP3P1_TO_P3_Q12record(s)selected.同样的办法可以校验 TP2 和 TP3 上 Q CAPTURE 服务器的 SUBS 配置。3. Q CAPTURE 服务器 SENDQ 校验:如清单 12 所示,在 Peer A 上 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 ,R
27、ECVQ 应为 QM3 上的本地队列 P1_TO_P3_Q 和 QM2 上的本地队列 P1_TO_P2_Q。清单 12. 校验 SENDQ 配置参数db2inst1ibmswg01:db2selectchar(pubqmapname,20)pubqmapname,char(sendq,15)sendq,apply_alias,char(recvq,15)recvqfromasn.ibmqrep_sendqueuesPUBQMAPNAMESENDQAPPLY_ALIASRECVQ-TP1_ASN_TO_TP3_ASNP1_TO_P3_QTP3P1_TO_P3_QTP1_ASN_TO_TP2_AS
28、NP1_TO_P2_QTP2P1_TO_P2_Q2record(s)selected.同样的办法可以校验 TP2 和 TP3 的 Q CAPTURE 端 SENDQ 配置。4. Q APPLY 服务器 APPLYPARMS 校验:如清单 13 所示,在 Peer A 的 APPLY 服务器 TP1 上的 APPLYPARMS 配置参数中的 QMGR 应为 QM1。清单 13. 校验 APPLYPARMS 配置db2inst1ibmswg01:db2selectchar(qmgr,20)qmgrfromasn.ibmqrep_applyparmsQMGR-QM11record(s)selected.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1