【问题标题】:Kafka Connect with MSSQL doesn't work for delete operationsKafka Connect with MSSQL 不适用于删除操作
【发布时间】: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 一起使用

标签: sql-server apache-kafka-connect confluent-platform


【解决方案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,除非您想使用夜间构建进行测试(我不知道这些是否是可用,但您可以尝试检查)
猜你喜欢
  • 1970-01-01
  • 2022-07-08
  • 2019-04-30
  • 2020-08-18
  • 1970-01-01
  • 2022-12-15
  • 1970-01-01
  • 2020-11-05
  • 2019-01-01
相关资源
最近更新 更多