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
数据库: 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
数据库: DB29.7 ESE - TARGET
Websphere MQ: Version 7.0.1
二、环境搭建
1、操作系统
虚拟机环境,使用系统镜像文件安装linux,具体步骤这里就省掉了。
虚拟机环境,使用系统镜像文件安装linux,具体步骤这里就省掉了。
CAPUTER端服务器,主机名:linux-1,网络地址:128.1.1.168
APPLY端服务器,主机名:linux-2,网络地址:128.1.1.169
APPLY端服务器,主机名:linux-2,网络地址:128.1.1.169
2、数据库
分别在linux-1和linux-2上安装DB29.7ESE,图形或文本界面安装,略述。
数据库实例:db2inst1
实例端口号:50000
分别在linux-1和linux-2上安装DB29.7ESE,图形或文本界面安装,略述。
数据库实例:db2inst1
实例端口号:50000
管理实例用户: dasusr1
用户实例用户: db2inst1
实例防护用户: db2fenc1
数据库字符集: gbk
用户实例用户: db2inst1
实例防护用户: db2fenc1
数据库字符集: gbk
设置注册表变量:db2set db2codepage=1386
CAPUTER端服务器,数据库名称:source
APPLY端服务器,数据库名称: target
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复制配置
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
分别在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内容如下:
创建并启动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
dltmqm QREPSRC
fi
crtmqm QREPSRC
strmqm 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
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内容如下:
创建并启动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
dltmqm QREPTGT
fi
crtmqm QREPTGT
strmqm 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
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
在服务器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库不可以看到已删除的数据
四、补充说明
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/,如需转载,请注明出处,否则将追究法律责任。
上一篇:
从DB2V8.1迁移到DB2V9.7
下一篇: 没有了~
请登录后发表评论
登录
全部评论
<%=items[i].createtime%>
<%=items[i].content%>
<%if(items[i].items.items.length) { %>
<%for(var j=0;j
<%}%> <%if(items[i].items.total > 5) { %>
<%}%>
<%=items[i].items.items[j].createtime%>
<%=items[i].items.items[j].username%> 回复 <%=items[i].items.items[j].tousername%>: <%=items[i].items.items[j].content%>
还有<%=items[i].items.total-5%>条评论
) data-count=1 data-flag=true>点击查看
<%}%>
转载于:http://blog.itpub.net/7690668/viewspace-662287/