使用备份文件离线迁移自建Redis
本文档介绍如何通过备份文件导入的方式,将自建Redis离线迁移至DCS。
您需要先将自建Redis的数据备份下载到本地,然后将备份数据文件上传到华为云与DCS目标Redis实例同一账号下相同Region下的OBS桶中,最后在DCS控制台创建备份迁移任务,DCS从OBS桶中读取数据,将数据迁移到DCS的Redis中。
前提条件
- 在迁移之前,请先阅读迁移方案概览,选择正确的迁移方案,了解当前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如何上传上传备份文件。
- 通过OBS控制台,创建OBS桶。
在创建过程中,以下两个参数请按要求设置,其他详细的创建步骤,请参考创建桶章节。
- 在OBS管理控制台的桶列表中,单击1中创建的桶名称,进入“概览”页面。
- 在左侧导航栏,单击“对象”。
- 在“对象”页签下,单击“上传对象”,系统弹出“上传对象”对话框。
- 指定对象的存储类别。
请不要选择“归档存储”,否则会导致备份文件迁移失败。
- 上传对象。
您可以拖拽本地文件或文件夹至“上传对象”区域框内添加待上传的文件,也可以通过单击“上传对象”区域框内的“添加文件”,选择本地文件添加。
单次最多支持100个文件同时上传,总大小不超过5GB。
图1 上传对象
- 选择服务端加密方式,支持选择“SSE-KMS”、“SSE-OBS”或“不开启加密”,详情请参见服务端加密。
- 单击“上传”。
创建迁移任务
- 单击控制台左上角服务列表,选择“应用中间件 > 分布式缓存服务 Redis版”,进入分布式缓存服务。
- 单击左侧菜单栏的“数据迁移”,进入数据迁移页面。
- 单击右上角的“创建备份导入任务”。
- 设置迁移任务名称和描述。
任务名称请以字母开头,长度不小于4位且不超过64位。任务名称只能包含字母、数字、中划线、下划线。
- “源Redis”区域中,“数据来源”选择“OBS桶”,在“OBS桶名”中选择已上传备份文件的OBS桶。
- 根据需要选择“源DB”,您可以指定源端备份文件某一个DB中的数据,例如输入5时,则只迁移DB5中的数据;无需指定DB时,请保持置空,即迁移全部DB。
- 选择“是否多DB Proxy集群”,只有当源Redis数据为DCS Proxy集群实例,且开启了多DB(Proxy实例multi-db参数值为yes)时选择。
- 单击“添加备份文件”,选择需要迁移的备份文件。
- 在“目标Redis”区域,选择前提条件中准备的“目标Redis实例”。
- 如果目标Redis是密码访问模式,请输入密码后,单击“测试连接”,检查密码是否正确。免密访问的实例,请直接单击“测试连接”。
- 根据需要选择“目标DB”,您可以指定迁移数据到目标Redis的某一个DB中,例如输入5时,则迁移到目标Redis的DB5;不填表示不指定,默认迁移到与源端相同的DB中。
- 当源端为多DB,目标端为单DB的DCS实例时(单DB的实例只有DB0),需要源端的所有数据都在DB0,或者指定仅迁移源端某一DB中的数据并将目标端DB指定为0,否则会迁移失败。
- DCS Redis的DB数请参见Redis实例是否支持多DB方式?。
- 单击“立即创建”。
- 确认迁移信息,然后单击“提交”,开始创建迁移任务。
可返回迁移任务列表中,观察对应的迁移任务的状态,迁移成功后,任务状态显示“成功”。
迁移后验证
数据导入成功后,请连接DCS缓存实例,通过info命令,确认数据是否已按要求成功导入。连接Redis的方法请参考Redis-cli客户端连接Redis。
如果导入不成功,请检查操作步骤,如果是导入命令不正确,建议使用flushall或者flushdb命令清理目标实例中的缓存数据,修改导入命令后重新导入。