Q:数据订阅的工作原理是什么?
A:数据订阅的工作原理,请参见产品架构及功能原理。
Q:数据订阅实例可以订阅什么数据?能获取到哪些信息?
可以订阅到目标订阅对象结构的创建、删除、修改,以及所订阅对象数据的更新(INSERT、DELETE和UPDATE操作)。
说明部分数据库为源时,仅支持订阅数据更新。
Q:数据订阅任务到期后,消费组是否会被删除?
A:DTS数据订阅到期后,数据消费组会保留7天。实例到期超过7天未续费会被释放,对应的消费组也会被删除。
Q:只读实例是否可以作为订阅任务的源实例?
有如下两种情况:
实例为记录事务日志的只读实例(如RDS MySQL 5.7或8.0版本),可以作为源实例。
实例为不记录事务日志的只读实例(如RDS MySQL 5.6版本),不可以作为源实例。
Q:如何消费订阅的数据?
详情请参见消费订阅数据。
Q:为什么使用数据订阅功能传输数据后,日期数据格式发生变化?
A:DTS默认日期数据存储格式为YYYY:MM:DD,YYYY-MM-DD是展现出来的格式,实际存储是YYYY:MM:DD格式。所以传输写入的数据格式无论是哪一种,最终都要统一转化为默认格式。
Q:如何排查订阅任务问题?
A:排查订阅任务的方法,请参见排查订阅任务问题。
Q:SDK正常下载数据过程中突然暂停且不能订阅到数据,如何处理?
A:请排查SDK代码中是否调用ackAsConsumed接口汇报消费位点。如果不调用ackAsConsumed汇报位点,那么SDK内部设置的Record的缓存空间数据就不会删除,当缓存全部被占用时,就不能拉取新的数据,从而会出现SDK暂停且不能订阅数据。
Q:SDK重新运行后不能成功订阅数据,如何处理?
A:在启动SDK之前,请先修改消费位点,使消费位点在数据范围内。修改消费位点的方法,请参见保存和查询消费位点。
Q:客户端如何指定时间点进行数据消费?
A:在消费订阅数据时,填写initCheckpoint参数即可指定时间点。更多信息,请参见使用SDK示例代码消费订阅数据。
Q:DTS订阅任务堆积了,如何重置位点?
根据SDK客户端的使用模式,打开对应的代码文件。例如,DTSConsumerAssignDemo.java或DTSConsumerSubscribeDemo.java。
说明更多信息,请参见使用SDK示例代码消费订阅数据。
在订阅任务列表的数据范围列,查看目标订阅实例位点的可修改范围。
根据实际情况选择新的消费位点,并转化为Unix时间戳。
使用转化后的新消费位点,替换代码文件中的旧消费位点(initCheckpoint参数)。
重新运行客户端。
Q:在客户端使用订阅任务的VPC地址连接不上,如何处理?
A:可能是客户端所在机器不在配置订阅任务时指定的VPC里(如客户端VPC更换),您需要重新配置任务。
Q:为什么控制台上的消费位点要比数据范围最大值还要大?
A:因为订阅通道的数据范围更新频率为1分钟,而消费位点的更新频率为10秒。所以如果实时消费的话,消费位点的值可能比订阅通道数据范围的最大值要大。
Q:DTS如何保证SDK订阅到的数据是一个完整的事务?
A:DTS根据提供的消费位点,服务端会搜索这个消费位点对应的完整事务,从整个事务的BEGIN语句开始向下游分发数据,所以可以接受到完整的事务内容。
Q:如何确认数据是否正常消费?
A:如果数据正常消费,那么数据传输控制台的消费位点就会正常往前推进。
Q:数据订阅SDK中usePublicIp=true是什么意思?
A:数据订阅SDK配置usePublicIp=true,表示SDK通过公网访问DTS订阅通道。
Q:数据订阅任务源库RDS主备切换或主库重启时,是否会影响业务?
A:RDS MySQL、RDS PostgreSQL、PolarDB MySQL、PolarDB PostgreSQL和PolarDB-X 1.0(存储类型为RDS MySQL)实例发生主备切换或重启时,DTS都会自适应切换,业务不会受到影响。
Q:RDS是否有可以实现自动的Binlog下载,下载到本地服务器?
A:DTS的数据订阅支持RDS Binlog日志的实时订阅,可以开通DTS的数据订阅服务,通过DTS的SDK订阅RDS Binlog数据并实时同步到本地服务器中。
Q:数据订阅的实时增量数据,是只指新增数据,还是包含修改的数据?
A:DTS的数据订阅可以订阅的增量数据包括:所有的增删改以及结构变更(DDL)。
Q:数据订阅任务消费端有一条记录没有ACK,SDK重启后为什么会收到重复数据?
A:当SDK有message没有ACK时,服务端会将buffer里的所有消息推送完成,当推送完后,SDK不能再接收到消息。此时,服务端保存的消费位点为未ACK之前的最后一条message的位点。当SDK重启时,为了保证消息不丢,服务端会从未ACK前一条message对应的位点开始重新推送数据,所以SDK此时会重复收取一部分消息。
Q:数据订阅消费位点多久更新一次,为什么重启SDK时,有时候会重复接收数据?
A:数据订阅SDK消费完每条message,必须调用ackAsConsumed向服务端回复ACK。服务端接收到ACK后,会更新内存中的消费位点,然后每间隔10秒持久化一次消费位点。在最新ACK未持久化时重启SDK,为保证消息不丢失,服务端会从上一个持久化的消费位点开始推送消息,此时SDK会收到重复消息。
Q:一个数据订阅实例,可以订阅多个RDS实例吗?
A:不可以,当前一个数据订阅实例只能订阅一个RDS实例。
Q:数据订阅实例会出现数据不一致么?
A:不会,数据订阅任务只获取源库的变更,不涉及数据不一致。若客户端消费的数据与您期望的不一致,请自行排查。
Q:消费订阅数据时出现UserRecordGenerator如何处理?
A:当消费订阅数据时,若出现如
UserRecordGenerator: haven't receive records from generator for 5s的信息,你需要检查消费的位点是否在增量数据采集模块的位点范围内,并确保消费端正常运行。Q:一个Topic是否支持创建多个partition?
A:不支持。DTS为了保证消息的全局有序,每个订阅Topic只有一个partition,且固定分配至partition 0中。
Q:数据订阅的SDK是否支持Go语言?
A:支持,示例代码请参见dts-subscribe-demo。
Q:数据订阅的SDK是否支持Python语言?
A:支持,示例代码请参见dts-subscribe-demo。
Q:flink-dts-connector是否支持多线程并发消费订阅数据?
A:不支持。
Q:数据订阅实例的消费组账号密码忘记,如何处理?
A:您可以在业务允许的前提条件下删除该消费组,然后重新创建消费组(使用原来的账号并重新配置密码)。
Q:同一个 RDS 实例是否可以同时配置数据订阅和数据同步任务?
A:支持同时配置,两个任务互不影响。数据订阅任务和数据同步任务是两种独立的任务类型,可以在同一个 RDS 实例上共存,彼此之间不会相互干扰。