本文为您列出数据迁移与数据同步的常见问题和相关解答。
什么是数据迁移、数据同步?
-
数据迁移:将Tair或Redis开源版的数据(即键值对)迁移至另一个Tair或Redis开源版中。通常迁移完成后即可停止该任务,属于一次性任务。
-
数据同步:将Tair或Redis开源版的数据(即键值对)实时同步至另一个Tair或Redis开源版中。通常会持续运行该任务,用于保持源库和目标库的数据一致性。
数据迁移与数据同步均是从源库复制数据至目标库,不会对源库的数据产生影响。
DTS的数据迁移与数据同步工作原理是什么?
详情请参见产品架构及功能原理。
DTS的数据迁移与数据同步有什么区别?
|
对比项 |
DTS数据迁移 |
DTS数据同步 |
|
适用场景 |
主要用于迁移数据上云,例如将本地数据库、ECS上的自建数据库或第三方云数据库迁移至阿里云Tair实例。 |
主要用于两个Tair实例之间的数据实时同步,例如从实例A同步至实例B。可用于异地多活、数据灾备、数据分析等场景。 |
|
能力支持度 |
||
|
功能特性差异 |
支持读取其他阿里云账号下的专有网络,通过该功能可以实现跨阿里云账号迁移专有网络下的自建数据库。 |
|
|
计费规则与方式 |
|
|
DTS的数据同步功能可支持更加丰富的Tair同步场景和功能,建议通过DTS的数据同步功能来完成数据迁移。更多信息,请参见同步方案概述。
使用DTS遇到预检查报错,如何解决?
DTS在执行数据迁移或数据同步任务之前,会对源库和目标执行预检查以确保任务可以正常运行。关于如何排查预检查的报错,请参见修复数据迁移预检查失败的问题和修复同步作业预检查失败的问题。
是否支持开启SYNC/PSYNC命令权限以使用第三方工具迁移数据?
阿里云Redis与Tair实例默认禁用SYNC和PSYNC命令,且不支持开启。因此,第三方迁移或同步工具(如redis-shake的sync/psync模式、其他云厂商的DTS服务)无法通过SYNC/PSYNC协议对阿里云Redis实例执行增量数据同步。
如需将阿里云Redis的数据迁移至外部环境,请使用阿里云DTS。
若源库为云数据库Tair,则无需对源库开通PSYNC命令权限,可直接通过DTS实现增量迁移。
数据迁移或数据同步需要多长时间?
时长无法精确预估,以下量级仅供参考:小数据量(GB级以下)通常在数分钟内完成;中等数据量(数GB)通常在数十分钟内完成;大数据量(数十GB以上)可能需要数小时。
实际耗时受数据量、带宽、DTS链路规格、实例负载等因素影响,可能存在较大差异。
DTS预检查能否列出目标库中具体的重复Key?
DTS预检查不会列出目标库中具体重复的Key,仅会提示目标库非空。若需要排查具体的重复数据,需自行查询目标库进行比对。
DTS同步至代理模式Redis实例时出现数据延迟怎么办?
代理模式Redis实例对Lua脚本有语法检查,script_check_enable参数默认开启。若源端执行了不符合代理模式语法要求的Lua脚本(例如redis.call/redis.pcall的第一个参数为变量而非字符串字面量),DTS增量同步会因目标端报错而卡住,表现为延迟持续增长。
处理方法:在目标端代理模式实例的参数设置中关闭script_check_enable,然后重启DTS同步任务,延迟将在源端写入量下降后逐步追平。
DTS跨地域同步时如何配置目标端Tair白名单?
使用DTS进行跨地域(例如上海到张北)数据同步时,需要将源端和目标端所在地区的DTS服务器CIDR白名单均添加到目标端Tair实例的白名单中,以确保DTS服务能够正常连接并进行同步。