如何使用saveqmgr和dmpmqcfg备份队列管理器时排除系统对象?
如何在使用saveqmgr和dmpmqcfg备份队列管理器时排除系统对象?
我经常用这两个命令做IBM MQ队列管理器的备份,刚好能给你讲清楚怎么排除系统对象,分两个命令分别拆解:
使用dmpmqcfg排除系统对象
dmpmqcfg本身就提供了专门的参数来简化系统对象的排除,用起来非常直观:
- 核心参数:
-x(也可以用长格式--exclude-system),用来指定要排除的系统对象前缀或类型- 最常用的用法:直接排除所有以
SYSTEM开头的系统对象(队列、通道、进程等全部包含)dmpmqcfg -m YOUR_QMGR_NAME -x SYSTEM - 精细控制:如果只想排除某类系统对象(比如只排除系统队列,保留系统通道),可以指定对象类型+前缀:
dmpmqcfg -m YOUR_QMGR_NAME -x queue=SYSTEM.*
- 最常用的用法:直接排除所有以
- 组合技巧:如果只想备份自定义的特定对象类型,比如只备份业务队列和主题,可以结合
-t(指定对象类型)和-x参数:dmpmqcfg -m YOUR_QMGR_NAME -t queue,topic -x SYSTEM
使用saveqmgr排除系统对象
saveqmgr没有dmpmqcfg那样的一键排除系统对象的快捷参数,但可以通过排除模式灵活实现:
- 使用
-e参数指定排除的对象匹配规则,支持通配符*- 排除所有SYSTEM开头的对象:
saveqmgr -m YOUR_QMGR_NAME -e "SYSTEM.*" -f backup_file.txt - 精准排除某类对象:比如只排除SYSTEM队列,其他系统对象保留:
saveqmgr -m YOUR_QMGR_NAME -e "QUEUE(SYSTEM.*)" -f backup_file.txt
- 排除所有SYSTEM开头的对象:
- 反向选择思路:如果你的自定义对象都有统一前缀(比如
APP_),可以用-i参数只包含这些对象,间接排除系统对象:saveqmgr -m YOUR_QMGR_NAME -i "APP_*" -f backup_file.txt
通用注意事项
- 执行命令前,确保你属于
mqm组或者拥有足够的队列管理器权限,否则可能无法读取全部对象信息 - 可以先去掉
-f参数,直接把输出打印到控制台,验证是否已经正确排除了系统对象,没问题再写入文件 - 不同版本的IBM MQ可能参数略有差异,建议直接查看本地手册页确认细节:
man dmpmqcfg或man saveqmgr
内容的提问来源于stack exchange,提问作者shrutireddy
相关产品推荐
相关产品推荐

