IBMMQ队列管理器配置备份及迁移

队列管理器配置备份及迁移

在这里插入图片描述

对于IBMMQ队列管理器配置备份,IBMMQ7.0版本之前需要借助第三方工具ms03,该文件可以在官方获取,下载时需要注意使用的操作系统,请根据实际环境进行下载,在7.0版本以后,官方将队列管理器配置备份及消息备份集成到dmpmqmsg命令中,本文档针对7.0版本以上做说明,主要针对dmpmqmsg方法实现消息迁移和队列管理器做说明。

下面是dmpmqmsg的使用方法:

[mqm@node-1 bin]$ dmpmqmsg --help
dmpmqmsg: invalid option -- '-'
5724-H72 (C) Copyright IBM Corp. 1994, 2022.
IBM MQ Queue Load/Unload Utility

Usage: dmpmqmsg <Optional flags as below>
        [-a <File access mode for fopen()>
            a  Append
            b  Binary
        [-b <initial buffer size in Kb>]
        [-c Connect in client mode]
        [-C [A][I][a][i][d][n] Context]
            A  Set all context (default)
            I  Set identity context
            a  Pass all context
            i  Pass identity context
            d  Default context
            n  No context
        [-d <Display Options>]
            a         Add ASCII columns to HEX file
            A         Write output file in ASCII lines rather than HEX
            c         Output ApplData MQMD fields as char
            C         Display Correlation Id in summary
            H         Don't write file header
            i         Write message index
            p         Write output file in printable characters format
            s         Display queue summary
            M         Display Message Ids in summary
            N         Don't write MQMD to file
            t         Write output file in text lines
            T         Display time on queue
            w<Length> Data width
        [-D <Delay>]
          +ve fixed delay in milliseconds
          -ve random delay in milliseconds
          r[time%] relative delay
        [-f <File Name> or -f <stdout>]
        [-F <File Name>   (forcing overwrite)]
        [-g [x][c][m][g] <Id> Get by Id
            x  Id is in Hex
            m  Id is Message Id
            c  Id is Correlation Id
            g  Id is Group Id
        [-h Strip headers
        [-i <Input Queue> (Browse)]
        [-I <Input Queue> (Get)]
        [-m <Queue Manager name>]
        [-o <Output Queue>]
        [-p  Purge source queue]
        [-P <CCSID>[:X'Encoding'] CodePage conversion]
        [-q  Quiet]
        [-r <Message Range>]
           x    Message x only
           x..y Message x to message y
           x#y  y messages starting at message x
           #x   First x messages
        [-t <Transaction Message Limit>]
        [-T <Time on queue (Age) selection>
            [[[DD:]HH:]MM ][,[[DD:]HH:]MM]
        [-s <Ascii Search String>]
        [-S <Ascii Not Search String>]
        [-e <Ebcdic Search String>]
        [-E <Ebcdic Not Search String>]
        [-w <MQGET Wait interval(seconds)]
        [-x <Hex Search String>]
        [-X <Hex Not Search String>]
        [-u <UserId>]

Examples 
-------- 
Unload a queue to a file        : dmpmqmsg -iQ1 -fmyfile
Load a queue from a file        : dmpmqmsg -oQ1 -fmyfile
Copy a queue from Q1 to Q2      : dmpmqmsg -iQ1 -oQ2
Move a queue from Q1 to Q2      : dmpmqmsg -IQ1 -oQ2
Move old messages from Q1 to Q2 : dmpmqmsg -IQ1 -oQ2 -T1440
Provide Summary of messages     : dmpmqmsg -iQ1 -ds
[mqm@node-1 bin]$ 

注意:首先确认当前IBMMQ服务是否启动,在使用dmpmqmsg进行导入导出时,当前对列管理器要处于启动状态,若当前队列管理器处于关闭状态则首先需要启动该队列管理器。

1. 队列中消息迁移

在IBMMQ队列管理器进行迁移时,需要考虑到源队列管理器中存放的消息是否需要进行迁移,若消息需要同步迁移则参考如下测试过程:若消息不需要迁移,则忽略此步骤。

dmpmqmsg命令参数测试

在这里插入图片描述

查看队列管理器ultimatech中的队列1123,可以看到当前队列深度为2,表明当前存在2条消息,使用

dmpmqmsg命令进行消息的备份(消息的导出)

C:\Users\Administrator\Desktop>dmpmqmsg -m ultimatech -i1123 -fmyfile 
结果如下:
5724-H72 (C) Copyright IBM Corp. 1994, 2016. 
WebSphere MQ Queue Load/Unload Utility 
Read - Files: 0 Messages: 2 Bytes: 56 
Written - Files: 1 Messages: 2 Bytes: 56 

此时可以将ultiamtech队列管理器队列1123中的消息清除掉。

在这里插入图片描述

消息清除完后,可以看到队列的队列深度为0。

在这里插入图片描述

此时使用dmpmqmsg命令将消息重新导入到队列中

C:\Users\Administrator\Desktop>dmpmqmsg -o1123 -fmyfile -m ultimatech 
结果如下:
5724-H72 (C) Copyright IBM Corp. 1994, 2016. 
WebSphere MQ Queue Load/Unload Utility 
Read - Files: 1 Messages: 2 Bytes: 56 
Written - Files: 0 Messages: 2 Bytes: 56  

通过控制台查看mq队列1123队列深度,此时队列深度为2,表明当前消息被导入成功。

上面操作是针对一个队列管理中的队列操作的,备份的文件,是无法查看消息的内容,如果想要查看消息的内容,可以重新创建一个新的队列管理器和队列,将备份的消息导入到新创建的队列管理器中。

示例如下:

创建队列管理器 
crtmqm dataimport 
创建本地队列 
runmqsc dataimport 
创建队列Q1
define qlocal (Q1) 

使用dmpmqmsg命令将myfile导入到队列管理器dataimport中

C:\Users\Administrator\Desktop>dmpmqmsg -m dataimport -oQ1 -fmyfile 
结果如下:
5724-H72 (C) Copyright IBM Corp. 1994, 2016. 
WebSphere MQ Queue Load/Unload Utility 
Read - Files: 1 Messages: 2 Bytes: 56 
Written - Files: 0 Messages: 2 Bytes: 56 

此时可以从Q1队列中查看消息的内容

在这里插入图片描述

2. 队列管理器配置备份导出

首先确认dmpmqmsg是否可用,该命令在IBMMQ安装路径的bin目录下,若当前服务器中配置了IBMMQ的环境变量,可直接使用该命令;若未配置环境变量,则进入到IBMMQ安装路径的bin目录下执行该命令:

导出对列管理器配置

dmpmqcfg -m <Queue Manager name> -x all> qmgr_config.txt

参数说明:-m 指队列管理器名称

-x 指需要导出的类型,此处选择所有类型(all),针对该参数官方提供如下参数(all|object|authrec|chlauth|sub|policy)过滤定义过程以显示 对象 定义, 权限记录, 通道认证 记录,持久 预订 或 策略。 默认为 all 是返回所有类型;

qmgr_config.txt为最终导出生成的文件名称,文件名称亦可自定义,此处只是示例,亦可指定文件位置,若不添加路径则在当前路径生成该文件。

注意:在qmgr_config.txt文件生成后,请查看该文件是否正常生成,并存在数据。

3. 队列管理器配置导入

1)在需要导入其他IBMMQ配置的环境中创建新的对列管理器并启动该队列管理器

#创建队列管理器,队列管理器的名称根据实际情况进行命名,可与源队列管理器同名也可重新定义队列管理器名称
crtmqm <Queue Manager name>
#启动队列管理器
strmqm <Queue Manager name>

2)查看队列管理器是否正常开启

dspmq -m  <Queue Manager name>

在这里插入图片描述

3)将源队列管理器导出文件qmgr_config.txt上传到当前服务器中,使用runmqsc命令进行配置导入

runmqsc  <Queue Manager name> < qmgr_config.txt

4)源配置导入成功后,若需要将源数据队列中消息迁移到当前队列管理器中,请参考本文档4.1章节进行消息导入(若无需导入源数据,本步骤可以忽略)。命令如下:

dmpmqmsg -o <Qname> -f myfile -m  <Queue Manager name> 

参数说明:-o 指定导入队列名称

-f 指定导入源数据的文件名称

-m 指定队列管理器名称

导入完成后,查看当前队列中深度是否和源队列中相同,若相同则数据导入成功。

5)登入当前对列管理器,使用display命令查看队列、通道、监听是否正常导入,最终发送一条测试消息,确认该IBMMQ是否可以正常使用。

4. 附录

参考链接如下:

https://www.ibm.com/docs/en/ibm-mq/9.3?topic=systems-examples-using-dmpmqmsg-utility

https://www.ibm.com/docs/zh/ibm-mq/9.3?topic=reference-dmpmqmsg-queue-load-unload

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是迁移IBMMQ队列队列管理器到远程服务器的一些指令: 1. 在目标服务器安装IBMMQ 2. 在源服务器上备份队列管理器: ``` /opt/mqm/bin/dmpmqcfg -m QMGR_NAME -a > /tmp/QMGR_NAME.mqsc ``` 其中,QMGR_NAME为队列管理器的名称,/tmp/QMGR_NAME.mqsc为备份文件的路径和名称。 3. 将备份文件复制到目标服务器: ``` scp /tmp/QMGR_NAME.mqsc user@target_server:/tmp ``` 其中,user为目标服务器的用户名,target_server为目标服务器的IP地址或主机名。 4. 在目标服务器上创建队列管理器: ``` /opt/mqm/bin/crtmqm -q QMGR_NAME ``` 其中,QMGR_NAME为队列管理器的名称。 5. 在目标服务器上创建目标队列: ``` /opt/mqm/bin/runmqsc QMGR_NAME < /tmp/QMGR_NAME.mqsc ``` 其中,QMGR_NAME为队列管理器的名称,/tmp/QMGR_NAME.mqsc为备份文件的路径和名称。 6. 在源服务器上导出队列: ``` /opt/mqm/bin/dmpmqmsg -m QMGR_NAME -n QUEUE_NAME -f /tmp/QUEUE_NAME.mq4 ``` 其中,QMGR_NAME为队列管理器的名称,QUEUE_NAME为要导出的队列名称,/tmp/QUEUE_NAME.mq4为导出文件的路径和名称。 7. 将导出文件复制到目标服务器: ``` scp /tmp/QUEUE_NAME.mq4 user@target_server:/tmp ``` 其中,user为目标服务器的用户名,target_server为目标服务器的IP地址或主机名。 8. 在目标服务器上导入队列: ``` /opt/mqm/bin/crtmqm -q QMGR_NAME /opt/mqm/bin/runmqsc QMGR_NAME < /tmp/QMGR_NAME.mqsc /opt/mqm/bin/crtmqm -q QMGR_NAME /opt/mqm/bin/runmqsc QMGR_NAME < /tmp/QMGR_NAME.mqsc /opt/mqm/bin/runmqsc QMGR_NAME < /tmp/QUEUE_NAME.mq4 ``` 其中,QMGR_NAME为队列管理器的名称,/tmp/QMGR_NAME.mqsc为备份文件的路径和名称,/tmp/QUEUE_NAME.mq4为导出文件的路径和名称。 需要注意的是,以上指令仅供参考,具体操作应根据实际情况进行调整和修改。同时,建议在进行迁移前,对系统进行备份并进行充分测试,以避免数据丢失和系统故障。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kevin·zhao &&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值