将本地自建Redis迁移至阿里云Redis实例 您所在的位置:网站首页 dms数据管理redis 将本地自建Redis迁移至阿里云Redis实例

将本地自建Redis迁移至阿里云Redis实例

2024-05-28 15:20| 来源: 网络整理| 查看: 265

DTS在执行全量数据迁移时将占用源库和目标库一定的资源,可能会导致数据库服务器负载上升。如果数据库业务量较大或服务器规格较低,可能会加重数据库压力,甚至导致数据库服务不可用。建议您在执行数据迁移前谨慎评估,在业务低峰期执行数据迁移。

若目标数据库内存不足,触发数据逐出时,由于云数据库Redis版的默认数据逐出策略(maxmemory-policy)为volatile-lru,会导致目标库与源库数据不一致的情况,但不会影响任务的正常运行。

为避免该情况发生,建议将目标库的数据逐出策略设置为noeviction,当目标库内存不足时,数据会写入失败,同时任务也会失败,但目标库不会因为数据逐出而丢失数据。

说明

关于数据逐出策略详情,请参见Redis数据逐出策略介绍。

如果源库中的某些Key使用了过期(expire)策略,由于可能存在Key已过期但未被及时删除的情况,所以在目标库中查看到的Key数量(例如通过info命令查看)会比源库的Key数量少。

说明

源和目标库中,未设置过期策略或未过期的Key数量是一致的。

对于通过EVAL或EVALSHA调用的Lua脚本,在增量数据迁移时,由于目标端在执行脚本时不会明确返回执行结果,所以DTS无法确认该类型脚本是否执行成功。

对于List列表,由于DTS在调用psync或sync传输数据时,不会对目标端已有的数据执行Flush操作,所以可能出现重复的数据。

迁移期间,如自建Redis发生扩缩容(如增加或者减少分片)、规格变配(如扩大内存),则您需重新配置任务。且为保障数据一致性,在重新配置任务前,建议先清空已迁移至目标Redis的数据。

迁移期间,如自建Redis连接地址变化,您需重新配置任务。

对于迁移失败的任务,DTS会触发自动恢复。当您需要将业务切换至目标实例时,请务必先结束或释放该任务,避免该任务被自动恢复后,导致源端数据覆盖目标实例的数据。

源库单机版Redis迁移到目标库集群版Redis的操作限制:由于集群cluster只允许单个命令操作单个slot,若在源库执行多Key操作时,Key不在同一个slot或涉及多个slot,则会出现报错

CROSSSLOT Keys in request don't hash to the same slot

建议在DTS迁移过程中仅执行单Key操作,以免导致链路中断。

若目标实例的架构类型为集群版且某一个分片达到了内存上限,或目标实例的存储空间不足时,DTS任务会因内存溢出(Out of Memory)而失败。

为保障迁移质量,DTS会在源库中插入一个前缀为DTS_REDIS_TIMESTAMP_HEARTBEAT的Key用于记录更新时间点,如果源库为集群架构,DTS会在各个shard上均插入该Key。迁移过程中会过滤该Key,迁移任务结束,该Key就会过期。

如果源库为只读实例或者DTS账号没有写(SETEX)权限,上报的延迟可能不准确。

若目标实例已开启透明数据加密TDE功能,则暂不支持通过DTS迁移数据。

若在数据迁移过程中源端Redis发生连接闪断导致断点续传失败,则可能会使全量数据重新迁移至目标端,从而导致数据不一致。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有