【问题标题】:Debezium transaction metadata - no `END` event received with SQL ServerDebezium 事务元数据 - SQL Server 未收到“END”事件
【发布时间】:2021-06-07 17:25:53
【问题描述】:

我正在尝试使用 SQL Server 数据库让 transaction metadata 与 debezium 1.4.1.Final 一起使用。

它似乎在某种程度上起作用 - dbservername.transaction 主题已创建,当我运行包含事务的存储过程时,会收到 "status":"BEGIN" 事件以及表上的 CDC 数据包主题。

但是,在我再次运行存储过程之前,没有收到 "status":"END" 事件。

很可能是我没有正确关闭存储过程中的事务(无论如何我都不是 MSSQL 专家)...

这是我正在使用的结构:

CREATE PROCEDURE schema.myproc
AS
BEGIN
    BEGIN TRANSACTION
        ...
    COMMIT;
END
GO

我需要做什么才能在过程结束时获得END 事件?

【问题讨论】:

  • debezium Github 的主页上说“只有提交的更改可见”:github.com/debezium/debezium这可能是原因吗?
  • 我认为这只是指将发布到 Kafka 的唯一事件是已在数据库中提交的更改。事务元数据对于将多个已提交的更改分组到消费者的逻辑集合中很有用。

标签: sql-server debezium


【解决方案1】:

不幸的是,在连接器收到另一个事务 BEGIN 事件之前,没有可靠的方法来发出 END 事件。因此,如果您的数据库上没有持续的事务负载,则 END 事件会延迟。

您可以考虑在循环中运行一些虚拟事务来触发此操作。我们计划通过 Debezium 的心跳功能支持此 OOTB(请参阅 DBZ-3263);对此的任何帮助肯定会受到欢迎。

【讨论】:

猜你喜欢
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 2019-09-11
相关资源
最近更新 更多