DB2远程Q复制实践
4.建立复制预订集
从Sample节点,选择"create Replication Subscriptions"。
选择"unidirectional replication"。
选择ITARGET作为目标服务器,并且使用前面所建立的Queue map。
从Capture Server中选择恰当的源表。
对于目标表等其他方面的设置,使用缺省值。
完成预定集的建立。
5.建立Apply所需要的password文件
在目标系统中将当前路径转到apply_path上。
输入命令"asnpwd init"。
输入命令"asnpwd add alias SAMPLE id administrator password ***"。这样就会生成一个相应的password文件。
6.启动Q Capture程序
设定相关参数,启动Q Capture。
7.启动Q Apply程序
设定相关参数,启动Q Apply。
步骤注解
1. 当在Replication Center中配置password和connectivity的时候,它会要求指定Directory ,这应该是DB2安装目录下的bin目录所在的路径,如"c:\sqllib\bin"。
2. 当在Replication Center中配置password和connectivity的时候,远程主机名字应该正确指定。实际上,在这里IP地址也可以和远程主机名字同样被使用。
3. 在设置复制环境的时候,记得将Capture Server所在的数据库设置为archive logging模式。
4. Password文件在如下情况下是必须的:
a. 当Q Apply需要使用export来导出数据时
b. 当Q Capture需要连接到多个数据库分区时
c. 当需要建立相应的Alert Monitor时
d. 当需要运行Q Analyzer(该程序需要连接到被分析的Q Capture和Q Apply)时
e. 当需要用到TDIFF工具时
5. 关于Dead Letter Queue,可以参考《Fast Track Implementation Scenarios》中的Appendix C. Dead letter queues in a Q replication environment
出错分析及解决
问题1描述:
Capture可以正常启动,但是Apply不能正常启动,处于presume stopped的状态。Receive queue正常运作,subscription处于"inactive"的状态,MQ channels正常运作。
分析:
这个问题很有可能是网络原因造成的,例如IP设置错误等等。
解决:
保证网络正常连接,设定正确的IP地址等等。
问题2描述:
在apply日志中,有如下信息:
2005-10-14 12:12:49.578000 ERROR ASN7551E "Q Apply" : "ASN" : "BR00000" : The Q Apply program detected a gap in message numbers on receive queue "WEST_TO_EAST_Q", replication queue map "SAMPLE_ASN_TO_ITARGET_ASN". It read message ID "51524550434D6AB0000000000000000000000000000003F0", but expected to find message ID "51524550434D6AB000000000000000000000000000000001". The Q Apply program cannot process any messages until if finds the expected message.
分析:
Q apply程序检查从Q Capture程序发送过来的消息,这些消息都具有一个依次递增的号码,递增增幅为1。当Q apply发现消息之间的号码不是依次递增时,Apply程序将停止处理并且将相关信息写入apply log中。可以通过命令"db2 ? ASN7551E"来获取更多信息。下面即是截取的一部分:
用户响应(ASN7551E):
在用来在 Q Capture 和 Q Apply 程序之间传输消息的所有WebSphere MQ 队列管理器的所有"死信队列"上查找具有期望消息标识的消息。如果恢复消息,则将它放置在接收队列上,并保留WebSphere MQ 消息头信息(尤其是消息标识)。如果不能恢复消息,则遵循下列步骤:
1. 使用 stopq 命令来停止 Q Apply 程序从接收队列中进行读取。
2. 取消激活此复制队列图的所有 Q 预订。
3. 清空发送队列和接收队列。
4. 使用 startq 命令,以便 Q Apply 程序继续从接收队列中进行读取。
5. 激活此复制队列图的所有 Q 预订。
解决:
通过如下步骤,可以解决这个问题:
1. asnqacmd apply_server=ITAGGET apply_schema=ASN stoptq=WEST_TO_EAST_Q
2. 在RC中将该Q subscriptions设置成为"deactivate"的状态。
3. 通过RC将WEST_TO_EAST_Q清空。
4. asnqacmd apply_server=ITARGET apply_schema=ASN startq=WEST_TO_EAST_Q
5. 再次将Q subscriptions设置成为"active"的状态。
对于该错误一个较好的方法就是:在启动Q Capture或者Q Apply之前,将QM_EAST和QM_WEST 上的admin、restart、和send_receive queueus 清空。
问题3描述:
2005-10-16 15:48:16.171000 ERROR ASN0005E CAPTURE "ASN" : "WorkerThread". The Capture program encountered an error when reading the DB2 log. The log sequence number is "0000:0000:0000:0697:A8BD", the SQLCODE is "-2650", and the reason code is "piStartLSNdb2ReadLog2".
分析:
这个错误主要可能是由于DB2的内部错误引起的。
解决:
完全重新安装DB2来解决这个问题。
问题4描述:
2005-10-16-19.40.47.328000 <dbConnection::dbConnectCtx> ASN0552E "Q Apply" : "ASN" : "BR00000SP001" : The program encountered an SQL error. The server name is "SAMPLE". The SQL request is "CONNECT". The table name is "N/A". The SQLCODE is "-30082". The SQLSTATE is "08001". The SQLERRMC is "3PASSWORD MISSING". The SQLERRP is "SQLEXSMC".
分析:
这个错误主要是由于缺少password文件而导致的。
解决:
安装本文上述相关内容生成password文件即可。
结束语
本文主要介绍了远程Q复制的相关操作,以及一些相关的核心概念。对于操作过程中常见的问题和错误进行了分析并给出了一般的解决方法。