
# 使用备份文件离线迁移其他云厂商Redis
本文档介绍如何通过备份文件导入的方式，将其他云厂商Redis离线迁移至DCS。
您需要先将源Redis的数据备份下载到本地，然后将备份数据文件上传到华为云与DCS目标Redis实例同一账号下相同Region下的OBS桶中，最后在DCS控制台创建备份迁移任务，DCS从OBS桶中读取数据，将数据迁移到DCS的Redis中。
#### 约束与限制
- 开启了SSL的目标实例不支持数据迁移，需要关闭目标实例SSL后再进行迁移，开启或关闭SSL的操作请参考[配置Redis SSL数据加密传输](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-023129.html)。
- 如果目标实例规格小于源实例规格，可能会导致离线迁移失败。
 
#### 前提条件
- 在迁移之前，请先阅读[迁移方案概览](https://support.huaweicloud.com/usermanual-dcs/dcs-migration-090626002.html)，选择正确的迁移方案，了解当前DCS支持的在线迁移能力，选择适当的目标实例。
- 如果是单机/主备等多DB的源端实例迁移到Proxy集群实例，Proxy集群默认不开启多DB，仅有一个DB0，请先确保源端实例DB0以外的DB是否有数据，如果有，请先参考[开启多DB操作](https://support.huaweicloud.com/dcs_faq/dcs-faq-210804001.html#section0)开启Proxy集群多DB设置。
- 如果是单机/主备等多DB的源端实例迁移到Cluster集群实例，Cluster集群不支持多DB，仅有一个DB0，请先确保源端实例DB0以外的DB是否有数据，如果有，请将数据转存到DB0，否则会出现迁移失败，将数据转存到DB0的操作请参考[使用Rump在线迁移](https://support.huaweicloud.com/usermanual-dcs/dcs-migration-090626001.html)。
- 准备源Redis的备份文件，备份文件的格式必须为.aof、.rdb、.zip或.tar.gz。
- 如果您还没有目标Redis，请先创建目标Redis，具体操作请参考[购买Redis实例](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0713002.html)。
- 如果您已有目标Redis，则不需要重复创建，为了对比迁移前后数据及预留足够的内存空间，建议在数据迁移之前清空目标实例数据，清空操作请参考[清空Redis实例数据](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312018.html)。如果没有清空实例数据，数据迁移后，目标Redis与源Redis实例重复的数据迁移后会被覆盖，源Redis没有、目标Redis有的数据会保留。
 
#### 创建OBS桶并上传备份文件
如果上传的源Redis备份文件小于5GB，请执行以下步骤，通过OBS控制台创建OBS桶并上传备份文件。如果上传的源Redis备份文件大于5GB，请参考[超过5GB如何上传](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829661.html)上传备份文件。
1. 通过OBS控制台，创建OBS桶。
   
   在创建过程中，以下两个参数请按要求设置，其他详细的创建步骤，请参考[创建桶](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829088.html)章节。
   1. 选择"区域"。 OBS桶所在区域必须跟DCS目标Redis实例所在区域相同。
      
   
   2. 设置"存储类别"，当前支持"标准存储"、"低频访问存储"和"归档存储"。 请不要选择"归档存储"，否则会导致备份文件迁移失败。
      
   
   
   
   
2. 在OBS管理控制台的桶列表中，单击[1]中创建的桶名称，进入"概览"页面。
3. 在左侧导航栏，单击"对象"。
4. 在"对象"页签下，单击"上传对象"，系统弹出"上传对象"对话框。
5. 指定对象的存储类别。 
   请不要选择"归档存储"，否则会导致备份文件迁移失败。
   
   
6. 上传对象。 
   您可以拖拽本地文件或文件夹至"上传对象"区域框内添加待上传的文件，也可以通过单击"上传对象"区域框内的"添加文件"，选择本地文件添加。
   单次最多支持100个文件同时上传，总大小不超过5GB。
   图1上传对象   
   ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000001999685385.png "点击放大")
   
   
7. 选择服务端加密方式，支持选择"SSE-KMS"、"SSE-OBS"或"不开启加密"，详情请参见[服务端加密](https://support.huaweicloud.com/usermanual-obs/obs_03_0088.html)。
8. 单击"上传"。
 
#### 创建迁移任务
1. 登录[分布式缓存服务管理控制台](https://console.huaweicloud.com/dcs)。
2. 单击左侧菜单栏的"数据迁移"，进入数据迁移页面。
3. 单击右上角的"创建备份导入任务"。
4. 设置迁移任务名称和描述。 
   任务名称请以字母开头，长度不小于4位且不超过64位。任务名称只能包含字母、数字、中划线、下划线。
   
   
5. "源数据"区域中，"数据来源"选择"OBS桶"，在"OBS桶名"中选择已上传备份文件的OBS桶。
6. 根据需要指定"源DB（可选）"，您可以指定源端备份文件某一个DB中的数据，例如输入5时，则只迁移DB5中的数据；无需指定DB时，请保持置空，即迁移全部DB。
7. 选择"是否多DB Proxy集群"，只有当源Redis数据为DCS Proxy集群实例，且开启了多DB（Proxy实例multi-db参数值为yes）时选择。
8. 单击"添加备份文件"，选择需要迁移的备份文件。 
   图2备份文件导入   
   ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000001804200926.png "点击放大")
   
   
   
9. 在"目标数据"区域，选择[前提条件](https://support.huaweicloud.com/usermanual-dcs/dcs-migration-190703002.html#dcs-migration-190703002__zh-cn_topic_0177563520_section393611177)中准备的"目标Redis实例"。
10. 如果目标Redis是密码访问模式，请输入密码后，单击"测试连接"，检查密码是否正确。免密访问的实例，请直接单击"测试连接"。
11. 根据需要指定"目标DB（可选）"，您可以指定迁移数据到目标Redis的某一个DB中，例如输入5时，则迁移到目标Redis的DB5；不填表示不指定，默认迁移到与源端相同的DB中。 
    ![](https://support.huaweicloud.com/usermanual-dcs/public_sys-resources/caution_3.0-zh-cn.png)
    当源端为多DB，目标端为单DB的DCS实例时（单DB的实例只有DB0），需要源端的所有数据都在DB0，或者指定仅迁移源端某一DB中的数据并将目标端DB指定为0，否则会迁移失败。DCS Redis的DB数请参见[Redis实例是否支持多DB方式？](https://support.huaweicloud.com/dcs_faq/dcs-faq-0427028.html)。
    
    
12. 单击"立即创建"。
13. 确认迁移信息，然后单击"提交"，开始创建迁移任务。 
    可返回迁移任务列表中，观察对应的迁移任务的状态，迁移成功后，任务状态显示"成功"。
    
    
 
#### 迁移后验证
数据迁移前如果目标Redis中数据为空，迁移完成后，可以通过以下方式确认数据的完整性：
1. 连接源Redis和目标Redis。连接Redis的方法请参考[Redis-cli客户端连接Redis](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0713004.html)。
2. 输入info keyspace，查看keys参数和expires参数的值。 ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0293255709.png)
   
3. 对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致，则表示数据完整，迁移正常。
 
#### 相关文档
- 数据迁移相关的API文档，请参见[数据迁移](https://support.huaweicloud.com/api-dcs/DataMigrationManagement.html)。
- 数据迁移相关的常见问题：
  - [DCS实例是否兼容低版本Redis迁移到高版本](https://support.huaweicloud.com/dcs_faq/dcs-migration-0715005.html)
  
  - [迁移或导入备份数据时，相同的Key会被覆盖吗？](https://support.huaweicloud.com/dcs_faq/dcs-faq-11185.html)
  
  - [迁移故障处理](https://support.huaweicloud.com/dcs_faq/dcs-migration-022052301.html)
  
  - [数据迁移失败问题排查](https://support.huaweicloud.com/dcs_faq/dcs-migration-0715004.html)
  
  - [Cluster集群实例使用内置key且跨slot的Lua脚本时迁移失败](https://support.huaweicloud.com/dcs_faq/dcs_07_0001.html)
  
  - [一个数据迁移能迁移到多个目标实例么？](https://support.huaweicloud.com/dcs_faq/dcs-faq-220317.html)
   
 
