云数据库Tair(兼容Redis)迁移至阿里云消息队列Kafka版

更新时间:2025-03-13 11:33:22

数据传输服务DTS(Data Transmission Service)支持将Redis的数据迁移至Kafka。本文以云数据库Tair(兼容Redis)实例为源库,且以阿里云消息队列Kafka实例为目标库,为您介绍迁移操作的步骤。

前提条件

  • 已创建目标阿里云消息队列Kafka实例。创建方法,请参见操作步骤

    说明

    源库和目标库支持的版本,请参见迁移方案概览

  • 已在目标阿里云消息队列Kafka实例中创建用于接收数据的Topic。创建方法,请参见步骤一:创建Topic

注意事项

类型

说明

类型

说明

源库限制

  • 带宽要求:源库所属的服务器需具备足够出口带宽,否则将影响数据迁移速率。

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

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

  • 为保障DTS实例的稳定性,建议将配置文件redis.confrepl-backlog-size参数的值适当调大。

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

    说明

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

  • 云数据库Tair(兼容Redis)实例已开启TLS(Transport Layer Security)加密功能,则必须以SSL安全连接的方式接入到DTS(不支持TLSv1.3)。当前暂不支持已开启SSL云数据库Tair(兼容Redis)实例,以云实例的方式接入DTS。

  • 若源端已开启透明数据加密TDE功能,则暂不支持通过DTS迁移数据。

  • 若源端为存储介质持久内存Tair(企业版)实例,则需确保appendonly的参数值为yes。更多信息,请参见操作步骤

  • 若源端为自建Redis:

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

    • SlaveMaster之间的复制超时时间参数repl-timeout建议使用config set repl-timeout 600命令设置为600秒。若源数据库数据量比较大,可以适当增大repl-timeout参数的值。

  • 若在数据迁移过程中出现包括但不限于以下情况,可能会使全量数据重新迁移至目标端,从而导致数据不一致。

    • 源端Redis发生连接闪断,导致断点续传失败。

    • 源端Redis发生主备切换或故障切换。

    • 源端Redis的连接地址发生变化。

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

其他限制

  • 此功能正在灰度内测中,仅部分用户可以使用。

  • 阿里云消息队列Kafka实例的Broker数量大于3个,需以专线/VPN网关/智能网关的方式接入DTS。

  • DTS实例运行期间,若目标Kafka发生了扩容或缩容(如增加或减少KafkaBroker节点),需要重启DTS实例。

  • 请确保DTS能够正常连接源端和目标端。例如,数据库实例的安全设置、自建Redis配置文件redis.conf中的bind参数、自建Kafka配置文件server.properties中的listenersadvertised.listeners参数,均未对DTS的访问进行限制。

  • 在全量任务运行时,DTS将会占用源和目标库一定的读写资源,可能会导致数据库的负载上升。因此建议您在DTS实例运行前评估源库和目标库的性能,并在业务低峰期运行实例(例如源库和目标库的CPU负载在30%以下)。

  • DTS实例运行期间,若有除DTS外的数据写入目标库,则可能会导致源端与目标端的数据不一致,甚至会导致DTS实例运行失败。

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

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

  • DTS将尝试恢复在七天内运行失败的实例。因此,在业务切换至目标实例之前,请务必结束或释放该实例,以避免该实例被自动恢复后导致目标数据库的数据被覆盖。

  • 若迁移实例同时包含全量任务和增量任务,则在该迁移实例重启后,可能会导致DTS重新执行全量任务和增量任务。

  • 若实例运行失败,DTS技术支持人员将在8小时内尝试恢复该实例。在恢复失败实例的过程中,可能会对该实例进行重启、调整参数等操作。

    说明

    在调整参数时,仅会修改实例的参数,不会对数据库中的参数进行修改。可能修改的参数,包括但不限于修改实例参数中的参数。

费用说明

迁移类型

链路配置费用

公网流量费用

迁移类型

链路配置费用

公网流量费用

全量数据迁移

不收费。

当目标库的接入方式公网IP时收取公网流量费用,详情请参见计费概述

增量数据迁移

收费,详情请参见计费概述

增量数据迁移支持的命令

  • APPEND

  • BITOP、BLPOP、BRPOP、BRPOPLPUSH

  • DECR、DECRBY、DEL

  • EVAL、EVALSHA、EXEC、EXPIRE、EXPIREAT

  • FLUSHALL、FLUSHDB

  • GEOADD、GETSET

  • HDEL、HINCRBY、HINCRBYFLOAT、HMSET、HSET、HSETNX

  • INCR、INCRBY、INCRBYFLOAT

  • LINSERT、LPOP、LPUSH、LPUSHX、LREM、LSET、LTRIM

  • MOVE、MSET、MSETNX、MULTI

  • PERSIST、PEXPIRE、PEXPIREAT、PFADD、PFMERGE、PSETEX、PUBLISH

  • RENAME、RENAMENX、RESTORE、RPOP、RPOPLPUSH、RPUSH、RPUSHX

  • SADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、SUNIONSTORE

  • ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNIONSTORE、ZREMRANGEBYRANK、ZREMRANGEBYSCORE

  • XADD、XCLAIM、XDEL、XAUTOCLAIM、XGROUP CREATECONSUMER、XTRIM

数据库账号的权限要求

数据库

所需权限

创建及授权方式

数据库

所需权限

创建及授权方式

云数据库Tair(兼容Redis)实例

读权限

创建与管理账号

操作步骤

  1. 进入目标地域的迁移任务列表页面(二选一)。

    通过DTS控制台进入
    通过DMS控制台进入
    1. 登录数据传输服务DTS控制台

    2. 在左侧导航栏,单击数据迁移

    3. 在页面左上角,选择迁移实例所属地域。

    说明

    实际操作可能会因DMS的模式和布局不同,而有所差异。更多信息。请参见极简模式控制台自定义DMS界面布局与样式

    1. 登录DMS数据管理服务

    2. 在顶部菜单栏中,选择Data + AI > 数据传输(DTS) > 数据迁移

    3. 迁移任务右侧,选择迁移实例所属地域。

  2. 单击创建任务,进入任务配置页面。

  3. 配置源库及目标库信息。

    类别

    配置

    说明

    类别

    配置

    说明

    任务名称

    DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。

    源库信息

    选择已有连接信息

    您可以按实际需求,选择是否使用已有数据库实例。

    • 如使用已有实例,下方数据库信息将自动填入,您无需重复输入。

    • 如不使用已有实例,您需要配置下方的数据库信息。

    说明
    • 您可以在数据连接管理页面或新版配置页面,将数据库录入DTS。更多信息,请参见数据连接管理

    • DMS控制台的配置项为选择DMS数据库实例,您可以单击新增DMS数据库实例或在控制台首页将数据库录入DMS。更多信息,请参见云数据库录入他云/自建数据库录入

    数据库类型

    选择Tair/Redis

    接入方式

    选择云实例

    实例地区

    选择源云数据库Tair(兼容Redis)实例所属的地域。

    是否跨阿里云账号

    本示例为同一阿里云账号间的迁移,选择不跨账号

    实例ID

    选择源云数据库Tair(兼容Redis)实例的ID。

    认证方式

    请根据实际情况选择,本示例选择密码登录

    说明

    若选择为免密登录,请确保Redis数据库已开启免密访问功能。云数据库Tair(兼容Redis)实例开启免密访问的方法,请参见开启专有网络免密访问

    数据库密码

    根据选取的账号(需具备读权限),填入连接源云数据库Tair(兼容Redis)实例的数据库密码。

    • 默认账号:直接填写密码即可。

    • 新创建的账号:密码格式为<自定义账号>:<密码>。例如,Redis实例自定义的用户名为admin,密码为Rp829dlwa,则此处填入的数据库密码为admin:Rp829dlwa。

    连接方式

    请根据实际情况选择非加密连接SSL安全连接

    说明

    若为自建Redis(接入方式不是云实例),且选择了SSL安全连接,您还需要上传CA 证书并填写CA 密钥

    目标库信息

    选择已有连接信息

    您可以按实际需求,选择是否使用已有数据库实例。

    • 如使用已有实例,下方数据库信息将自动填入,您无需重复输入。

    • 如不使用已有实例,您需要配置下方的数据库信息。

    说明
    • 您可以在数据连接管理页面或新版配置页面,将数据库录入DTS。更多信息,请参见数据连接管理

    • DMS控制台的配置项为选择DMS数据库实例,您可以单击新增DMS数据库实例或在控制台首页将数据库录入DMS。更多信息,请参见云数据库录入他云/自建数据库录入

    数据库类型

    选择Kafka

    接入方式

    选择云实例

    实例地区

    选择目标Kafka实例所属的地域。

    Kafka实例ID

    选择目标Kafka实例的ID。

    连接方式

    请根据业务及安全需求,选择非加密连接SCRAM-SHA-256

    Topic

    在下拉框中选择用于接收数据的Topic。

    存储DDLTopic

    在下拉框中选择用于存储DDL信息的Topic。

    说明

    若未选择,DDL信息默认存储在Topic选择的Topic中。

    是否使用Kafka Schema Registry

    Kafka Schema Registry是元数据提供服务层,提供了一个RESTful接口,用于存储和检索Avro Schema。

    • :不使用Kafka Schema Registry。

    • :使用Kafka Schema Registry。您需要输入Avro SchemaKafka Schema Registry注册的URLIP。

  4. 配置完成后,在页面下方单击测试连接以进行下一步

    说明
    • 请确保DTS服务的IP地址段能够被自动或手动添加至源库和目标库的安全设置中,以允许DTS服务器的访问。更多信息,请参见添加DTS服务器的IP地址段

    • 若源库或目标库为自建数据库(接入方式不是云实例),则还需要在弹出的DTS服务器访问授权对话框单击测试连接

  5. 配置任务对象。

    1. 对象配置页面,配置待迁移的对象。

      配置

      说明

      配置

      说明

      迁移类型

      建议同时选中全量迁移增量迁移(或选中全量迁移 + 增量迁移),若配置DTS实例使用的账号没有源库的SYNC/PSYNC权限,请选择全量迁移

      目标已存在表的处理模式

      无需配置,保持默认即可。

      投递到Kafka的数据格式

      根据需求选择迁移到Kafka实例中的数据存储格式。

      • 如果您选择DTS Avro,根据DTS Avroschema定义进行数据解析,schema定义详情请参见DTS Avroschema定义

      • 如果您选择Canal Json,Canal Json的参数说明和示例请参见Canal Json说明

      Kafka压缩格式

      根据需求选择Kafka压缩消息的压缩格式。

      • LZ4(默认):压缩率较低,压缩速率较高。

      • GZIP:压缩率较高,压缩速率较低。

        说明

        CPU的消耗较高。

      • Snappy:压缩率中等,压缩速率中等。

      投递到Kafka Partition策略

      根据业务需求选择分区的迁移策略,详情请参见Kafka Partition迁移策略说明

      源库对象

      源库对象框中单击待迁移的对象,然后单击向右小箭头将其移动到已选择对象框。

      说明

      迁移对象的选择粒度为库,暂不支持Key粒度的选择。

      已选择对象

      本示例无需额外配置。

      您可以使用映射功能,设置源库(DB 0~DB 255)在目标Kafka实例中的Topic名称、TopicPartition数量、附加列等信息。更多信息,请参见配置映射信息

    2. 单击下一步高级配置,进行高级参数配置。

      配置

      说明

      配置

      说明

      选择调度该任务的专属集群

      DTS默认将任务调度到共享集群上,您无需选择。若您希望任务更加稳定,可以购买专属集群来运行DTS迁移任务。更多信息,请参见什么是DTS专属集群

      源库、目标库无法连接后的重试时间

      在迁移任务启动后,若源库或目标库连接失败则DTS会报错,并会立即进行持续的重试连接,默认重试720分钟,您也可以在取值范围(10~1440分钟)内自定义重试时间,建议设置30分钟以上。如果DTS在设置的时间内重新连接上源、目标库,迁移任务将自动恢复。否则,迁移任务将失败。

      说明
      • 针对同源或者同目标的多个DTS实例,网络重试时间以后创建任务的设置为准。

      • 由于连接重试期间,DTS将收取任务运行费用,建议您根据业务需要自定义重试时间,或者在源和目标库实例释放后尽快释放DTS实例。

      源库、目标库出现其他问题后的重试时间

      在迁移任务启动后,若源库或目标库出现非连接性的其他问题(如DDLDML执行异常),则DTS会报错并会立即进行持续的重试操作,默认持续重试时间为10分钟,您也可以在取值范围(1~1440分钟)内自定义重试时间,建议设置10分钟以上。如果DTS在设置的重试时间内相关操作执行成功,迁移任务将自动恢复。否则,迁移任务将会失败。

      重要

      源库、目标库出现其他问题后的重试时间的值需要小于源库、目标库无法连接后的重试时间的值。

      是否限制全量迁移速率

      在全量迁移阶段,DTS将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。您可以根据实际情况,选择是否对全量迁移任务进行限速设置(设置每秒查询源库的速率QPS每秒全量迁移的行数RPS每秒全量迁移的数据量(MB)BPS),以缓解目标库的压力。

      说明

      仅当迁移类型包含全量迁移时,才有此配置项。

      是否限制增量迁移速率

      您也可以根据实际情况,选择是否对增量迁移任务进行限速设置(设置每秒增量迁移的行数RPS每秒增量迁移的数据量(MB)BPS),以缓解目标库的压力。

      说明

      仅当迁移类型包含增量迁移时,才有此配置项。

      使用Slave节点

      本示例无需配置。

      当源库为自建Redis,且实例模式集群版时,您可以选择从MasterSlave节点读取数据,默认为,即从Master读取数据。

      环境标签

      您可以根据实际情况,选择用于标识实例的环境标签。本示例无需选择。

      配置ETL功能

      选择是否配置ETL功能。关于ETL的更多信息,请参见什么是ETL

      监控告警

      是否设置告警,当迁移失败或延迟超过阈值后,将通知告警联系人。

  6. 保存任务并进行预检查。

    • 若您需要查看调用API接口配置该实例时的参数信息,请将鼠标光标移动至下一步保存任务并预检查按钮上,然后单击气泡中的预览OpenAPI参数

    • 若您无需查看或已完成查看API参数,请单击页面下方的下一步保存任务并预检查

    说明
    • 在迁移任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动迁移任务。

    • 如果预检查失败,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。

    • 如果预检查产生警告:

      • 对于不可以忽略的检查项,请单击失败检查项后的查看详情,并根据提示修复后重新进行预检查。

      • 对于可以忽略无需修复的检查项,您可以依次单击点击确认告警详情确认屏蔽确定重新进行预检查,跳过告警检查项重新进行预检查。如果选择屏蔽告警检查项,可能会导致数据不一致等问题,给业务带来风险。

  7. 购买实例。

    1. 预检查通过率显示为100%时,单击下一步购买

    2. 购买页面,选择数据迁移实例的链路规格,详细说明请参见下表。

      类别

      参数

      说明

      类别

      参数

      说明

      信息配置

      资源组配置

      选择实例所属的资源组,默认为default resource group。更多信息,请参见什么是资源管理

      链路规格

      DTS为您提供了不同性能的迁移规格,迁移链路规格的不同会影响迁移速率,您可以根据业务场景进行选择。更多信息,请参见数据迁移链路规格说明

    3. 配置完成后,阅读并选中《数据传输(按量付费)服务条款》

    4. 单击购买并启动,并在弹出的确认对话框,单击确定

      您可在数据迁移界面查看具体进度。

      说明

      若您配置的DTS实例同时包含全量任务和增量任务(迁移类型同时包含全量迁移增量迁移),在迁移任务列表页面会合并显示为增量迁移

配置映射信息

  1. 已选择对象区域框,右键单击已选择的迁移对象。

  2. 在弹出的编辑Schema对话框,配置映射信息。

    配置

    说明

    配置

    说明

    Schema名称

    目标Kafka实例中接收数据的Topic名称,默认为源库及目标库配置阶段在目标库信息选择的Topic

    重要
    • 设置的Topic名称必须在目标Kafka实例中真实存在,否则会导致数据迁移失败。

    • 若您修改了Schema名称,数据将会被写入到您填写的Topic中。

    设置新建TopicPartition数量

    数据写入到目标Topic时的分区数。

    需要同步的前缀

    详情请参见设置过滤条件

    需要过滤的前缀

    附加列

    详情请参见新增附加列

  3. 单击确定

  • 本页导读
  • 前提条件
  • 注意事项
  • 费用说明
  • 增量数据迁移支持的命令
  • 数据库账号的权限要求
  • 操作步骤
  • 配置映射信息