开源RabbitMQ元数据迁移上云

更新时间:

本文说明如何将开源RabbitMQ集群元数据迁移到阿里云云消息队列 RabbitMQ 版实例或者实例中的某个Vhost。

前提条件

  • 导出需要迁移的元数据。更多操作,请参见迁移元数据上云

  • 创建作为元数据迁移目标的云消息队列 RabbitMQ 版实例和Vhost。

    • 元数据包括全部Vhost时,创建云消息队列 RabbitMQ 版实例。更多信息,请参见创建实例

    • 元数据为某个Vhost时,创建云消息队列 RabbitMQ 版实例和Vhost。更多信息,请参见创建实例创建Vhost

背景信息

RabbitMQ集群元数据是指RabbitMQ集群的信息,包括User、Vhost、Queue、Exchange、Binding Key、Permission、Parameter等信息。RabbitMQ集群元数据存储于RabbitMQ集群的内部数据库,在集群的各个节点之间自动复制。

集群中的每个节点都有自己的元数据副本。当某个节点的元数据变更时,所有节点的元数据都会同步更新。因此,集群的各个节点的元数据被导出时都是相同的。

RabbitMQ集群元数据可以被导出成一份JSON文件,然后被导入另一个RabbitMQ集群,实现RabbitMQ集群元数据备份。

迁移元数据上云是指将开源RabbitMQ集群的元数据迁移到阿里云云消息队列 RabbitMQ 版实例。云消息队列 RabbitMQ 版是阿里云提供的全托管消息队列服务,兼容开源RabbitMQ。您可以将RabbitMQ集群元数据导出,然后导入云消息队列 RabbitMQ 版实例,云消息队列 RabbitMQ 版会根据成功导入的元数据在目标云消息队列 RabbitMQ 版实例中创建对应的Vhost、Queue、Exchange、Binding,实现RabbitMQ集群元数据迁移上云。

您可以将全部Vhost信息导入云消息队列 RabbitMQ 版实例,也可以根据需要将某个Vhost信息导入云消息队列 RabbitMQ 版实例中的Vhost。

注意事项

  • 如果导入全部Vhost,导入的JSON格式的元数据文件必须包含Vhost信息,即必须包括vhosts列表,且exchangesqueuesbindings列表中必须包括vhost。更多信息,请参见sample.json

  • 导入的Vhost、Exchange、Queue、Binding必须符合云消息队列 RabbitMQ 版的数量限制和字符限制。更多信息,请参见使用限制

  • 同一个实例,同一时间只能执行一个任务。当一个任务执行结束后,才能继续为该实例新建任务。

元数据兼容性

由于RabbitMQ和云消息队列 RabbitMQ 版在权限管控机制等方面存在差异,部分RabbitMQ集群元数据不支持导入云消息队列 RabbitMQ 版实例。这些RabbitMQ集群元数据在导入云消息队列 RabbitMQ 版实例时会被自动忽略。云消息队列 RabbitMQ 版实例的RabbitMQ集群元数据兼容性如下:

元数据

描述

兼容

rabbit_version

RabbitMQ集群版本。

users

RabbitMQ集群用户。

重要

如果您的RabbitMQ集群使用了用户,您可以通过访问控制RAM为云消息队列 RabbitMQ 版实例实现对应的用户管理模式。更多信息,请参见 创建RAM用户

vhosts

RabbitMQ集群的Vhost。

permissions

RabbitMQ集群的用户管理Vhost的权限。

重要

如果您的RabbitMQ集群使用了用户管理Vhost的权限,您可以通过访问控制为云消息队列 RabbitMQ 版实例实现对应的用户管理Vhost的权限。更多信息,请参见RAM权限策略

parameters

RabbitMQ集群的运行时参数。

global_parameters

RabbitMQ集群的全局运行时参数。

policies

RabbitMQ集群的一类Vhost运行时参数,用于为Vhost下的Exchange和Queue设置可选参数。

重要

如果您的RabbitMQ集群使用了Vhost域运行时参数配置,您可以在 云消息队列 RabbitMQ 版控制台创建对应的Exchange和Queue时,设置相应的可选参数。Exchange和Queue的可选参数设置后不支持修改。如需修改,您需要删除后重新创建。更多信息,请参见创建Exchange创建Queue

queues

RabbitMQ集群的Queue。

exchanges

RabbitMQ集群的Exchange。

bindings

RabbitMQ集群的Exchange和Queue的绑定关系。

迁移元数据

  1. 登录云消息队列 RabbitMQ 版控制台,在左侧导航栏,单击迁移上云

  2. 迁移上云页面顶部菜单栏选择地域,然后在页面左上角单击创建任务

  3. 创建任务面板,设置相关参数,单击确定

    参数

    描述

    示例值

    实例

    元数据迁移到实例的实例名称。

    amqp-cn-7mz2cjgk****

    导入模式

    将全部Vhost或者指定Vhost的元数据导入云消息队列 RabbitMQ 版实例或者Vhost。

    • ALL:将开源RabbitMQ全部Vhost元数据导入云消息队列 RabbitMQ 版实例。

    • Vhost:将开源RabbitMQ指定Vhost元数据导入云消息队列 RabbitMQ 版实例的Vhost中。

    Vhost

    Vhost

    迁移元数据至 云消息队列 RabbitMQ 版实例指定的Vhost。 导入模式选择Vhost时,显示该参数。

    test-vhost****

    元数据

    需要迁移的元数据文件。单击选择文件,选择本地的元数据文件后,单击打开

    说明

    元数据文件的大小不超过20 MB。

    rabbit_mq-amqp-load-test011122063****

    迁移上云页面,显示已创建的迁移任务,并可以查看任务执行状态。

    关于导入的元数据的详细信息、任务执行失败的详细信息查看,请参见相关操作

相关操作

通过创建任务迁移的元数据,支持查看元数据的详细信息和任务执行失败时失败原因。

  • 查看导入成功的元数据信息

    1. 迁移上云页面,目标任务所在行目标实例列,单击实例名称。

    2. 在左侧导航栏,单击Vhost 列表,目标Vhost所在行操作列,单击详情,查看Vhost详细信息。

      更多信息,请参见查看Vhost连接详情

  • 查看执行失败的任务详情

    1. 迁移上云页面,目标任务所在行操作列,单击详情

      您也可以在迁移上云页面,目标实例所在行同步元数据数量列,单击同步数量。

    2. 迁移详情页面,单击Vhost、Exchange、Queue、Binding对应的页签,查看失败原因。