数据订阅

最近更新时间:2020-07-17 16:45:09

数据传输服务 DTS 提供基于 binlog 的增量数据订阅功能,仅需几步简单操作,即可订阅云数据库 TencentDB 的增量更新数据。

  1. DTS 控制台 购买并创建 TencentDB 实例的订阅通道。
  2. 使用 DTS 数据订阅 SDK 连接订阅通道,订阅并消费增量数据。

订阅原理

数据订阅通过模拟从库向主库获取对应 binlog 内容进行分析,架构图如下,通过解析 binlog,按照订阅通道配置的库表进行分析,对主库几乎无影响。

  • 订阅的消息内容目前默认保留最近1天。
  • 以实例为单位订阅,后续新增的库表也会在原有订阅通道出现,不需要对原订阅通道进行新增配置操作。
  • 以库为单位订阅,后续该库下的新增的表也会在原有订阅通道出现,不需要对原订阅通道进行新增配置操作。此方案下,如果需要新增库,需要进行新增配置操作。
  • 数据订阅服务目前支持云数据库 MySQL 5.6、5.7。
  • 数据订阅暂不支持视图,触发器和外键。
  • 数据订阅初次配置时会自动调整相关 binlog_row_image 和 binlog_format 参数,参数调整后,数据订阅会自动 kill 实例中存在的连接使参数立即生效,且数据订阅还会执行 flush tables 获取订阅数据的表结构;这可能会影响您的数据库请求,请您知晓并评估对业务的影响。

操作步骤

步骤1:创建数据订阅通道

  1. 登录 DTS 控制台,在左侧导航选择【数据订阅】页,单击【新建数据订阅】开始订阅通道配置。
  2. 在弹出页面,选择源 TencentDB 实例所在地域,单击【立即购买】。
  3. 开通成功后,返回数据订阅页,单击【初始化配置】,为已购买的数据订阅通道初始化配置。
  4. 在配置页,选择源 TencentDB 实例,单击【下一步】。
  5. 选择所需的同步类型及库表。
    • 数据订阅的订阅对象粒度细分为库、表,即用户可以选择订阅某些库或者是订阅某几张表。
    • 订阅数据类型细分为数据更新、结构更新、全实例。
      只选择数据更新及订阅对象时,只能订阅到 insert、delete、update 三种数据变更内容。
      如需订阅结构更新(DDL),需要选择同步类型中的结构变更。一旦订阅结构更新,那么 DTS 会将整个 TencentDB 实例所有结构变更拉取出来,用户需要使用 SDK 过滤需要的数据。
      选择全实例即数据更新+结构更新。
  6. 确定订阅对象和类型后,单击【启动】即可启动订阅通道。

步骤2:修改消费时间起点

DTS 支持在消费的过程中,随时修改消费时间起点。一旦修改完消费时间起点,那么下游 SDK 拉取到的增量数据从修改后的消费时间起点开始。

说明:

DTS 目前只支持在控制台修改消费点,不支持在 SDK 中指定消费点。

修改步骤如下:

  1. 停止 SDK 消费进程。
    数据订阅 列表,单击订阅 ID 或“操作”列的【查看订阅详情】,进入订阅详情页,“消费者来源(IP)”为无,即为进程已停止。
  2. 修改消费时间起点。
    数据订阅 列表,将鼠标移至订阅的消费时间起点上,会出现“修改消费时间起点”图标,单击图标进入修改页。
    说明:

    修改的消费时间起点必须在订阅通道的数据范围之内。

  3. 重启 SDK 消费进程。
    修改完消费时间起点后,即可重启本地的 SDK 消费进程,此时 SDK 会从修改的消费点开始订阅增量数据。

步骤3:修改订阅对象

DTS 支持在订阅消费的过程中,动态增加或减少订阅对象。

  • 如果增加了订阅对象,那么修改完成后,订阅通道会从当前时间拉取新增订阅对象的增量数据。
  • 如果减少了订阅对象,那么修改完成后,SDK 中将无法再订阅到这个对象的数据。

修改步骤如下:

  1. 数据订阅 列表,选择操作列的【更多】>【修改订阅对象】,进入订阅配置页。
  2. 在订阅配置页,修改订阅对象,单击【保存】。

步骤4:使用 SDK 消费数据

请参见 SDK 使用指南

订阅案例

拉取对应订阅表的变化至本地文件
拉取对应订阅表的变化至 Redis
拉取对应订阅表的变化至 Kafka

目录