从 JDBC Kafka Connect 源中删除事件

Posted

技术标签:

【中文标题】从 JDBC Kafka Connect 源中删除事件【英文标题】:Delete events from JDBC Kafka Connect Source 【发布时间】:2017-12-16 02:41:17 【问题描述】:

我正在使用 Kafka Connect JDBC 连接器,并专门研究放入主题的数据的实际格式是什么。

我已经能够看到对数据库的新插入和更新,但我无法检测到数据库中的删除。

首先:JDBC 源是否支持检测这些更改?我无法以某种方式找到文档。

如果是这样,它在实际主题上采用什么格式?

【问题讨论】:

【参考方案1】:

Confluent JDBC source connector 能够捕获“软删除”,其中“已删除”行仅由您的应用程序标记为此类,但实际上并未从表中删除。由于行仍然存在,连接器可以看到它们的变化。但是,连接器无法捕获从表中删除的行,因为连接器通过 JDBC 查询源表,因此无法查看从表中删除的行。

其他连接器能够通过利用称为更改数据捕获或 CDC 的技术利用数据库事务日志或预写日志来捕获所有更改。每个 DBMS 都不同,因此需要专门为该 DBMS 编写的连接器。例如,Debezium project 拥有用于 mysql、PostgreSQL 和 MongoDB 的 Kafka Connect 连接器,并且正在开发用于 Oracle 和 SQL Server 的连接器。

【讨论】:

完美,这正是我想要的。谢谢! 如果我的 SQL Server 版本较旧 (2012) 并且没有 CDC 功能,您的建议是什么?将数据库升级到更高版本并启用 CDC 并使用 Debezium SQL Server Kafka Connect 连接器,还是使用 Confluent JDBC 源连接器?

以上是关于从 JDBC Kafka Connect 源中删除事件的主要内容,如果未能解决你的问题,请参考以下文章

如何将 kafka-connect-jdbc-5.5.0.jar 添加到 Debezium/connect

Kafka Connect JDBC Source MySQL 全量同步

如何在 Kafka Connect JDBC Source 连接器中添加显式 WHERE 子句

pyflink消费kafka-connect-jdbc消息(带schema)

Kafka Connect JDBC Source MySQL 增量同步

使用 Kafka KSQL AVRO 表作为 Kafka Connect JDBC Sink 源的问题