[IBM i]

IBM i 上从单个实例迁移到多实例队列管理器

要将单个实例队列管理器迁移到多实例队列管理器,在 IBM® i上,必须将队列管理器数据移至共享目录,并在另外两个服务器上重新配置队列管理器。

开始之前

在此任务中,必须检查运行多实例队列管理器的先决条件。 某些环境已使用多实例队列管理器进行测试,并且已知工作。 IBM i 已使用多实例队列管理器进行测试,并且已知工作。 有关已测试环境的列表,请参阅 IBM MQ多实例队列管理器文件系统的测试语句。 支持声明包含其列出的每个环境的详细版本和先决条件信息。 其他环境可能起作用; IBM MQ 随附了测试工具,可帮助您限定其他环境。

您必须有三个服务器才能运行多实例队列管理器。 一个服务器具有用于存储队列管理器数据和日志的共享文件系统。 其他服务器运行队列管理器的活动实例和备用实例。

关于本任务

您具有要转换为多实例队列管理器的单实例队列管理器。 队列管理器转换本身很简单,但您必须执行其他任务来创建完全自动化的生产环境。

您必须检查多实例队列管理器的先决条件,设置环境并进行检查。 必须设置监视和管理系统以检测多实例队列管理器是否已失败并自动重新启动。 然后,您可以找出导致重新启动的原因,对其进行补救,然后重新启动备用数据库。 您还必须修改应用程序或应用程序连接到队列管理器的方式,以便它们可以在队列管理器重新启动后恢复处理。

过程

  1. 检查要运行队列管理器的操作系统,以及存储队列管理器数据和日志的文件系统。 检查它们是否可以运行多实例队列管理器。
    1. 咨询Testing statement for IBM MQ multi-instance queue manager file systems. 查看操作系统和文件系统的组合是否经过测试并能够运行多实例队列管理器。
      • 共享文件系统必须提供基于租赁的锁定,以足以运行多实例队列管理器。 基于租赁的锁定是某些共享文件系统的最新功能,在某些情况下需要修订。 支持声明为您提供基本信息。
    2. 运行 amqmfsck 以验证是否正确配置了文件系统。
      • 文件系统有时配置为具有高于数据完整性的性能。 检查文件系统配置很重要。 来自 amqmfsck 工具的否定报告告诉您设置不足。 肯定结果是指示文件系统已足够,但结果不是文件系统已足够的明确语句。 这是一个很好的迹象。
    3. 运行技术注释 "测试共享文件系统与IBM MQ多实例队列管理器的兼容性"中提供的完整性检查应用程序。
      • 检查应用程序将测试队列管理器是否正确重新启动。
  2. 配置用户和组,以便能够从正在运行队列管理器实例的每个服务器访问网络文件系统上的共享。
    IBM iQMQMQMQMADM以及被授予共享访问权的任何其他用户概要文件上,必须在所有服务器上具有相同的密码
  3. 在具有正确访问许可权的网络文件系统上设置共享目录。
    • 例如,在名为 MQHA 的共享上创建一个具有子目录 datalogs的根目录。 每个队列管理器都在 datalogs下创建自己的数据和日志目录。 使用以下属性创建 MQHA :
    • IBM i上,遵循指示信息以使用 NetServer创建网络共享。
  4. 将队列管理器数据和日志复制到共享。
    • 您可以选择手动复制文件,方法是执行备份队列管理器的过程。 选择下列其中一种方法:
    • 遵循 IBM MQ for IBM i 数据备份中的指示信息,将队列管理器数据复制到共享。 如果为此队列管理器指定了 DataPath 配置属性,那么必须使用此方法。
    • 停止队列管理器,然后输入命令,
      hamvmqm /m /dd share\data /dd share\logs
      
      其中 share 是您在步骤 3中创建的数据和日志的位置。
  5. 更新存储在当前队列管理器服务器上的队列管理器配置信息。
    • 如果通过运行 hamvmqm 命令移动了队列管理器数据和日志,那么该命令已为您正确修改了配置信息。
    • 如果手动移动了队列管理器数据和日志,那么必须完成以下步骤。
    • IBM i上,
      1. 修改位于 share上的队列管理器 qm.ini 文件中的 Log: 节:
        
        LogPath= share/logs/QMgrName
        
      2. 修改 IBM MQ mqs.ini 文件中的 QueueManager: 节,该文件通常位于 IBM i上的 /QIBM/UserData/mqm 目录中:
        DataPath= share/data/QMgrName
        
    其中, QMgrNameIBM imqs.ini 文件的 QueueManager: 节中的 Directory 名称。 share 是将数据和日志移动到的共享位置。
  6. 将队列管理器配置信息添加到新的队列管理器服务器。
    1. 运行 dspmqinf 命令以显示在先前发行版中运行队列管理器的服务器上的队列管理器信息。
      dspmqinf -o command QMgrName
      

      命令输出已格式化就绪,可创建队列管理器配置。

      addmqinf -s QueueManager -v Name= QMgrName -v Directory= QMgrName -v Prefix=d:\var\mqm Datapath= \share\data\QMgrName
    2. 在其他服务器上创建队列管理器配置。
      • 运行从先前输出复制的 addmqinf 命令
  7. 将新服务器的网络地址添加到客户机和通道定义中的连接名称。
    1. 查找引用服务器的所有客户机,发送方和请求者 TCPIP 设置。
      • 客户机设置可能在客户机定义表 (CCDT) ,环境变量, Java 属性文件或客户机代码中。
      • 集群通道从其集群接收方通道自动发现队列管理器的连接名称。 只要集群接收方通道名称为空或省略, TCPIP 就会发现托管队列管理器的服务器的 IP 地址。
    2. 修改其中每个连接的连接名称,以包括托管多实例队列管理器的两个服务器的 TCPIP 地址。
      • 例如,将
      echo DISPLAY CHANNEL(ENGLAND) CONNAME | runmqsc QM1
      
      5724-H72 (C) Copyright IBM Corp. 1994, 2026.  ALL RIGHTS RESERVED.
      
      
      Starting MQSC for queue manager QM1.
      
      
      1: DISPLAY CHANNEL(ENGLAND) CONNAME
      
      
      AMQ8414: Display Channel details.
      
      
      CHANNEL(ENGLAND) CHLTYPE(SDR)
      
      
      CONNAME(LONDON)
      
      
      • 输入:
      echo ALTER CHANNEL(ENGLAND) CHLTYPE(SDR) CONNAME('LONDON, BRISTOL') | runmqsc QM1
      
  8. 更新监视和管理过程以检测队列管理器是否正在重新启动。
  9. 更新要自动重新连接的客户机应用程序 (如果适用)。
  10. 更新要作为队列管理器服务启动的 IBM MQ 应用程序的启动过程。
  11. 启动队列管理器的每个实例,允许它们具有高可用性。
    • 启动的队列管理器的第一个实例将成为活动实例。
    • 在每个服务器上发出该命令两次,一次。
    strmqm -x QMgrName
    

后续操作

要从多实例队列管理器中获取最高可用性,必须将客户机应用程序设计为可重新连接,并将服务器应用程序设计为可重新启动; 请参阅 应用程序恢复