DB29.7数据库远程单向Q复制简单实例

DB29.7数据库远程单向Q复制简单实例
一、环境描述
CAPUTER端:
操作系统:   SUSE  ENPERPRISE SERVER 11 - 2.6.26.19-5 - linux-1 - 128.1.1.168
数据库:      DB29.7 ESE - SOURCE
Websphere MQ: Version 7.0.1
APPLY端:
操作系统:   SUSE  ENPERPRISE SERVER 11 - 2.6.26.19-5 - linux-2 - 128.1.1.169
数据库:      DB29.7 ESE - TARGET
Websphere MQ: Version 7.0.1

二、环境搭建
1、操作系统
虚拟机环境,使用系统镜像文件安装linux,具体步骤这里就省掉了。
CAPUTER端服务器,主机名:linux-1,网络地址:128.1.1.168
APPLY端服务器,主机名:linux-2,网络地址:128.1.1.169
2、数据库
分别在linux-1和linux-2上安装DB29.7ESE,图形或文本界面安装,略述。
数据库实例:db2inst1
实例端口号:50000
管理实例用户: dasusr1
用户实例用户: db2inst1
实例防护用户: db2fenc1
数据库字符集: gbk
设置注册表变量:db2set db2codepage=1386
CAPUTER端服务器,数据库名称:source
APPLY端服务器,数据库名称:  target
3、Websphere MQ
1) 创建MQ组及用户
  groupadd mqm
  useradd -g mqm -m mqm
  
2) 安装Websphere MQ
  sh mqlicense.sh -accept
  rpm -ivh MQSeriesSDK-7.0.1-0.i386 MQSeriesRuntime-7.0.1-0.i386 MQSeriesServer-7.0.1-0.i386
  
三、Q复制配置
1、设置Websphere MQ
1)设置实例用户信息
  分别在linux-1和linux-2上,使用root用户执行:
  usermod -G mqm db2inst1
   usermod -G mqm db2fenc1 
2)创建Websphere MQ对象
 
  创建并启动CAPUTER端Websphere MQ对象
     在linux-1上使用db2inst1用户执行脚本:
     sh QrepSrcCrt.sh
    
QrepSrcCrt.sh内容如下:
#!/bin/sh
if dspmq | grep QREPSRC >/dev/null 2>&1; then
  dltmqm QREPSRC
fi
crtmqm QREPSRC
strmqm QREPSRC
runmqsc QREPSRC <
*S2. Local Restart queue
DEFINE QLOCAL('QREPSRC.RESTART') DEFPSIST(YES)
*S3. Local Administration queue
DEFINE QLOCAL('QREPSRC.ADMIN') DEFPSIST(YES)
*S4. Remote Send queue
DEFINE QREMOTE('QREPSRC.SEND') RNAME('QREPTGT.RECV') RQMNAME('QREPTGT') XMITQ('QREPTGT') DEFPSIST(YES)
*S5. Transmission queue
DEFINE QLOCAL('QREPTGT') USAGE(XMITQ) DEFPSIST(YES)
*S6. Sender channel
DEFINE CHL ('QREPSRC_TO_QREPTGT') CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('128.1.1.169(1414)') XMITQ('QREPTGT') DISCINT (0)
*S7. Receiver channel
DEFINE CHL ('QREPTGT_TO_QREPSRC') CHLTYPE(RCVR) TRPTYPE(TCP)
*Start the channel:
START CHL ('QREPSRC_TO_QREPTGT')
*Finish And Exit
END
EOF
runmqlsr -t tcp -m QREPSRC -p 1414 &
 
  创建并启动APPLY端Websphere MQ对象
      在linux-2上使用db2inst1用户执行脚本:
     sh QrepTgtCrt.sh
    
QrepTgtCrt.sh内容如下:
#!/bin/sh
if dspmq | grep QREPTGT >/dev/null 2>&1; then
  dltmqm QREPTGT
fi
crtmqm QREPTGT
strmqm QREPTGT
runmqsc QREPTGT <
*T2. Local Receive queue
DEFINE QLOCAL('QREPTGT.RECV') DEFPSIST(YES)
*T3. Remote Administration queue
DEFINE QREMOTE('QREPTGT.ADMIN') RNAME('QREPSRC.ADMIN') RQMNAME('QREPSRC') XMITQ('QREPSRC') DEFPSIST(YES)
*T4. Transmission queue
DEFINE QLOCAL('QREPSRC') USAGE(XMITQ) DEFPSIST(YES)
*T5. Sender channel
DEFINE CHL ('QREPTGT_TO_QREPSRC') CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('128.1.1.168(1414)') XMITQ('QREPSRC') DISCINT (0)
*T6. Receiver channel
DEFINE CHL ('QREPSRC_TO_QREPTGT') CHLTYPE(RCVR) TRPTYPE(TCP)
*T7. Spill queue
DEFINE QMODEL('IBMQREP.SPILL.MODELQ') DEFSOPT(SHARED) MAXDEPTH(500000) MSGDLVSQ(FIFO) DEFTYPE(PERMDYN)
*Start the channel:
START CHL ('QREPTGT_TO_QREPSRC')
*Finish And Exit
END
EOF
runmqlsr -t tcp -m QREPTGT -p 1414 &    
2、设置Q复制
1)在linux-1上编目linux-2上的target数据库
    在服务器linux-1上使用db2inst1用户执行:
    db2 catalog tcpip node target remote 128.1.1.169 server 50000
    db2 catalog database target at node target
2)在linux-1上启动复制中心(db2inst1用户登录终端窗口执行db2rc),设置Q复制
  a) 创建caputer控制表
    图形界面配置,略述
 
  b) 创建apply控制表
     图形界面配置,略述
 
  c) 创建对列映射
     图形界面配置,略述
 
  d) 对source库启用复制
    复制中心,关闭启动版,在左侧树中,Q Replication - Definitions - Q Caputer Servers - source, 右键选择:Enable Database FOR Q Replication
 
  e) 创建预订
    前提:分别连接到库source和target创建Q复制测试表,例如:CREATE TABLE qreptest(id integer NOT NULL PRIMARY KEY, name varchar(10))
    
    注:创建预订时选择表qreptest,loading target tables :no load (不进行基准数据同步)
 
  f) 启动caputer端
    复制中心,关闭启动版,在左侧树中,点击 Q Replication - Operations - Q Caputer Servers,在右侧列表中,右键点击SOURCE行,选择 Start Q Caputer Program...
 
  g) 启动apply端
     复制中心,关闭启动版,在左侧树中,点击 Q Replication - Operations - Q Apply Servers,在右侧列表中,右键点击TARGET行,选择 Start Q Apply Program...
 
  h) 简单测试
    插入:
    
    在source库执行:INSERT INTO qreptest values (1, 'aaa')
    在target库执行:SELECT * FROM qreptest
    
    确认在target库可以看到新插入的数据
    
    更新:
    
    在source库执行:UPDATE qreptest SET name = 'ccc' WHERE id = 1
    在target库执行:SELECT * FROM qreptest
    
    确认在target库可以看到修改后的数据
    
    删除:
    
    在source库执行:DELETE FROM qreptest WHERE id = 1
    在target库执行:SELECT * FROM qreptest
    
    确认在target库不可以看到已删除的数据
    
四、补充说明
该实例是单向Q复制简单的一个实现案例,仅供参考。在实际的生产环境下,Q复制远不止这些,会涉及到asnclp command,经典复制中的数据过滤,复制到存储过程,基本数据同步,SQL表达式,性能监控等更深入的应用。
  
  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7690668/viewspace-662287/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
user_pic_default.png
请登录后发表评论 登录
全部评论
<%=items[i].createtime%>

<%=items[i].content%>

<%if(items[i].items.items.length) { %>
<%for(var j=0;j
<%=items[i].items.items[j].createtime%> 回复

<%=items[i].items.items[j].username%>   回复   <%=items[i].items.items[j].tousername%><%=items[i].items.items[j].content%>

<%}%> <%if(items[i].items.total > 5) { %>
还有<%=items[i].items.total-5%>条评论 ) data-count=1 data-flag=true>点击查看
<%}%>
<%}%>
<%}%>

转载于:http://blog.itpub.net/7690668/viewspace-662287/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值