数据导入模式(Import-mode)

更新时间:
复制 MD 格式

本文介绍 Tair 数据导入模式(Import-mode)的功能原理、使用场景、支持版本及使用方法。

背景信息

在使用DTS(数据传输服务)进行单向数据同步时,如果源端 Key 设置了过期时间(TTL),可能会出现源端和目的端数据不一致的情况。例如:

  • 源端写入一个带过期时间的 Key1,并同步到目的端。

  • 源端使用续期命令给 Key1 续期成功,但续期命令在同步过程中,Key1 已经在目的端被主动或被动过期删除了,导致续期命令在目的端续期失败。

  • 最终同步两端数据不一致。

为解决该问题,Tair 提供了数据导入模式(Import-mode),与 Valkey 8 引入的同名功能保持一致。该功能在目的端实例上开启,开启后目的端实例将:

  • 关闭主动过期(后台定时清理过期 Key)。

  • 关闭读操作触发的被动过期(普通客户端可正常访问,但读不到已过期的数据)。

  • 关闭内存数据逐出。

客户端通过 CLIENT IMPORT-SOURCE ON 声明自己是数据同步客户端后,其同步写入的数据将不受目的端过期时间影响,从而保证同步过程中的数据一致性。

使用场景

需要将数据从源端单向同步至目的端 Tair,且源端 Key 设置了过期时间时,建议在同步期间在目的端实例上开启 Import-mode。

支持版本

目的端实例需满足以下版本要求:

  • Tair(企业版)内存型云原生版,且小版本为 25.4.0.0 及以上。

  • 代理集群架构实例还需 Proxy 小版本为 7.1.9 及以上。

使用方法

在控制台修改目的端实例import-mode 参数:

  1. 同步任务开始前:将 import-mode 设置为 yes,开启数据导入模式。

  2. 同步任务结束后:将 import-mode 设置为 no,关闭数据导入模式。

DTS 在同步前会自动识别目的端实例上 import-mode 的开启情况,并自动执行 CLIENT IMPORT-SOURCE ON 声明同步客户端身份,无需额外操作。

风险与注意事项

重要
  • Import-mode 是同步期间的临时开关,同步完成后请务必及时在目的端实例上关闭。长时间保持开启会导致过期数据持续堆积无法清理,内存水位升高后可能因内存限制导致写入失败。

  • Import-mode 开启期间,普通业务客户端仍可正常读写目的端实例,但其写操作仍会触发被动过期,该路径下的数据一致性不受 Import-mode 保护,请避免在同步期间对目的端进行写入操作。