
# 中间件层迁移实施
- **Redis迁移**
  Redis服务一般分为两种大的场景：缓存和数据库存储。在缓存时，一般不用进行迁移数据，大多数场景都是重新在华为云SQL数据库中重新缓存。一般迁移数据都是针对的Redis作为数据库存储使用的场景，其中在web场景下的缓存session时，也可以不用迁移，当客户端重新登录时会在华为云DCS中再一次存储。
  

- **离线备份导入**
  备份文件导入方式当前支持迁移到Redis3.0、Redis4.0和Redis5.0；暂时不支持导入自建Redis5.0生成的rdb备份文件。无论是IDC自建Redis，还是第三方云Redis服务，只要能进行导出备份文件（AOF或RDB），就可以使用DCS迁移服务的备份文件导入方式进行迁移。此种迁移方式属于全量迁移方式，在迁移过程中产生的新增数据无法进行迁移。
  源端容量大于10G的情况下，该迁移方式的迁移效率会大大折扣，故当源端内存使用量大于10G的情况下，不建议使用该迁移方案。
  图1Redis离线迁移方案   
  ![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002177520745.png "点击放大") 
- 迁移过程如下：
  1. 源Redis数据备份导出：
     - IDC：使用第三方工具或配置策略将备份数据落盘（方法见Redis-cli或Redis-port）；
     
     - 使用备份功能将rdb文件输出到S3中。
      
  
  2. 备份数据上传至OBS：
     - EC2：使用OBS Browser/obsutil工具将备份文件（aof/rdb）上传至DCS所在的Region的OBS。
     
     - S3：创建OMS任务，将S3中的rdb备份文件迁移传输到DCS所在的Region的OBS。
      
  
  3. 创建DCS迁移任务：
     - 在DCS服务中的数据迁移模块创建迁移任务，选择备份文件导入方式，并选择OBS中源端的aof/rdb备份文件，填写其余选项，启动迁移任务。
      
  
  4. DCS数据查询对比两端数据
     - 使用redis查询命令：info keyspace
      
   

- **在线迁移**
  在线迁移不光可以迁移全量数据，还可以实时同步迁移过程中的增量数据，但是这种迁移方法，需要源端与华为云目标端之间内网互通，而且源端Redis未禁用SYNC和PSYNC命令。
  图2Redis在线迁移方案   
  ![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002142203266.png "点击放大")
  迁移过程如下：
  1. 创建DCS迁移任务：
  
  
  在DCS服务中的数据迁移模块创建迁移任务，选择在线迁移方式，根据需要选择去全量迁移或全量迁移+增量迁移方法，填写其余选项，启动迁移任务。
  2. DCS数据查询对比两端数据
  
  
  迁移任务完成后，使用redis查询命令：info keyspace
  

- **消息中间件迁移**
  消息中间件，包含Kafka、RabbitMQ、RocketMQ、IBMMQ等，消息中间件在迁移项目中，通常使用策略切换的方案来进行迁移。
  图3消息中间件迁移方案   
  ![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002142361314.png "点击放大")
  迁移步骤如下：
  1. 中断企业应用和生产消息的相关业务，直到消费组中的消息消费完毕
  
  2. 待消息消费完毕，停止消费相关业务
  
  3. 启动华为云的生产消息和消费消息的业务，接入客户流量，观察业务是否正常
   
 
