资源描述
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。
1、 Q复制规划
1.1主机和DB2的相关设置信息
description
source
target
Host name
Dbsvr01
Dbsvr04
Host IP Address
10.0.1.45
10.0.1.44
Db2 instance owner
Db1inst1
Db1inst1
Db2 tcp port
50002
50002
Database server /alias
pronode
dssnode
Db2 codepage
1386
1386
Logretain
Yes
Yes
DB ALIAS
topici
dssdb
注意: 在使用复制功能之前, 源数据库都应该将日志模式设置为archive logging模式( 归档日志模式)
1.2Websphere MQ的相关配置信息
description
source
target
Queue Manager
QMSYSA
QMSYSB
Listener port
1453
1454
Transmit Q
SYSA.XMITQ
SYSB.XMITQ
SDR channel
SYSAtoSYSB
SYSBtoSYSA
SCV channel
SYSBtoSYSA
SYSAtoSYSB
Restart Q
SYSA.RESTARTQ
AdminQ
SYSA.ADMINQ
SYSA.ADMINQ
Send Q(remote)
SYSA.SENDQ
Receive Q(local)
SYSB.RECVQ
AdminQ(remote)
SYSA.ADMINQ
Spill Q
IBMQREP.SPILL.MODELQ
1.3Q复制的配置信息
description
source
target
Q capture schema
ASN
Q apply schema
ASN
Q capture path
/home/db2inst2/capture
Q apply path
/home/db2inst2/apply
Replication queue map name
SYSAtoSYSB
SYSAtoSYSB
1.4复制队列映射属性
description
QCapture
QApply
复制队列映射名称
SYSAtoSYSB
Q Capture服务器
topicis
Q Apply服务器
dssdb
发送队列
SYSA.SENDQ
接收队列
SYSB.RECVQ
管理队列
SYSA.ADMINQ
SYSA.ADMINQ.
1.5通道测试
cd /usr/mqm/samp/bin
./amqsput SYSA.SENDQ QMSYSA
./amqsget SYSB.RECVQ QMSYSB
2、 mq用户创立
创立用户mqm和组mqm,并把组mqm加入到用户db2inst1和db2fenc1中。
3、 mq software install
解压缩mq软件, 用smitty installp安装,创立大小50G的mqmvg 、 mqmlv和文件系统mqm,挂载点/var/mqm, /var/mqm/log
4、 mq 队列和通道创立
在dbsvr04上执行setclock dbsvr01进行与dbsvr01的时间同步
, 需要在/etc/hosts中添加dbsvr01和IP。
由于MQ的需要在dbsvr01和dbsvr04中/etc/hosts添加相互的IP和name 信息。Service ip 和 service name 也要添加。
Dbsvr04:
/etc/hosts:
10.0.1.41 dbsvr01
10.0.1.44 dbsvr04
10.0.1.45 dbserver //hacmp 中service IP
MQ测试:
Dbsvr01:
$ crtmqm -q venus.queue.manager
WebSphere MQ queue manager created.
Creating or replacing default objects for venus.queue.manager.
Default objects statistics : 58 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.
$ strmqm
WebSphere MQ queue manager 'venus.queue.manager' starting.
5 log records accessed on queue manager 'venus.queue.manager' during the log replay phase.
Log replay for queue manager 'venus.queue.manager' complete.
Transaction manager state recovered for queue manager 'venus.queue.manager'.
WebSphere MQ queue manager 'venus.queue.manager' started.
$ runmqsc
5724-H72 (C) Copyright IBM Corp. 1994, . ALL RIGHTS RESERVED.
Starting MQSC for queue manager venus.queue.manager.
define qlocal (orange.queue)
1 : define qlocal (orange.queue)
AMQ8006: WebSphere MQ queue created.
end
2 : end
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.
$ cd /usr/mqm/samp/bin/
$ ./amqsput ORANGE.QUEUE
Sample AMQSPUT0 start
target queue is ORANGE.QUEUE
abcddsfsdsdfds
end
dbsvr04:
$ crtmqm -q venus.queue.manager
WebSphere MQ queue manager created.
Creating or replacing default objects for venus.queue.manager.
Default objects statistics : 58 created. 0 replaced. 0 failed.
Completing setup.
Setup completed.
$ $ strmqm
WebSphere MQ queue manager 'venus.queue.manager' starting.
5 log records accessed on queue manager 'venus.queue.manager' during the log replay phase.
Log replay for queue manager 'venus.queue.manager' complete.
Transaction manager state recovered for queue manager 'venus.queue.manager'.
WebSphere MQ queue manager 'venus.queue.manager' started.
$ runmqsc
5724-H72 (C) Copyright IBM Corp. 1994, . ALL RIGHTS RESERVED.
Starting MQSC for queue manager venus.queue.manager.
define qlocal (orange.queue)
1 : define qlocal (orange.queue)
AMQ8006: WebSphere MQ queue created.
:
:
:
end
2 : end
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.
$ cd /usr/mqm/samp/bin
$ ./amqsput ORANGE.QUEUE
Sample AMQSPUT0 start
target queue is ORANGE.QUEUE
adsfsdfdsfsdfsdfs
Sample AMQSPUT0 end
$
$ ./amqsget ORANGE.QUEUE
Sample AMQSGET0 start
message <adsfsdfdsfsdfsdfs>
dbsvr01:
crtmqm -lc -d SYSA.XMITQ -u DEADLETTER -lp 20 -ls 10 -lf 10240 QMSYSA //创立MQ队列
strmqm QMSYSA //起队列管理器
endmqlsr -m QMSYSA //停队列管理器
ps -ef | grep mq //查看队列管理器
nohup runmqlsr -t tcp -p 1453 -m QMSYSA & //起监听
ps –ef|grep lsr // 查看监听进程
endmqm QMSYSA //停队列
endmqlsr //停监听
dltmqm QMSYSA //删除管理队列
runmqsc QMSYSA //起MQ资源
DEFINE QREMOTE('SYSA.SENDQ') RNAME('SYSB.RECVQ') RQMNAME('QMSYSB') XMITQ('SYSA.XMITQ')
DEFINE QLOCAL('SYSA.XMITQ') USAGE(XMITQ) MAXDEPTH(1000000) DEFPSIST(YES)
DEFINE QLOCAL('DEADLETTER') USAGE(NORMAL) MAXDEPTH(500000)
ALTER QMGR DEADQ('DEADLETTER')
DEFINE CHL ('SYSAtoSYSB') CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('10.0.1.44(1454)') XMITQ('SYSA.XMITQ') DISCINT (0) BATCHSZ (200)
START CHANNEL ('SYSAtoSYSB')
DEFINE CHL ('SYSBtoSYSA') CHLTYPE(RCVR) TRPTYPE(TCP) BATCHSZ(200)
DEFINE QLOCAL('SYSA.ADMINQ') MAXDEPTH(500000) DEFPSIST(YES)
DEFINE QLOCAL('SYSA.RESTARTQ') MAXDEPTH(500000) DEFPSIST(YES)
End
*************************
runmqsc QMSYSA
dis chstatus('SYSAtoSYSB') //显示running 通道状态正常
dis chstatus('SYSAtoSYSB')
1 : dis chstatus('SYSBtoSYSA')
AMQ8417: Display Channel Status details.
CHANNEL(SYSBtoSYSA) CHLTYPE(RCVR)
CONNAME(10.0.1.44) CURRENT
RQMNAME(QMSYSB) STATUS(RUNNING)
SUBSTATE(RECEIVE)
dis chstatus('SYSBtoSYSA')
2 : dis chstatus('SYSBtoSYSA')
AMQ8417: Display Channel Status details.
CHANNEL(SYSBtoSYSA) CHLTYPE(RCVR)
CONNAME(10.0.1.44) CURRENT
RQMNAME(QMSYSB) STATUS(RUNNING)
SUBSTATE(RECEIVE)
*************************
runmqsc QMSYSB
dis chstatus('SYSBtoSYSA')
runmqchl -c SYSAtoSYSB -m QMSYSA //如果没有错误信息显示, 表明该channel成功运行
runmqchl -c SYSBtoSYSA -m QMSYSA //如果没有错误信息显示, 表明该channel成功运行
********************************
修改queue manager的CCSID:
strmqm
runmqsc
display qmgr // 检查当前queue manager的CCSID值
alter qmgr ccsid(437)
end
*************************
dbsvr04:
crtmqm -lc -d SYSB.XMITQ -u DEADLETTER -lp 20 -ls 10 -lf 10240 QMSYSB
strmqm QMSYSB
nohup runmqlsr -t tcp -p 1454 -m QMSYSB &
runmqsc QMSYSB
DEFINE QLOCAL('SYSB.RECVQ') MAXDEPTH(1000000) DEFPSIST(YES)
DEFINE QREMOTE('SYSA.ADMINQ') RNAME('SYSA.ADMINQ') RQMNAME('QMSYSA') XMITQ('SYSB.XMITQ')
DEFINE QLOCAL('SYSB.XMITQ') MAXDEPTH(1000000) USAGE(XMITQ) DEFPSIST(YES)
DEFINE QLOCAL('DEADLETTER') USAGE(NORMAL) MAXDEPTH(500000)
ALTER QMGR DEADQ('DEADLETTER')
DEFINE CHL ('SYSBtoSYSA') CHLTYPE(SDR) TRPTYPE(TCP) CONNAME('10.0.1.45(1453)') XMITQ('SYSB.XMITQ') DISCINT (0) BATCHSZ (200)
START CHANNEL ('SYSBtoSYSA')
DEFINE CHL ('SYSAtoSYSB') CHLTYPE(RCVR) TRPTYPE(TCP) BATCHSZ(200)
DEFINE QMODEL('IBMQREP.SPILL.MODELQ') DEFSOPT(SHARED) MAXDEPTH(1000000) MSGDLVSQ(FIFO) DEFTYPE(PERMDYN)
end
****************************
nohup runmqlsr -t tcp -p 1454 -m QMSYSB & //起监听
runmqsc QMSYSB
dis chstatus('SYSBtoSYSA') //显示running 通道状态正常
dis chstatus('SYSBtoSYSA')
dis chstatus('SYSAtoSYSB')
1 : dis chstatus('SYSAtoSYSB')
AMQ8417: Display Channel Status details.
CHANNEL(SYSAtoSYSB) CHLTYPE(RCVR)
CONNAME(10.0.1.45) CURRENT
RQMNAME(QMSYSA) STATUS(RUNNING)
SUBSTATE(RECEIVE)
dis chstatus('SYSBtoSYSA')
2 : dis chstatus('SYSBtoSYSA')
AMQ8417: Display Channel Status details.
CHANNEL(SYSBtoSYSA) CHLTYPE(SDR)
CONNAME(10.0.1.45(1453)) CURRENT
RQMNAME(QMSYSA) STATUS(RUNNING)
SUBSTATE(MQGET) XMITQ(SYSB.XMITQ)
EN)
*********************************************
修改队列管理器中的字符集命令:
首先打开命令行窗口。 在打开后的命令窗口中输入: runmqsc ( 队列管理器名称) , 然后按回车。 其后再输入: ALTER QMGR CCSID (字符集代码), 回车, 修改成功。 最后输入: DISPLAY QMGR CCSID,查看已经更改过的字符编码集。
DISPLAY QMSTATUS STATUS( 查看qmgr的运行状态)
注:1208是UTF-8格式, 1381是中文格式。在字符集代码处选择输入, 如果这两都不是你需要的, 你能够查看MB帮助或MQ帮助, 选择合适你的字符集代码。
5、 创立catalog 库
本地复制中心pc、 dbsvr01、 dbsvr02上创立catalog库。
本地复制中心pc上:
C:\Documents and Settings\admin>cd \
C:\>db2 list db directory
SQL1031N 在指示的文件系统中找不到数据库目录。 SQLSTATE=58031
C:\>db2 catalog tcpip node pridnode remote 10.0.1.45 server 50002 // prodnode对应dbsvr01主机
DB 0I CATALOG TCPIP NODE 命令成功完成。
DB21056W 直到刷新目录高速缓存之后, 目录更改才生效。
C:\>db2 catalog db topicis at node pridnode
DB 0I CATALOG DATABASE 命令成功完成。
DB21056W 直到刷新目录高速缓存之后, 目录更改才生效。
C:\>db2 terminate
DB 0I TERMINATE 命令成功完成。
C:\>db2 connect to topicis user db2inst1 using db2inst1
数据库连接信息
数据库服务器 = DB2/AIX64 9.7.1
SQL 授权标识 = DB2INST1
本地数据库别名 = TOPICIS
C:\>db2 catalog tcpip node dssnode remote 10.0.1.44 server 50002 //dssnode对应dbsvr04主机
DB 0I CATALOG TCPIP NODE 命令成功完成。
DB21056W 直到刷新目录高速缓存之后, 目录更改才生效。
C:\>db2 catalog db topicis as dssdb at node dssnode //创立topicis别名为dssdb
DB 0I CATALOG DATABASE 命令成功完成。
DB21056W 直到刷新目录高速缓存之后, 目录更改才生效。
C:\>db2 terminate
DB 0I TERMINATE 命令成功完成。
C:\>db2 connect to dssdb user db2inst1 using db2inst1
数据库连接信息
数据库服务器 = DB2/AIX64 9.7.1
SQL 授权标识 = DB2INST1
本地数据库别名 = DSSDB
删除用 : db2 uncatalog db dssdb
Db2 uncatalog node dssnode
dbsvr01上catalog:
dbsvr01:
$ db2 catalog tcpip node dssnode remote 10.0.1.44 server 50002 // dssnode对应为dbsvr04
DB 0I The CATALOG TCPIP NODE command completed successfully.
DB21056W Directory changes may not be effective until the directory cache is
refreshed.
$ db2 catalog db topicis as dssdb at node dssnode //创立topicis别名为dssdb
DB 0I The CATALOG DATABASE command completed successfully.
DB21056W Directory changes may not be effective until the directory cache is
refreshed.
$ db2 terminate
DB 0I The TERMINATE command completed successfully.
$
dbsvr04上catalog:
dbsvr04:
$ db2 catalog db topicis as dssdb on /home/db2inst1 //创立topicis别名为dssdb
DB 0I The CATALOG DATABASE command completed successfully.
DB21056W Directory changes may not be effective until the directory cache is
refreshed.
$ db2 terminate
DB 0I The TERMINATE command completed successfully.
$ db2 list db directory
System Database Directory
Number of entries in the directory = 2
Database 1 entry:
Database alias = TOPICIS
Database name = TOPICIS
Local database directory = /home/db2inst1
Database release level = d.00
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =
Database 2 entry:
Database alias = DSSDB
Database name = TOPICIS
Local database directory = /home/db2inst1
Database release level = d.00
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =
$ db2 connect to dssdb
Database Connection Information
Database server = DB2/AIX64 9.7.1
SQL authorization ID = DB2INST1
Local database alias = DSSDB
5、 用户口令配置
Dbsvr01:
asnpwd init
asnpwd add alias topicis id db2inst1 password db2inst1
asnpwd add alias dssdb id db2inst1 password db2inst1
Dbsvr04:
asnpwd init
asnpwd add alias topicis id db2inst1 password db2inst1
asnpwd add alias dssdb id db2inst1 password db2inst1
6、 db2复制中心: db2rc
7.1 capture模式创立
7.2、 Q预定创立
7.3创立复制队列映射
7.4、 APPLY模式创立
7.5、 Q预定单个启动与停止
8、 MQ相关脚本
8.1 Capture主机中的相关脚本。
启动脚本: capture.sh:
date
#export LD_LIBRARY_PATH=/usr/opt/db2_08_01/lib
export LIBPATH=/usr/mqm/lib64:$LIBPATH
export LD_LIBRARY_PATH=$LIBPATH
echo $LIBPATH
echo $LD_LIBRARY_PATH
asnqcap capture_server=topicis capture_schema=ASN capture_path="/home/db2inst1/capture" PWDFILE=asnpwd.aut &
#/usr/opt/db2_08_01/bin/asnqcap startmode=COLD #capture_server=BTPDBS capture_schema=ASN1 #capture_path="/home/db2inst1/capture_data" PWDFILE=asnpwd.aut
停止脚本stop.sh:
asnqccmd CAPTURE_SERVER=topicis CAPTURE_SCHEMA=ASN stop
查看状态脚本status.sh:
asnqccmd CAPTURE_SERVER=topicis CAPTURE_SCHEMA=ASN status
启mqm脚本:
Mqmstart.sh:
strmqm QMSYSA
runmqsc QMSYSA < ./startcomponent.mqsc
nohup runmqlsr -t tcp -p 1453 -m QMSYSA &
startcomponent.mqsc:
START CHANNEL('SYSAtoSYSB')
START CHANNEL('SYSBtoSYSA')
END
停mqm脚本:
Mqmstop.sh:
runmqsc QMSYSA < ./stopcomponent.mqsc
endmqlsr -w -m QMSYSA
endmqm -i QMSYSA
endmqm -p QMSYSA
stopcomponent.mqsc:
STOP CHANNEL('SYSBtoSYSA') MODE(FORCE)
STOP CHANNEL('SYSBtoSYSA') MODE(FORCE)
END
8.2 Apply主机中的相关脚本。
启动脚本: apply.sh:
date
#export LD_LIBRARY_PATH=/usr/opt/db2_08_01/lib
#export LIBPATH=/usr/lib:/lib:/usr/opt/db2_08_01/lib:/usr/mqm/lib
export LIBPATH=/usr/mqm/lib64:$LIBPATH
export LD_LIBRARY_PATH=$LIBPATH
echo $LIBPATH
echo $LD_LIBRARY_PATH
asnqapp apply_server=dssdb apply_schema=ASN apply_path="/home/db2inst1/apply" PWDFILE=asnpwd.aut &
停止脚本stop.sh:
asnqacmd APPLY_SERVER=dssdb APPLY_SCHEMA=ASN stop
查看状态脚本status.sh:
asnqacmd APPLY_SERVER=dssdb APPLY_SCHEMA=ASN status
启mqm脚本:
Mqmstart.sh:
strmqm QMSYSB
runmqsc QMSYSB < ./startcomponent.mqsc
nohup runmqlsr -t tcp -p 1454 -m QMSYSB &
startcomponent.mqsc:
START CHANNEL('SYSAtoSYSB')
START CHANNEL('SYSBtoSYSA')
END
停mqm脚本:
Mqmstop.sh:
runmqsc QMSYSB < ./stopcomponent.mqsc
endmqlsr -w -m QMSYSB
endmqm -i QMSYSB
endmqm -p QMSYSB
stopcomponent.mqsc:
STOP CHANNEL('SYSBtoSYSA') MODE(FORCE)
STOP CHANNEL('SYSBtoSYSA') MODE(FORCE)
END
9、 启动顺序
DB2与MQM启动顺序
Db2数据库启动顺序为,
先启动hacmp 集群中db2,
启动MQ主机上的db2,
启动MQ主机上的mq 队列与通道、 监听等。
启动hacmp 集群中db2主机上的mq 队列与通道、 监听等。
启动MQ主机上的mq的apply.sh
启动hacmp 集群中db2主机上的mq的capture.sh
10、 相关信息总结
ASN7137W MAX_MESSAGE_SIZE偏小
程序名: 程序标识: 发布或 Q 预订 名称 的指定 MAX_MESSAGE_SIZE 对于发送队列 队列名 和发布队列映射或复制队列映射 queue_map_name 可能太小。可能需要 大小 字节的最
大值。
说明
发布队列映射或复制队列映射的 MAX_MESSAGE_SIZE 值( 用于指定此发送队列) 可能太小, 因此不能包括 WebSphere MQ 消息中的一行。如果 Q Capture 程序在运行时发生此问题
, 那么它将停止。
用户响应
增大队列映射的 MAX_MESSAGE_SIZE 值。使用 asnqacmd reinitq 命令重新初始化队列映射。
alter qmgr MAXMSGL()
db2 "update ASN.IBMQREP_SENDQUEUES set max_message_size = 8192"
asnqacmd reinitq
SendMQ:
db2 "update ASN.IBMQREP_SENDQUEUES set max_message_size = 8192"
alter qmgr MAXMSGL()
alter ql(SYSA.XMITQ) MAXMSGL()
dis ql(SYSA.XMITQ)
end
ReceiveMQ:
db2 "update ASN.IBMQREP_SENDQUEUES set max_message_size = 8192"
dis ql(SYSB.RECVQ)
alter qmgr MAXMSGL()
alter ql(SYSB.RECVQ) MAXMSGL()
end
Q复制源表增加字段是不能传输到目标表的。
复制源表增加字段是不能
展开阅读全文