数据复制服务 DRS-将Redis集群迁移到GeminiDB Redis:使用须知

时间:2025-12-16 15:08:20

使用须知

DRS全量+增量迁移过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保迁移各个阶段的平顺,在创建迁移任务前,请务必阅读以下使用须知。

表3 使用须知

类型名称

使用和操作限制

任务启动前须知

  • 源数据库对象要求:
    • 为准确计算时延,DRS会在源库中插入一个前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的 key记录更新时间点,如果源库为集群架构,DRS会在源库各个shard上均插入该key,同步过程中会过滤该key,同步任务结束,该key就会过期。增量过程中,该key值在源库存在,在目标库不存在,该key值对比结果可能会不一致。若实际业务中也存在前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的key值,可能导致数据不一致。
    • 源库为只读实例或者DRS无写入权限时,上报的时延可能不准。
  • 目标数据库对象要求:
    • 目标库必须是本云GeminiDB Redis实例。
    • 迁移前目标库GeminiDB Redis实例建议为空。
    • 目标数据库实例版本要高于或等于源数据库版本。
  • 其他使用须知:
    • 全量+增量任务使用解析RDB的方式读取数据。
    • 迁移Lua脚本时,源库需要同时有其它数据,否则无法解析出RDB中的Lua脚本,导致Lua脚本迁移失败。
    • DRS不会对目标库进行FLUSH等高危操作,所以对于List列表类型数据,可能出现重复的数据。
    • 在增量阶段,若目标库因网络等问题发生断连后续传,对于incr、decr、lpush、lpop等非幂等命令有可能造成数据不一致。
    • 源库测试连接时,必须填写Redis集群所有分片的IP地址。同时为了避免影响源端Redis实例的业务访问,强烈建议从源实例的副本节点(从节点)进行数据迁移,即推荐填写Redis集群的Slave节点IP地址。
    • 为保障增量迁移有效进行,建议迁移前,评估源库Redis参数,将源库的配置文件redis.conf中repl-backlog-size参数的值适当调大。
    • 迁移过程中,如果源库Redis集群发生扩缩容(例如增加或者减少分片)、规格变配(例如扩大内存),则需要重新配置迁移任务。且为保证数据一致性,在重新配置任务前,建议先清空已迁移至目标GeminiDB Redis的数据。
    • 如果源库中的某些Key设置了过期(expire)策略,由于可能存在Key已过期但未被及时删除的情况,所以在目标库中查看Key数量(例如通过info命令查看)时会比源库的Key数量少。为保障数据的一致性,建议设置延长Key的过期时间。
    • 如果源库中的某些Key设置了过期(expire)策略,且Key的过期时间很短,可能因全量迁移存在延迟而导致数据不一致(例如源库Key在过期前续期,但目标库过期后才重新设置,该场景会导致目标库少数据)。为保障数据的一致性,建议设置延长Key的过期时间。
    • 遇到源端和目标端key数量不一致,可以通过查看源端和目标端Redis不带过期时间的key数量是否一致:
      1. 用户在源端和目标端分别执行info keyspace,根据执行结果分别计算,单分片未过期数量=keys数量-expires,然后累加每个分片得到整个集群未过期key数量。
      2. 进行源端和目标端未过期key数量对比。如果基本一致,则可确定是由过期key影响。
    • 暂不支持配置Redis用户。

全量迁移阶段须知

  • 迁移过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。
  • 迁移过程中,如果源库Redis集群发生主备倒换,任务会失败,需要清空目标库重置任务。
  • 迁移过程中,不允许对正在迁移中的目标数据库进行修改操作。

增量迁移阶段须知

  • 迁移过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。
  • 迁移过程中,如果源库Redis集群发生主备倒换,任务会失败,需要清空目标库重置任务。
  • 迁移过程中,不允许对正在迁移中的目标数据库进行修改操作。
support.huaweicloud.com/realtimemig-drs/drs_04_0509.html