Kafka Connect with MSSQL 不适用于删除操作
Posted
技术标签:
【中文标题】Kafka Connect with MSSQL 不适用于删除操作【英文标题】:Kafka Connect with MSSQL doesn't work for delete operations 【发布时间】:2019-06-03 02:21:48 【问题描述】:我在 SQL Server 2014 上使用带有 Confluent MSSQL connector 的 Kafka Connect。我尝试了插入和更新操作,它们工作正常,将正确的记录推送到 Kafka。如果我删除一条记录,我会收到有关 Kafka 主题的信息:
"schema":null,"payload":null
我希望得到已删除记录的详细信息。
我使用以下命令启用了 CDC:
ALTER DATABASE WebAppDb SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)
GO
ALTER DATABASE WebAppDb SET ALLOW_SNAPSHOT_ISOLATION ON
GO
ALTER TABLE dbo.Users ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = ON)
GO
【问题讨论】:
您使用的是哪个连接器?有几个连接器可以与 MS SQL 一起使用 【参考方案1】:我会检查正在使用的连接器和 MSSQL Server 版本,因为根据 Confluent 网站的Kafka Connect Microsoft SQL Server Connector
变更数据捕获是一项仅在 SQL Server Enterprise 和 Developer 版本中可用的功能
然后检查question 的答案和Debezium Connector for SQL Server 的信息。 看起来这个问题可能仍然需要解决,因为它仍然是open on Github
【讨论】:
我使用的是 Express 版本。无论如何,我不明白为什么创建和更新操作正常工作。【参考方案2】:这实际上表示一条删除消息,如果您的有效负载为空,则表示该记录已被删除,您现在可以做的是检查消息key
并在您的消费者中进行所需的删除。
您现在看到的有效负载确实是错误的,Kafka Connect 中存在一个错误,导致 Json 转换无法生成 tombstone
消息,这就是您看到它的原因“
"schema":null,"payload":null
当错误修复发布时,您的消息应该有一个null
正文,但在这两种情况下您可以采取相同的方式删除。
More about the bug here
More about tombstone messages here
【讨论】:
我更新到最新的 Kafka Confluent 版本 5.1.0 (Kafka 2.1.0-cp1),但我仍然在我的消费者中收到"schema":null,"payload":null
作为删除操作的消息。
您好@AlessandroDionisi,因为 2.1.0 已经发布,我认为您必须等待 2.2.0,除非您想使用夜间构建进行测试(我不知道这些是否是可用,但您可以尝试检查)以上是关于Kafka Connect with MSSQL 不适用于删除操作的主要内容,如果未能解决你的问题,请参考以下文章
使用 Windows 身份验证时要填写 mssql_connect 的哪些登录数据?
使用 Apache Kafka 将数据从 MSSQL 同步到 Elasticsearch