使用迁移任务在线迁移自建Redis
在满足源端自建Redis和目标Redis的网络相通、源Redis放通SYNC和PSYNC命令这两个前提下的前提下,DCS支持通过在线迁移的方式,将源端的自建Redis数据全量或增量迁移到DCS目标Redis中。
在线迁移,相当于增加一个从节点并且会做一次全量同步,建议在业务低峰期执行迁移,否则可能导致源端实例CPU瞬时冲高,时延增大。
约束与限制
- 如果源Redis禁用了SYNC和PSYNC命令,请务必放通后再执行在线迁移,否则会导致在线迁移失败。
- 在线迁移不支持公网方式直接迁移。
- 进行在线迁移时,建议将源端实例的参数repl-timeout配置为300秒,client-output-buffer-limit配置为实例最大内存的20%。
- 源端仅支持Redis 3.0及3.0以上的Redis版本。
前提条件
- 在迁移之前,请先阅读迁移方案概览,选择正确的迁移方案,了解当前DCS支持的在线迁移能力,选择适当的目标实例。
- 如果是单机/主备等多DB的源端实例迁移到集群实例,集群不支持多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请将数据转存到DB0,否则会出现迁移失败,将数据转存到DB0的操作请参考使用Rump在线迁移。
- 已获取准备迁移的源Redis实例的IP地址和端口。
- 如果您还没有目标Redis,请先创建目标Redis,具体操作请参考创建实例。
- 如果您已有目标Redis,则不需要重复创建,为了对比迁移前后数据及预留足够的内存空间,建议在数据迁移之前清空目标实例数据,清空操作请参考清空实例数据。如果没有清空实例数据,数据迁移后,目标Redis与源Redis实例重复的数据迁移后会被覆盖,源Redis没有、目标Redis有的数据会保留。
创建在线迁移任务
- 请使用DCS目标Redis所在的账号登录分布式缓存服务控制台。
- 在管理控制台左上角单击,选择DCS目标Redis所在的区域。
- 单击左侧菜单栏的“数据迁移”。页面显示迁移任务列表页面。
- 单击右上角的“创建在线迁移任务”。
- 设置迁移任务名称和描述。
任务名称请以字母开头,长度不小于4位且不超过64位。任务名称只能包含字母、数字、中划线、下划线。
- 配置在线迁移任务虚拟机资源的VPC、子网和安全组。
- 请选择与目标Redis相同的VPC,确保迁移资源能访问目标Redis实例。
- 创建的在线迁移任务会占用一个租户侧IP,即控制台上迁移任务对应的“迁移IP”。如果源端Redis或目标端Redis配置了白名单,需确保配置了迁移IP或关闭白名单限制。
- 迁移任务所选安全组的“出方向规则”需放通源端Redis和目标端Redis的IP和端口(安全组默认情况下为全部放通,则无需单独放通),以便迁移任务的虚拟机资源能访问源Redis和目标Redis。
检查网络
配置在线迁移任务
- 创建完在线迁移任务之后,在“在线迁移”的列表,单击“配置”,配置在线迁移的源Redis、目标Redis等信息。
- 选择迁移方法。
支持“全量迁移”和“全量迁移+增量迁移”两种,“全量迁移”和“全量迁移+增量迁移”的功能及限制如表1所示。
表1 在线迁移方法说明 迁移类型
描述
全量迁移
该模式为Redis的一次性迁移,适用于可中断业务的迁移场景。全量迁移过程中,如果源Redis有数据更新,这部分更新数据不会被迁移到目标Redis。
全量迁移+增量迁移
该模式为Redis的持续性迁移,适用于对业务中断敏感的迁移场景。增量迁移阶段通过解析日志等技术, 持续保持源Redis和目标端Redis的数据一致。
增量迁移,迁移任务会在迁移开始后,一直保持迁移中状态,不会自动停止。需要您在合适时间,在“操作”列单击“停止”,手动停止迁移。停止后,源端数据不会造成丢失,只是目标端不再写入数据。增量迁移在传输链路网络稳定情况下是秒级时延,具体的时延情况依赖于网络链路的传输质量。
图1 选择迁移方法
- 仅当迁移方法选择“全量迁移+增量迁移”时,支持选择是否启用“带宽限制”。
如果启用带宽限制功能,当数据同步速度达到带宽限制时,将限制同步速度的继续增长。
- 选择是否“自动重连”。如开启自动重连模式,迁移过程中在遇到网络等异常情况时,会无限自动重连。
自动重连模式在无法进行增量同步时,会触发全量同步,增加带宽占用,请谨慎选择。
- 分别配置“源Redis”和“目标Redis”。
- 配置“源Redis类型”和“源Redis实例”:
“源Redis类型”请选择“自建Redis”,并在“源Redis实例”处输入源Redis的IP地址和端口。
如果源Redis为Cluster集群,需要输入集群所有主节点的IP端口,用英文逗号隔开。例如:192.168.1.1:6379,192.168.0.0:6379
- 配置“目标Redis类型”和“目标Redis实例”:
- 分别配置“源Redis实例密码”和“目标Redis实例密码”:如果是密码访问模式实例,在输入连接实例密码后,单击密码右侧的“测试连接”,检查实例密码是否正确、网络是否连通。如果是免密访问的实例,请直接单击“测试连接”。如果测试连接失败,请检查输入的实例密码是否正确、Redis实例与迁移任务网络是否打通。
- 配置“源Redis类型”和“源Redis实例”:
- 单击“下一步”。
- 确认迁移信息,然后单击“提交”,开始创建迁移任务。
可返回迁移任务列表中,观察对应的迁移任务的状态,迁移成功后,任务状态显示“成功”。
如果出现迁移失败,建议单击迁移任务名称,进入迁移任务详情页面,通过“迁移日志”排查迁移失败的原因。
- 如果是增量迁移,全量迁移后会一直处于增量持迁移中的状态。
- 如需手动停止迁移中的任务,勾选迁移任务左侧的方框,单击迁移任务上方的“停止”,即可停止迁移。
迁移后验证
数据迁移前如果目标Redis中数据为空,迁移完成后,可以通过以下方式确认数据的完整性:
- 连接源Redis和目标Redis。连接Redis的方法请参考使用redis-cli连接Redis实例。
- 输入info keyspace,查看keys参数和expires参数的值。
- 对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致,则表示数据完整,迁移正常。
注意:如果是全量迁移,迁移过程中源Redis更新的数据不会迁移到目标实例。