开源RabbitMQ元数据迁移上云
本文说明如何将开源RabbitMQ集群元数据迁移到阿里云云消息队列 RabbitMQ 版实例或者实例中的某个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
列表,且exchanges
、queues
、bindings
列表中必须包括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的绑定关系。 | 是 |
迁移元数据
登录云消息队列 RabbitMQ 版控制台,在左侧导航栏,单击迁移上云。
在迁移上云页面顶部菜单栏选择地域,然后在页面左上角单击创建任务。
在创建任务面板,设置相关参数,单击确定。
参数
描述
示例值
实例
元数据迁移到实例的实例名称。
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****
在迁移上云页面,显示已创建的迁移任务,并可以查看任务执行状态。
关于导入的元数据的详细信息、任务执行失败的详细信息查看,请参见相关操作。
相关操作
通过创建任务迁移的元数据,支持查看元数据的详细信息和任务执行失败时失败原因。
查看导入成功的元数据信息
在迁移上云页面,目标任务所在行目标实例列,单击实例名称。
在左侧导航栏,单击Vhost 列表,目标Vhost所在行操作列,单击详情,查看Vhost详细信息。
更多信息,请参见查看Vhost连接详情。
查看执行失败的任务详情
在迁移上云页面,目标任务所在行操作列,单击详情。
您也可以在迁移上云页面,目标实例所在行同步元数据数量列,单击同步数量。
在迁移详情页面,单击Vhost、Exchange、Queue、Binding对应的页签,查看失败原因。