您可以使用数据传输服务(DTS)捕获源数据库的数据更新,并以“发布/订阅流”的形式订阅这些数据更新。 源数据库可以是自建MySQL数据库,也可以是云数据库RDS MySQL版。 通过数据订阅功能,您可以使用解耦的数据系统构建分布式应用程序,您可以在这些数据系统之间实现异步数据传输。

说明 数据订阅功能已完成升级。 新版的数据订阅功能支持在同一实例中由多个消费组消费,比旧版数据订阅功能更优惠。

功能特性

  • 多个消费者可以订阅来自同一数据源的数据更新。 详情请参见管理消费组
  • 您可以通过选择特定数据表来获取其数据更新。
  • 您可以订阅自建MySQL数据库中的数据更新。
  • 您可以将数据流传输到经典网络或专有网络中的消费者应用。 专有网络访问模式提供了更低的延迟和更高的安全性。
    说明 您可以在创建数据订阅任务时选择网络类型。 详情请参见 创建RDS MySQL数据订阅通道(新版)
  • 您可以使用标准的Kafka客户端消费数据订阅任务获取到的数据。
    说明 仅支持Kafka 0.10.0.x至1.1.x版本。 详情请参见 使用Kafka客户端消费订阅数据
  • 在数据订阅过程中,您可以重新选择订阅对象。 详情请参见修改订阅对象
  • 您可以修改消费时间点。
    说明 您需要使用数据订阅客户端修改消费时间点。
  • 您可以监控数据订阅任务的状态。 您可以设置消费延迟的阈值,具体取决于应用程序对延迟的敏感度。 当达到阈值时,您会收到告警信息。

消费组

您可以创建多个消费组,让多个消费应用从同一个数据库实例订阅数据。 因此,不同消费组中的应用可以多次消费相同的数据更新。

说明 目前,每个消费组只能包含一个消费者。

支持的客户端

您可以使用Kafka客户端消费数据更新,该客户端可以使用您偏好的编程语言进行编码。 详情请参见Apache Kafka官网上提供的Kafka客户端文档。 DTS提供了使用Java编码的Kafka客户端进行数据消费的示例。 详情请参见使用Kafka客户端消费订阅数据

说明 如果您使用Kafka官方客户端消费数据,您需要按照<消费组账号>-<消费组ID>的格式设置用户名,例如dtstest-dtsae******bpv, 否则无法正常连接。

支持的数据更新类型和订阅对象

数据订阅支持以下类型的数据更新:

  • 结构变更

    结构变更也称为数据定义语言(DDL)变更。 您可以订阅在数据库实例中创建、删除或修改结构对象的操作。 在应用程序代码中,您需要对数据更新进行筛选,以识别结构变更。

  • 数据变更

    数据变更也称为数据操作语言(DML)变更。 您可以订阅特定对象的数据更新,包括INSERT、DELETE和UPDATE操作。

DTS支持的订阅对象包括以下类型:

  • 数据库
  • 数据表

数据订阅任务

数据订阅任务实时从源数据库中拉取数据更新,并保存最近24小时内的数据更新。 您可以使用Kafka客户端消费数据订阅任务获取到的数据更新。 您可以在DTS控制台创建、管理和删除数据订阅任务。

数据订阅任务生命周期

数据订阅任务的状态如下表所示。

任务状态 说明 可执行的操作
预检中 已配置数据订阅任务,并且正在进行预检查。
  • 删除数据订阅实例
未启动 数据订阅任务已通过预检查,但尚未启动。
  • 删除数据订阅实例
  • 重新选择订阅对象
初始化 正在进行初始化。 该过程大约需要1分钟。
  • 删除数据订阅实例
  • 重新选择订阅对象
正常 正在从数据源中拉取数据更新。
  • 查看示例代码
  • 配置监控和告警
  • 删除数据订阅实例
  • 重置数据订阅实例
  • 重新选择订阅对象
异常 数据订阅任务从数据源拉取数据更新时出现异常。
  • 查看示例代码
  • 配置监控和告警
  • 删除数据订阅实例
  • 重置数据订阅实例
  • 重新选择订阅对象
说明
  • 如果数据订阅任务处于异常状态,系统将在7天之内重新尝试执行该任务。 如果需要停止订阅,您需要释放数据订阅实例。
  • 数据订阅实例释放后,系统会永久清除所有实例和任务配置。 请谨慎操作。