更新时间:2024-12-16 GMT+08:00

使用备份文件离线迁移自建Redis

本文档介绍如何通过备份文件导入的方式,将自建Redis离线迁移至DCS。

您需要先将自建Redis的数据备份下载到本地,然后将备份数据文件上传到华为云与DCS目标Redis实例同一账号下相同Region下的OBS桶中,最后在DCS控制台创建备份迁移任务,DCS从OBS桶中读取数据,将数据迁移到DCS的Redis中。

约束与限制

开启了SSL的目标实例不支持数据迁移,需要关闭目标实例SSL后再进行迁移,开启或关闭SSL的操作请参考配置Redis SSL数据加密传输

前提条件

  • 在迁移之前,请先阅读迁移方案概览,选择正确的迁移方案,了解当前DCS支持的在线迁移能力,选择适当的目标实例。
  • 如果是单机/主备等多DB的源端实例迁移到Proxy集群实例,Proxy集群默认不开启多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请先参考开启多DB操作开启Proxy集群多DB设置。
  • 如果是单机/主备等多DB的源端实例迁移到Cluster集群实例,Cluster集群不支持多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请将数据转存到DB0,否则会出现迁移失败,将数据转存到DB0的操作请参考使用Rump在线迁移
  • 准备源Redis的备份文件,备份文件的格式必须为.aof、.rdb、.zip或.tar.gz。
  • 如果您还没有目标Redis,请先创建目标Redis,具体操作请参考购买Redis实例
  • 如果您已有目标Redis,则不需要重复创建,为了对比迁移前后数据及预留足够的内存空间,建议在数据迁移之前清空目标实例数据,清空操作请参考清空Redis实例数据。如果没有清空实例数据,数据迁移后,目标Redis与源Redis实例重复的数据迁移后会被覆盖,源Redis没有、目标Redis有的数据会保留。

创建OBS桶并上传备份文件

如果上传的源Redis备份文件小于5GB,请执行以下步骤,通过OBS控制台创建OBS桶并上传备份文件。如果上传的源Redis备份文件大于5GB,请参考超过5GB如何上传上传备份文件。

  1. 通过OBS控制台,创建OBS桶。

    在创建过程中,以下两个参数请按要求设置,其他详细的创建步骤,请参考创建桶章节。

    1. 选择“区域”。

      OBS桶所在区域必须跟DCS目标Redis实例所在区域相同。

    2. 设置“存储类别”,当前支持“标准存储”、“低频访问存储”和“归档存储”。

      请不要选择“归档存储”,否则会导致备份文件迁移失败。

  2. 在OBS管理控制台的桶列表中,单击1中创建的桶名称,进入“概览”页面。
  3. 在左侧导航栏,单击“对象”。
  4. 在“对象”页签下,单击“上传对象”,系统弹出“上传对象”对话框。
  5. 指定对象的存储类别。

    请不要选择“归档存储”,否则会导致备份文件迁移失败。

  6. 上传对象。

    您可以拖拽本地文件或文件夹至“上传对象”区域框内添加待上传的文件,也可以通过单击“上传对象”区域框内的“添加文件”,选择本地文件添加。

    单次最多支持100个文件同时上传,总大小不超过5GB。

    图1 上传对象

  7. 选择服务端加密方式,支持选择“SSE-KMS”、“SSE-OBS”或“不开启加密”,详情请参见服务端加密
  8. 单击“上传”。

创建迁移任务

  1. 单击控制台左上角服务列表,选择“应用中间件 > 分布式缓存服务 Redis版”,进入分布式缓存服务。
  2. 单击左侧菜单栏的“数据迁移”,进入数据迁移页面。
  3. 单击右上角的“创建备份导入任务”。
  4. 设置迁移任务名称和描述。

    任务名称请以字母开头,长度不小于4位且不超过64位。任务名称只能包含字母、数字、中划线、下划线。

  5. “源Redis”区域中,“数据来源”选择“OBS桶”,在“OBS桶名”中选择已上传备份文件的OBS桶。
  6. 根据需要选择“源DB”,您可以指定源端备份文件某一个DB中的数据,例如输入5时,则只迁移DB5中的数据;无需指定DB时,请保持置空,即迁移全部DB。
  7. 选择“是否多DB Proxy集群”,只有当源Redis数据为DCS Proxy集群实例,且开启了多DB(Proxy实例multi-db参数值为yes)时选择。
  8. 单击“添加备份文件”,选择需要迁移的备份文件。
  9. 在“目标Redis”区域,选择前提条件中准备的“目标Redis实例”。
  10. 如果目标Redis是密码访问模式,请输入密码后,单击“测试连接”,检查密码是否正确。免密访问的实例,请直接单击“测试连接”。
  11. 根据需要选择“目标DB”,您可以指定迁移数据到目标Redis的某一个DB中,例如输入5时,则迁移到目标Redis的DB5;不填表示不指定,默认迁移到与源端相同的DB中。

    • 当源端为多DB,目标端为单DB的DCS实例时(单DB的实例只有DB0),需要源端的所有数据都在DB0,或者指定仅迁移源端某一DB中的数据并将目标端DB指定为0,否则会迁移失败。
    • DCS Redis的DB数请参见Redis实例是否支持多DB方式?

  12. 单击“立即创建”。
  13. 确认迁移信息,然后单击“提交”,开始创建迁移任务。

    可返回迁移任务列表中,观察对应的迁移任务的状态,迁移成功后,任务状态显示“成功”。

迁移后验证

数据导入成功后,请连接DCS缓存实例,通过info命令,确认数据是否已按要求成功导入。连接Redis的方法请参考Redis-cli客户端连接Redis

如果导入不成功,请检查操作步骤,如果是导入命令不正确,建议使用flushall或者flushdb命令清理目标实例中的缓存数据,修改导入命令后重新导入。