使用须知
DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。
表3 使用须知
类型名称 |
使用和操作约定 |
任务启动前须知 |
- 源数据库要求:
- 源库必须是本云GeminiDB Redis实例。
- 一个GeminiDB Redis实例只能同时作为一个DRS任务的源端数据库。
- 源数据库GeminiDB Redis内核版本(gemini version)为4.2.0及以上。
- notify-keyspace-events 配置项开启通知过期事件互斥,如需使用同步功能,需关闭 通知过期事件的功能.
- 创建全量+增量任务,需要支持PSYNC命令。
- 源数据库GeminiDB Redis需要开启复制功能。
set config set enable-replication 1。
- 为准确计算时延,DRS会在源库中插入一个前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的 key记录更新时间点,如果源库为集群架构,DRS会在源库各个shard上均插入该key,同步过程中会过滤该key,同步任务结束,该key就会过期。增量过程中,该key值在源库存在,在目标库不存在,该key值对比结果可能会不一致。若实际业务中也存在前缀为DRS_REDIS_TIMESTAMP_HEARTBEAT的key值,可能导致数据不一致。
- 源库为只读实例或者DRS无写入权限时,上报的时延可能不准。
- 目标数据库要求:
- 同步前目标库建议为空。
- 目标数据库实例必须有足够的存储空间。
- 暂不支持Redis 6.0版本填写用户名。
- 如果目标库是通过容器、云服务器、或NAT等方式创建的集群,请保证集群的config设置可以使DRS发现全部的主备节点。
- 其他使用须知:
- 全量+增量任务使用解析RDB的方式读取数据。
- 如果源库GeminiDB Redis复制功能超时时间repl-timeout过小(当前默认是3600s),可以适当进行扩大,防止任务失败时间过长,导致任务无法续传。
- 同步过程中,如果源库GeminiDB Redis增配导致任务失败,需要重置任务。且为保障数据一致性,在重置任务前,建议先清空已迁移至目标的数据。(任务增量中且源库内核版本(gemini version)6.3.0及以上无需重置)
- 同步过程中,不支持源库GeminiDB Redis减配,如果源库需要减配,请重新创建同步任务。(任务增量中且源库内核版本(gemini version)6.3.0及以上无需重置)
- 对于List对象,由于在调用PSYNC进行重传时,不会对目标端已有的数据进行清空,可能导致出现重复数据。
- 源库GeminiDB Redis为主备版时,不支持在源库执行包含多个key的命令(例如mset等),否则可能因为key不在同一个slot或者涉及多个slot,导致报错:CROSSSLOT Keys in request don't hash to the same slot。
|
全量同步阶段须知 |
- 同步过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。
- 同步过程中,不允许对正在同步中的目标数据库进行修改操作。
|
增量同步过程须知 |
- 同步过程中,不允许修改连接源和目标数据库的密码,或修改源和目标数据库的端口号。
- 同步过程中,不允许对正在同步中的目标数据库进行修改操作。
|