
# 迁移RabbitMQ业务
RabbitMQ业务迁移主要涉及到以下两个场景：
- 将线下单机或集群实例迁移到线上RabbitMQ实例。
- 将低版本的RabbitMQ实例迁移到高版本的RabbitMQ实例，例如将3.7.17版本的RabbitMQ实例迁移到3.8.35版本的RabbitMQ实例。
#### 迁移原理
在实际业务场景中，RabbitMQ实例存在多个生产者和消费者，在业务迁移时，不会迁移数据，只是通过逐个增加/关闭消费者、生产者的方式迁移实例，这种迁移方式可以实现业务无感迁移。
#### 前提条件
已创建目标RabbitMQ实例，具体请参考[购买RabbitMQ实例](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq-ug-180604004.html)。
#### 实施方案（双读模式迁移实例）
1. 将原RabbitMQ实例的元数据迁移到目标RabbitMQ实例。 
   图1迁移元数据   
   ![](https://support.huaweicloud.com/usermanual-rabbitmq/zh-cn_image_0000001947483362.png)
   **迁移步骤如下：**
   1. 登录原RabbitMQ的WebUI页面，在"Overview"页签中，单击"Download broker definitions"，导出元数据。
      图2导出元数据   
      ![](https://support.huaweicloud.com/usermanual-rabbitmq/zh-cn_image_0000001975603045.png "点击放大") 
   
   2. 登录目标RabbitMQ的WebUI页面，在"Overview"页签中，单击"选择文件"，选择[上一步]中导出的元数据，单击"Upload broker definitions"，上传元数据。
      图3导入元数据   
      ![](https://support.huaweicloud.com/usermanual-rabbitmq/zh-cn_image_0000001947483366.png "点击放大") 
   
   
   
   
2. 为目标RabbitMQ实例添加新的消费者，准备消费目标实例的消息。 
   图4添加新消费者   
   ![](https://support.huaweicloud.com/usermanual-rabbitmq/zh-cn_image_0000001975762897.png)
   
   
3. 为目标RabbitMQ实例添加新的生产者，下线原RabbitMQ实例的生产者，旧的消费者继续消费原RabbitMQ实例中的消息。 
   图5迁移生产者   
   ![](https://support.huaweicloud.com/usermanual-rabbitmq/zh-cn_image_0000001947483370.png)
   
   
4. 旧的消费者消费完原RabbitMQ实例的全部消息后，下线旧的消费者和原RabbitMQ实例。 
   图6下线旧的消费者和原RabbitMQ实例   
   ![](https://support.huaweicloud.com/usermanual-rabbitmq/zh-cn_image_0000001975603053.png)
   
   
 
#### 迁移后检查
通过以下方法，确认原实例是否消费完成：
- 在原RabbitMQ实例的WebUI页面查看，如[图7]所示。
  Overview视图中，可消费消息数（Ready）以及未确认的消息数（Unacked）都为0时，说明消费完成。
  图7RabbitMQ WebUI   
  ![](https://support.huaweicloud.com/usermanual-rabbitmq/zh-cn_image_0000001975762913.png "点击放大") 
- 调用API查看。
  ```
  curl -s -u username:password -XGET http://ip:port/api/overview
  ```
  表1参数说明 
  | 参数名称     | 说明                        |
  |:---|:---|
  | username | 原实例登录RabbitMQ WebUI的账号。   |
  | password | 原实例登录RabbitMQ WebUI的密码。   |
  | ip       | 原实例登录RabbitMQ WebUI的IP地址。 |
  | port     | 原实例登录RabbitMQ WebUI的端口号。  |
     
  回显信息中"**messages_ready** "和"**messages_unacknowledged** "都为**0**时，说明消费完成。
  图8回显信息   
  ![](https://support.huaweicloud.com/usermanual-rabbitmq/zh-cn_image_0000002082494929.png "点击放大") 
 
