MQ故障诊断及解决:[5]WMQ集群冷启动
1、1、前提准备
完全仓储库(FR)队列管理器处于停止状态下,备份其队列SYSTEM.CLUSTER.REPOSITORY.QUEUE的物理文件。
a)停止完全仓储库上的有关WMQ应用
b)停止完全仓储库队列管理器
#endmqm -i QMTESTA
c)备份由于SYSTEM.CLUSTER.REPOSITORY.QUEUE的文件
#cd /var/mqm/test/qmgrs/QMTESTA/queues/SYSTEM!CLUSTER!REPOSITORY!QUEUE
#cp -p q q.bk20140304
d)启动完全仓储库队列管理器
#strmqm -i QMTESTA
2、2、非完全仓储库队列管理器上步骤
1)确认完全仓储库(FR)工作正常(完全仓储库之间的集群通道正常)
2)如果存在定义错误,删除错误或不再使用的集群通道
3)确认应用队列没有消息(处理完毕),没有应用连接到队列管理器
停止MQ相关的应用
4)停止完全仓储库之间的集群发送与接收通道,隔离完全仓储库之间的通讯,并等待2-3分钟
stop chl(TO.QMTESTA)
5)手工杀掉'amqrrmfa'进程(集群管理进程)
ps -ef | grep amqrrmfa 得到PID
kill -9 PID
等待2-3分钟。
6)使用runmqsc 顺序清除相关的系统队列的消息
CLEAR QL(SYSTEM.CLUSTER.TRANSMIT.QUEUE)
CLEAR QL(SYSTEM.CLUSTER.COMMAND.QUEUE)
CLEAR QL(SYSTEM.CLUSTER.REPOSITORY.QUEUE)
并确认队列深度为0
7)停止队列管理器
endmqm -i <QMGR>
3、3、完全仓储库所在队列管理器上步骤
1)在完全仓储库QMTESTA上重复上述1~7上的所有操作
2)启动完全仓储库之间的集群通道
start chl(TO.QMTESTA)
确认完全仓储库之前的集群通道已经处于RUNNING状态
4)在两个完全仓储队列管理器上分别执行REFRESH CLUSTER命令
REFRESH CLUSTER(*)
5)收集相关的集群信息
runmqras -section defs,cluster -qmlist QMHVPSA
runmqras -section defs,cluster -qmlist QMCCPB
ps -ef > /tmp/mqpslist.out
备份SYSTEM.CLUSTER.REPOSITORY.QUEUE的q文件,操作方法同前期准备工作中的复制方法(需要停止队列管理后,对该文件进行备份),备份完成后,重新启动队列管理器
6)上述工作完成后,即集群信息被重建完毕
7)在所有的非完全仓储队列管理器(PR)分别执行集群刷新操作
REFRESH CLUSTER(*) REPOS(YES)
4、4、执行情况确认
检查是否执行成功,需要注意是否有通道处于STOP还是RETRYING的状态。
在完全仓储库上执行集群收集操作
runmqras -section defs,cluster -qmlist QMTESTA
并选取几个非完全仓储库执行相同的操作
runmqras -section defs,cluster -qmlist XXX
打开相关的runmqras.zip文件,检查amqrfdm_XXXXX.stdout的输出是否正确。