分布式消息服务RabbitMQ版
分布式消息服务RabbitMQ版
- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- 开发指南
- API参考
- SDK参考
-
常见问题
-
实例问题
- RabbitMQ使用的版本是多少?
- RabbitMQ实例SSL连接的协议版本号是多少?
- 创建实例时为什么无法查看子网和安全组等信息?
- RabbitMQ集群实例如何均衡分发请求到每个虚拟机?
- RabbitMQ实例集群内部的队列是否有冗余备份?
- RabbitMQ实例是否支持持久化,如何定时备份数据?
- RabbitMQ实例开启SSL后,证书怎么获取?
- RabbitMQ实例的SSL开关是否支持修改?
- RabbitMQ实例是否支持扩容?
- RabbitMQ支持双向认证吗?
- RabbitMQ支持升级CPU和内存吗?
- 如何关闭RabbitMQ的WebUI?
- 实例是否支持修改可用区?
- 如何获取region id?
- 为什么不能选择2个可用区?
- 单机RabbitMQ实例如何变更为集群实例?
- RabbitMQ实例创建后,能修改VPC和子网吗?
- 连接问题
- 消息问题
- 监控告警问题
-
实例问题
-
更多文档
-
用户指南 (阿布扎比区域)
- 产品简介
- 快速入门
- RabbitMQ业务使用流程
- 权限管理
- 购买RabbitMQ实例
- 配置Vhost
- 连接实例
- 管理消息
- 配置高级特性
- 管理实例
- 变更RabbitMQ实例规格
- 迁移RabbitMQ业务
- 申请扩大RabbitMQ配额
- 查看监控指标与配置告警
- 查看RabbitMQ审计日志
-
常见问题
-
实例问题
- RabbitMQ使用的版本是多少?
- RabbitMQ实例SSL连接的协议版本号是多少?
- 创建实例时为什么无法查看子网和安全组等信息?
- RabbitMQ集群实例如何均衡分发请求到每个虚拟机?
- RabbitMQ实例集群内部的队列是否有冗余备份?
- RabbitMQ实例是否支持持久化,如何定时备份数据?
- RabbitMQ实例开启SSL后,证书怎么获取?
- RabbitMQ实例的SSL开关是否支持修改?
- RabbitMQ实例是否支持扩容?
- RabbitMQ支持双向认证吗?
- RabbitMQ支持升级CPU和内存吗?
- 如何关闭RabbitMQ的WebUI?
- 实例是否支持修改可用区?
- 如何获取region id?
- 为什么不能选择2个可用区?
- 单机RabbitMQ实例如何变更为集群实例?
- RabbitMQ实例创建后,能修改VPC和子网吗?
- 连接问题
- 消息问题
- 监控告警问题
-
实例问题
- 修订记录
- API参考 (阿布扎比区域)
-
用户指南(吉隆坡区域)
- 产品简介
- 权限管理
- 环境准备
- 购买实例
- 连接实例
- 实例日常操作
- 调整资源配额
- 监控
- 云审计服务支持的关键操作
-
常见问题
-
实例问题
- RabbitMQ使用的版本是多少?
- RabbitMQ实例SSL连接的协议版本号是多少?
- 创建实例时为什么无法查看子网和安全组等信息?
- 重启RabbitMQ实例时,若其中一台RabbitMQ重启失败,会如何处理?
- RabbitMQ集群实例如何均衡分发请求到每个虚拟机?
- RabbitMQ实例集群内部的队列是否有冗余备份?
- RabbitMQ实例是否支持持久化,如何定时备份数据?
- RabbitMQ实例开启SSL后,证书怎么获取?
- RabbitMQ实例的SSL开关是否支持修改?
- RabbitMQ实例是否支持扩容?
- RabbitMQ实例是否支持MQTT协议?
- 如何清空队列数据?
- RabbitMQ支持升级CPU和内存吗?
- 如何关闭RabbitMQ的WebUI?
- 实例是否支持修改可用区?
- 连接问题
- 插件问题
- 消息问题
- 监控告警问题
-
实例问题
- 修订记录
- API参考(吉隆坡区域)
-
用户指南 (阿布扎比区域)
- 通用参考
本文导读
链接复制成功!
迁移RabbitMQ业务
RabbitMQ业务迁移主要涉及到以下两个场景:
- 将线下单机或集群实例迁移到线上RabbitMQ实例。
- 将低版本的RabbitMQ实例迁移到高版本的RabbitMQ实例,例如将3.7.17版本的RabbitMQ实例迁移到3.8.35版本的RabbitMQ实例。
迁移原理
在实际业务场景中,RabbitMQ实例存在多个生产者和消费者,在业务迁移时,不会迁移数据,只是通过逐个增加/关闭消费者、生产者的方式迁移实例,这种迁移方式可以实现业务无感迁移。
前提条件
已创建目标RabbitMQ实例,具体请参考购买RabbitMQ实例。
实施方案(双读模式迁移实例)
- 将原RabbitMQ实例的元数据迁移到目标RabbitMQ实例。
图1 迁移元数据
迁移步骤如下:
- 登录原RabbitMQ的WebUI页面,在“Overview”页签中,单击“Download broker definitions”,导出元数据。
图2 导出元数据
- 登录目标RabbitMQ的WebUI页面,在“Overview”页签中,单击“选择文件”,选择1.a中导出的元数据,单击“Upload broker definitions”,上传元数据。
图3 导入元数据
- 登录原RabbitMQ的WebUI页面,在“Overview”页签中,单击“Download broker definitions”,导出元数据。
- 为目标RabbitMQ实例添加新的消费者,准备消费目标实例的消息。
图4 添加新消费者
- 为目标RabbitMQ实例添加新的生产者,下线原RabbitMQ实例的生产者,旧的消费者继续消费原RabbitMQ实例中的消息。
图5 迁移生产者
- 旧的消费者消费完原RabbitMQ实例的全部消息后,下线旧的消费者和原RabbitMQ实例。
图6 下线旧的消费者和原RabbitMQ实例
迁移后检查
通过以下方法,确认原实例是否消费完成:
- 在原RabbitMQ实例的WebUI页面查看,如图7所示。
Overview视图中,可消费消息数(Ready)以及未确认的消息数(Unacked)都为0时,说明消费完成。
- 调用API查看。
curl -s -u username:password -XGET http://ip:port/api/overview
参数说明:
- username:原实例登录RabbitMQ WebUI的账号
- password:原实例登录RabbitMQ WebUI的密码
- ip:原实例登录RabbitMQ WebUI的IP地址
- port:原实例登录RabbitMQ WebUI的端口号
回显信息中“messages_ready”和“messages_unacknowledged”都为0时,说明消费完成。
图8 回显信息