yuank1987
作者yuank1987·2014-10-14 21:00
数据库开发工程师·中国金融电子化公司

Q复制配置步骤

字数 4521阅读 3773评论 5赞 0
1.环境准备

Q复制的原理为:

目前测试环境为

l  源库主机:  10.1.4.56  源端数据库:QTESTDB1   db2inst1/db2inst1

Capture server

AIX v538C, 16G内存

l  目的主机:  10.1.4.60  目的数据库:QTESTDB1   db2inst1/db2inst1

Apply Server

AIX v534C, 8G内存

l  两边均已经安装了 Replication ServerDB2v9MQv6软件

l  MQ Server的实例被升级到64位类库,因为DB的实例是64位的

 

2Q复制配置步骤

Q复制的配置主要分为五个过程:

1.配置MQ队列

2. 配置数据库

3. 配置环境变量

4.配置Q复制服务组件

5.根据需要复制的表配置Q预定

 

2.1  配置MQ队列

MQ的配置有一套模版脚本,放在 /qrep/mqscript 目录下,其中在源端运行source.sh,目的端运行 target.sh。针对测试环境目前设置的队列深度为 1M,日志文件大小为256M,主辅日志文件个数为96,以上参数基本上只需要根据数据复制量来调整日志文件个数。

 

如果在不同的机器环境下,只需要更改脚本中的主机IP和端口号。在 source.sh target.sh 脚本中只需要修改端口号,而在 source.mqdef target.mqdef 脚本中需要修改主机的IP和端口号。

2.2 配置数据库

1)将实例用户加入到mqm,并为DB2添加包含Q-复制功能的license

ESElicense不含Q-复制license,需要单独添加Q-复制的license

AESElicense中则包含Q-复制的license

2更新LOGRETAIN为归档模式

db2 UPDATE DB CFG USING FOR dbname LOGRETAIN = ON

更新该参数后需要归档数据。

3编目目标数据库到源系统

    CATALOG TCPIP NODE nodename REMOTE ip_address SERVER port

    CATALOG DATABASE dbname AS alias AT NODE nodename


2.3 配置环境变量

修改实例用户的.profile,加入以下内容:

(1) AIX操作系统:

PATH="${PATH}:/usr/mqm/bin:."

export PATH

LIBPATH="${LIBPATH}:/usr/mqm/lib64"

export LIBPATH

(2)  SUSELINUX操作系统:

修改/home/${INSTNAME}/sqllib/db2profile,增加如下内容:

AddRemoveString LD_LIBRARY_PATH /opt/mqm/lib64 a

修改.profile,增加如下内容:

export PATH=$PATH:/opt/mqm/bin:.

 

2.4  配置Q复制服务器组件

Q复制的服务器组件包括Q Capture Server Q Apply Server,配置Q复制服务器组件只需要执行如下脚本:

ASNCLP –f qrep.bin

确认防火墙已经关闭。

其中 qrep.bin 脚本内容如下:


一般情况下此脚本不需要修改,只有粗体部分需要注意,如果数据库的访问口令修改了则应修改相应的脚本,如果是第一次建立Q服务器组件则删除脚本无效,需要注释掉。

2.5  配置Q预定

配置Q预定只需要在服务端执行如下脚本:

ASNCLP –f qsub.bin

MAP中服务端表需要激活data capture changes属性,命令如下:

alter table tabname data capture changes

其中,qsub.bin内容如下:

ASNCLP SESSION SET TO Q REPLICATION;

SET LOG "qsub.err";

SET RUN SCRIPT NOW STOP ON SQL ERROR ON;

SET OUTPUT CAPTURE SCRIPT "QREPCAPSUB.SQL"  TARGET SCRIPT "QREPAPPSUB.SQL";

SET QMANAGER QMGA FOR CAPTURE SCHEMA;

SET QMANAGER QMGB FOR APPLY SCHEMA;

SET CAPTURE SCHEMA SOURCE ASN;

SET APPLY SCHEMA ASN;

SET SERVER CAPTURE TO DB qtestdb1 id db2inst1 password "db2inst1" ;

SET SERVER TARGET TO DB qtestdb2 id db2inst1 password "db2inst1" ;

 

DROP QSUB USING REPLQMAP S_TO_T_MAP (SUBNAME GATEST0001 );

 

CREATE QSUB USING REPLQMAP S_TO_T_MAP (SUBNAME GATEST0001 TCBSUSRA.GATEST OPTIONS  HAS LOAD PHASE I SUPPRESS DELETES Y EXIST TARGET NAME TCBSUSRA.GATEST CONFLICT ACTION F LOAD TYPE 0);

 

 START QSUB SUBNAME GATEST0001 ;

其中,qtestdb2是需要编目到服务端的。subname不能重复。

2.6 启动Q复制组件

(1) 启动Capture组件

       asnqcap capture_server=qtestdb1 capture_schema=asn startmode=cold &

(2) 启动Apply组件

       asnqapp apply_server=qtestdb2 apply_schema=asn &

2.7 检查Q复制组件状态

(1) 检查Capture组件状态

       asnqccmd capture_server=qtestdb1 capture_schema=asn status show details

(2) 检查Apply组件状态

       asnqacmd apply_server=qtestdb2 apply_schema=asn status show details

2.8 停止Q复制组件

(1) 停止Capture服务组件

       asnqccmd capture_server=qtestdb1 capture_schema=asn stop

(2) 停止Apply订阅组件

       asnqacmd apply_server=qtestdb2 apply_schema=asn stop


常用命令

Q capture server

启动:asnqcap capture_server=qtestdb1 capture_schema=asn [startmode=cold]&

停止:asnqccmd  capture_server=qtestdb1 capture_schema=asn stop

查看状态:asnqccmd capture_server=qtestdb1 capture_schema=asn status [show details]

 

Q apply server:

启动:asnqapp apply_server=qtestdb2 apply_schema=asn &

停止:asnqacmd apply_server=qtestdb2 apply_schema=asn stop

查看状态:asnqacmd apply_server=qtestdb2 apply_schema=asn status [show details]

 

查看状态时ACTIVE_QSUBS表示订阅个数,为0表示为订阅成功。

命令行进行复制订阅集/控制表

asnclp –f <asnclp.sql>

 

QA:

1. 如果启动之后订阅失败,请clear服务组件的MQ 队列GA.RESTARTQ GA.ADMINQ

然后重新执行订阅脚本,最后重启服务。

2. 服务组件激活成功,订阅组件未激活成功。检查服务组件发送通道是否启动,订阅组件监听是否启动。

目前的问题

因为Q复制的Q预定是基于表的,所以表结构变化之后需要重新配置,下图的五张表的定义不准确,主要是因为Excel中定义的条件所使用的数据列已经发生变化,即和数据库不一致,修改Excel后,停止Q复制,重新建立Q预定后再启动Q复制即可。


如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论5 条评论

darling_4444darling_4444其它IBM
2014-11-06 22:34
我的邮箱,706530211@qq.com,非常感谢!
zymh_zyzymh_zyIT顾问国内某公司
2014-11-05 10:27
你好,这是我的邮箱:zymh_zy@163.com,帮忙发一下,谢谢!
freshgrassfreshgrass软件开发工程师sinosoft
2014-11-05 09:50
您好,这是我的邮箱:472104243@qq.com。帮忙发一下,谢谢!
jqt101588jqt101588软件开发工程师jqt10
2014-10-16 16:11
您好,这是我的邮箱:wnl1221@163.com。帮忙发一下,谢谢!
yuank1987yuank1987数据库开发工程师中国金融电子化公司
2014-10-14 21:04
图片显示不了,有需要的留下邮箱索要word文档。
Ctrl+Enter 发表

作者其他文章

  • XQuery入门
    评论 1 · 赞 1
  • 相关文章

    相关问题

    相关资料

    X社区推广