上一章:DTS数据迁移 | 《DTS控制台入门一本通》第三章(下篇)
下一章:DTS数据同步 | 《DTS控制台入门一本通》第五章
也可以PC端点击https://developer.aliyun.com/topic/download?id=803 下载
数据订阅其实就是通过 API 获取 DTS 缓存模块的数据,在 DTS数据迁移章节, DTS 缓存模块的数据只能由 DTS 写入模块获取然后写入目标端数据库。数据订阅把 这个 DTS 写入模块进行了开放,我们可以借助 DTS 提供的 DTS 缓存模块的 API 进 行增量数据的获取。要使用 DTS 数据订阅来获取 DTS 的缓存模块的增量数据,需 要新购 DTS 数据订阅实例,这也就意味着,您拥有 DTS 数据迁移并不能对 DTS 缓 存模块进行订阅。购买后,会显示到 DTS 数据订阅的任务列表,如下图 4-1。DTS 数据订阅之前分为新版和旧版,旧版已经在 2020 年 3 月 31 日下线,现在只有新版, 本章节将对新版 DTS 数据订阅的功能进行详细的说明。注意:
● DTS 数据订阅只能订阅增量数据,无法订阅全量数据。
4.1创建数据订阅页面
要创建数据订阅 DTS 实例,需要点击图 4-1 标记①处的“创建数据订阅”功能。点击后,跳转到创建页面,如下图 4-2。下面对这个页面的选择项做详细的
说明。
4.1.1商品类型
商品类型是指购买的数据库 DTS 产品的计费类型,预付费是指包年包月,按年 或者月进行计费,费用需要提前支付。后付费是按量付费,即按小时进行计费(按小 时计费的意思是只有当这个 DTS 被创建并且被您配置运行后,就会按小时进行计费。 只创建出来不配置不会进行计费)
4.1.2功能
当选择预付费时,这里只能选择数据同步和数据订阅,数据同步我们会在“第五 章 DTS 数据同步”章节说明。当选择后付费时,这里还会多一个数据迁移的选项, 在这里创建数据迁移时,提示是收费的,请注意。这个收费只有在您配置 DTS 迁移 选择增量时才会进行收费,不进行增量迁移不会收费。
4.1.3数据订阅类型
当功能选择数据订阅后,我们需要选择订阅的实例类型,即您需要 DTS 获取哪 一种数据库类型的增量数据,目前 DTS 支持的订阅数据库类型为 MySQL、DRDS、 Oracle、POLARDB。
4.1.4源实例地域-订阅
要订阅的数据库实例所在的地域,这里一定要选择正确,因为这决定了 DTS 使 用哪里的订阅服务器去连接您的源端数据库。 配置选择完成后,点击支付,等待创建,创建完成后,如下图 4-3。新创建的实例,默认并没有新版订阅的标记。
4.2任务列表
图 4-1 标记②的处为所选择地域的任务列表。展示了当前地域下运行中,未配置以及异常等状态的订阅任务,具体功能如下。
4.2.1配置订阅通道
创建出来未配置的实例,默认是没有“新版订阅”的标识的,只有当配置完后,才会显示“新版订阅的标识”,点击配置订阅通道配置订阅,跳转到新的页面,如下图 4-4。各配置项的详细说明如下。
4.2.1.1 实例类型
该处实例类型与“3.3.1 实例类型”介绍的含义相同。
4.2.1.2 RDS 实例 ID
由于我们在“4.1.3 订阅实例类型”创建时,选择的是 MySQL,我们在 “4.2.1.1 实例类型”选择的是 RDS 实例,则需要我们填写 RDS 实例 ID,如果我们 选择的 RDS 是 5.7 及以上的 RDS 实例,则还需要填写 RDS 的数据库账号和数据库 密码。当选择的是 RDS 5.6 实例时则不需要,如下图 4-5。原因在于针对 RDS5.6 实 例,DTS 会在 RDS 内部创建专属于 DTS 的迁移账户,而对于 RDS5.7 及以上的, DTS 并不会这样做,非常推荐您使用 RDS5.7 及以上的高权限账户进行配置。
4.2.1.3 数据库账号 / 数据库密码
由于 DTS 要获取数据库的增量数据,数据库的账号权限一定要具备增量日志的获取权限,具体参考“3.3.5 数据库账号”和“3.3.11.2 源库权限检查”。
4.2.1.4 消费网络类型
分为经典网络和专有网络,这里的选择代表的是您后面使用 Client 订阅数据的时 候,如何配置。当 DTS 订阅创建完成后,会生成 2 个地址:公网和私网,如“4.2.2 订阅 ID/ 名称”章节的图 4-9。如果选择经典网络,生成的私网地址就是一个经典网 络的地址(要访问该私网地址需要同地域经典网络的 ECS),如果选择的是专有网络, 生成的私网地址就是一个专有网络的地址(要访问该私网地址需要同低于同 VPC 的 ECS)。
4.2.1.5 授权白名单并进入下一步
当配置完后,点击“授权白名单并进入下一步”进入下一页面(功能说明参考 “3.3.9 授权白名单并进入下一步”),如下图 4-6。该页面的订阅数据类型包括正常的 数据更新以及对象结构更新,当把对象从左侧选择到右侧后,不支持数据迁移的库表 列映射。需要注意的是如下 3 点:
● 数据更新,只订阅 insert,update,delete 这类操作
● 结构更新订阅的是整个实例所有对象的结构创建、删除及修改,您需要使用数 据订阅客户端过滤所需的数据。
● 如果选择整个库作为订阅对象,那么该库中新增对象的增量数据也可以被订阅到。如果选择某个表作为订阅对象,那么只有这个表的增量数据可以被订阅到。此时如果需要加入一个新的表作为订阅对象,您需要将其加入至订阅对象中,具体参考“4.2.5 修改订阅对象”章节。
4.2.1.6 保存并预检查
该功能与“3.3.11 预检查并启动”含义相同。如下图 4-7。
4.4.2订阅 ID/名称
显示 DTS 任务的 ID 以及名称,点击这个超链接后,进入任务详情页面,如下图 4-9。
4.2.2.1 订阅配置
该页面是 DTS 数据订阅的配置信息展示页面。其中基本信息页面的账户为 rdsdt_dtsacct,这是由于我选择的 RDS 是 5.6 实例,DTS 使用的内部账号进行的 订阅。“订阅 Topic”、“网络”这两个地方非常重要,后面进行“Client 下游消费” 时会用到。重点说下“网络”:
● 公网是任何地方都可达的,只要消费 Client 程序部署的这台主机可以访问公网 即可。
● 私网的使用有特殊的限制,私网分为经典网络私网和 VPC 网络私网,取决于 “4.2.1.4 消费网络类型”章节如何配置的消费类型。经典网络私网可以让 部署在经典网络 ECS 上的消费 Client 进行链接与消费。VPC 网络私网可以 让部署在专有网络 ECS(这个 ECS 所在的 VPC 需要与部署 DTS 时选择的 VPC 相同,如图 4-5)上的消费 Client 进行链接与消费。
4.2.2.2 订阅数据
该页面可以查看已经订阅的数据,这些数据保存在 DTS 缓存模块中,如下图4-10。这个页面不支持 Oracle 订阅的数据查看。
4.2.2.3 性能监控
该页面展示了 DTS 订阅的拓扑图以及监控指标,如下图 4-11。从拓扑图里可 以看到,这个拓扑图其实就是我们在“第四章 DTS 数据订阅”讨论的内容,只是 把 DTS 数据迁移的采集模块和缓存模块单独拿出来了,DTS 数据迁移的 DTS 增量 写入模块变成了“下游消费 Client”。
在“3.4.1.3.4 增量迁移延迟的定位与处理”章节的定位和排查方法,也可以 用到这里,DTS 数据订阅客户遇到问题最多的是订阅消费延迟,也就是下游消费 Client 消费 DTS 缓存的增量数据有延迟,比如 DTS 缓存的增量数据是 2020-06- 13 15:00:00,而下游消费 Client 只消费到 2020-06-13 12:00:00 的增量数据,这就差了 3 个小时。出现这种情况的原因一般是很多客户的下游消费 Client 里面并不 只是单纯的进行数据消费,还会对这些消费的数据进行业务上的逻辑处理,从而导致 这样的延迟出现。如遇这种情况,强烈建议将业务逻辑处理与消费逻辑分离,保证下 游消费 Client 可以实时的消费到数据,这样也可以避免因消费延迟过大导致增量缓存 模块数据过期的问题。
4.2.2.4 监控报警
该功能与“3.4.1.4 监控报警”章节功能相同。如下图 4-12 和图 4-13。
4.2.2.5 数据消费
要使用 Client 进行订阅的消费(获取缓存模块的增量数据),需要先在数据消费页面(如下图 4-14)创建消费组。
4.2.2.5.1 新增消费组
如下图 4-15,新增消费组时需要填写 3 个信息:消费组名称、账号、密码。这 三个信息可以随意填写,点击确定后,该页面会显示“消费组 ID/ 名称”、“堆积记录 数”、“消息延迟”等信息,如下图 4-16。请注意如下 2 点:
● 您可以创建多个消费组,给不同的下游消费 Client 使用,您也可以把一个消 费组给不同的下游消费 Client 使用(注意 kafka 中 SUBSCRIBE_MODE_ NAME 参数设置)。
● 只有当下游 Client 客户端开始进行消费时,这些堆积记录数,消息延迟才会 显示。
4.2.2.5.2 消费位点
如下图 4-17,下游开始消费后,消费位点会进行展示。消费时间点是指“下游 消费 Client”对这个 DTS 订阅的缓存模块的增量数据消费的位点,如“4.2.2.3 性 能监控”所述。由于我暂停了下游消费 client,所以此时的消费位点一直在 7 月 1 日 15:21:56。堆积记录数和消息延迟都很大。当重新启动下游消费 Client 时,消费位 点会随着 Client 的消费而推进,如下图 4-18。
4.2.2.5.3 堆积记录数
该消费组,有多少记录数没有被下游消费 Client 消费。
4.2.2.5.4 消息延迟
该消费组的订阅数据延迟情况
4.2.3 消费时间点
此处,新版订阅的消费时间点一直为空,因为新版的消费时间点可能有多个(多 个消费组),具体的消费时间点需要查看“4.2.2.5.1 新增消费组”页面。
4.2.4 数据范围
数据范围是指 DTS 的缓存模块里的增量数据的范围(默认 7 天),超过这个范围 的增量数据已经过期,无法订阅。故当订阅不在数据范围内的增量数据时,下游消费 Client 会出现异常。具体异常我们会在“4.3 使用 Client 订阅数据”讨论。
4.2.5 修改订阅对象
当我们要新增 DTS 的订阅对象时,可以点击该功能进行添加。
4.2.6 新增消费组
该功能与“4.2.2.5.1 新增消费组”章节功能相同。 4.2.7 更多 如下图 4-19,更多功能也包含了多个功能项。重点说明如下节点。
4.2.7.1 查看示例代码
要进行数据订阅的数据消费,需要使用下游消费 Client,这个下游消费 Client 可 以使用 0.11 版本至 1.1 版本的 Kafka 客户端消费订阅数据,DTS 也提供了 MySQL 数据订阅的消费示例代码,点击可以跳转到 github,获取 MySQL 的消费示例代码。 示例代码的配置,我们会在“4.3 使用 Client 订阅数据”讨论,请注意如下 1 点:
● 示例代码,只是针对 MySQL 数据订阅进行消费的,Oracle 数据订阅的不适 用,您还需要编写 Oracle 的示例代码。
4.2.7.2 释放订阅
后付费(按量付费)的 DTS 订阅实例,支持手动释放。预付费 ( 包年包月 ) 的 DTS 订阅实例不支持手动释放。
4.2.7.3 重新配置
如果需要重新配置当前的 DTS 订阅实例,可以使用该功能。
4.3 使用 Client 订阅数据
本章节,我们以 DTS 提供的示例代码为例,讨论如何配置下游消费 Client,进 行数据的消费。
4.3.1 下载示例代码
点击“4.2.7.1 查看示例代码”,示例代码一般在这个地址:https://github.com/LioRoger/subscribe_example?spm=5176.2020520151.6108.d2.3e0a75b02MxgZf
4.3.2 导入示例代码
解压示例代码后,使用 Eclipse 导入示例代码(也可使用其他工具),该示例代 码是基于 Maven 的,所以要提前配置好 Maven。导入步骤如下图 4-20、图 4-21、 图 4-22。
4.3.3 配置 Client
导入完成后,会看到如下图 4-23 的结构图找到。
打开该文件,打开后,配置如下图 4-24 部分设置。
其中有如下 7 个重点配置项: USER_NAME:是指在“4.2.2.5.1 新增消费组”章节创建消费组时填写的账号。
PASSWORD_NAME:是指在“4.2.2.5.1 新增消费组”章节创建消费组时 填写的密码。
SID_NAME:是指在“4.2.2.5.1 新增消费组”章节创建消费组后,页面显示 的“消费组 ID/ 名称”中的 ID。
GROUP_NAME:此处,填写消费组 ID。
KAFKA_TOPIC:是指在“4.2.2 订阅 ID/ 名称”章节图 4-9 中的“订阅 Topic”。
KAFKA_BROKER_URL_NAME:是指在“4.2.2 订阅 ID/ 名称”章节图 4-9 中的“网络”。此处使用的是公网,您也可以使用内网,使用内网有条件限制,请参 考章节“4.2.1.4 消费网络类型”与“4.2.2.1 订阅配置”。
INITIAL_CHECKPOINT_NAME:用来设置消费 Client 启动时的消费的时间 点。这里如果设置的时间点不在数据 DTS 订阅的数据范围,会出现异常。
USE_CONFIG_CHECKPOINT_NAME:用于设置当这个消费 Client 启动 时,是否用 INITIAL_CHECKPOINT_NAME 的值来重置消费时间点,当第一次 Client 启动时,消费 Client 的消费时间点也会随着消费数据进行推进(推进的时间点 在 INITIAL_CHECKPOINT_NAME 之后),此时如何停止这个消费 Client 再次启 动,就会有 2 个选择:继续按照之前消费的时间点继续消费或者重新按照 INITIAL_ CHECKPOINT_NAME 设置的时间点重新消费。这个参数就是用来控制这两个选项 的,true 的话表示每次启动都重置这个订阅 Client 的消费时间点(重置成 INITIAL_ CHECKPOINT_NAME),false 的话则继续消费(从上一次消费 Client 停止时的消 费时间点继续)。
SUBSCRIBE_MODE_NAME: 这 个 配 置 项 用 来 指 定 消 费 的 模 式, 分 为 assign 和 subscribe,这两个设置是 kafka 的设置,不再此赘述。
4.3.4 启动 Client
配置完成后,启动 Client,如下图 4-25。启动后,Console 窗口会打印 log 信息。
4.3.5 打印消费信息
为了确定订阅数据正常,可以在 Console 窗口打印出 Client 订阅到的数据信息,此时需要 Demo 代码中的一个注释,如下图 4-26,把 log.info(ret) 的注释去掉。重新启动。
重新启动后,当源端数据库出现增量数据更新时,Client 会消费这个 SQL 然后
在 Console 窗口打印出来,如下图 4-27。可以看到插入记录,指的是在 a 列(表的
列名)写入了一个值为 2。