### IBM Websphere MQ 教程之备份与恢复
#### 实验目的
本教程旨在让学员深入了解IBM Websphere MQ中的消息生命周期管理及其备份恢复机制。通过一系列实践操作,学员能够掌握如何创建线性日志队列管理器、向本地队列发送不同类型的持久性消息以及如何在队列受损的情况下进行恢复。
#### 核心知识点
1. **创建线性日志队列管理器**
- 创建新的队列管理器QM.02:`crtmqm –l QM.02`
- 启动队列管理器:`Strmqm QM.02`
2. **定义队列属性**
- 创建两个本地队列QL.A和QL.B,其中默认持久性设置为“YES”:
`DEFQL(QL.A) DEFPSIST(YES) REPLACE`
`DEFQL(QL.B) DEFPSIST(YES) REPLACE`
- 创建两个别名队列QA.A和QA.B,分别指向QL.A和QL.B,并且默认持久性设置为“NO”:
`DEFQA(QA.A) TARGQ(QL.A) DEFPSIST(NO) REPLACE`
`DEFQA(QA.B) TARGQ(QL.B) DEFPSIST(NO) REPLACE`
3. **发送消息到队列**
- 使用AMQSPUT程序向本地队列QL.A、QL.B以及别名队列QA.A、QA.B发送混合的持久性和非持久性消息。例如:
`amqsput QL.A [qmgrname]`
`amqsput QA.A [qmgrname]`
`amqsput QL.B [qmgrname]`
`amqsput QA.B [qmgrname]`
4. **浏览消息**
- 使用AMQSBGC程序查看队列中的消息:
`amqsbcg QL.A [qmgrname]`
5. **停止并重新启动队列管理器**
- 停止队列管理器:`endmqm [-i] QM.02`
- 重新启动队列管理器:`strmqm QM.02`
6. **检查消息保留情况**
- 重新启动后,使用AMQSBGC应用程序浏览队列QL.A,确认只有持久性消息被保留下来:
`amqsbcg QL.A [qmgrname]`
7. **介质恢复(Mediarecovery)**
- 对队列QL.B执行rcdmqimg命令以创建队列图像:`rcdmqimg -m QM.02 -t ql QL.B`
- 删除队列QL.B的文件:
在文件系统中定位并删除对应文件,例如在路径`WebSphereMQ\Qmgrs\QM!02\queues\QL!B\Q`下。
- 显示队列QL.B的属性以确认其仍然存在但已损坏:
`display queue(QL.B)`
- 浏览队列QL.B,验证队列已损坏:
`amqsbcg QL.B [qmgrname]`
- 尝试再次显示队列QL.B的属性,确认队列已损坏:
`display queue(QL.B)`
- 从队列图像中恢复队列QL.B:`rcrmqobj -m QM.02 -t ql QL.B`
- 检查队列属性是否恢复正常:
`display queue(QL.B)`
- 浏览队列QL.B,确保消息已经恢复:
`amqsbcg QL.B [qmgrname]`
8. **清理环境**
- 停止并删除队列管理器:
`endmqm [-i] QM.02`
`dltmqm QM.02`
#### 实验总结
通过本实验的学习,我们不仅掌握了IBM Websphere MQ的基本操作流程,如创建队列管理器、定义队列属性等,还深入理解了如何进行消息的持久化管理和队列的备份恢复过程。这对于确保消息传递系统的稳定运行至关重要。特别是介质恢复部分,演示了在队列文件损坏的情况下如何通过先前创建的队列图像进行数据恢复,这对于保障业务连续性和数据安全性具有重要意义。