当前位置: 首页 > 知识库问答 >
问题:

多表Debezium连接器是否能保证更改跟踪表之间的订购?

邓才
2023-03-14

我试图构建一个事件聚合解决方案,遵循MSSQL服务器Debezium MSSQL服务器连接器中的更改数据捕获(CDC)模式,将CDC作为事件发布到kafka主题聚合器服务,该服务消耗CDC事件,聚合它们并将聚合发布到不同的主题。

目前,我正在寻找一个问题的明确答案,如果Debezium的SQL Server connector跟踪多个表,并使用主题路由转换将所有消息路由到同一主题,保证它将以“全局”顺序发布所有跟踪表中的事件(例如,如果表a的更改发生在表B的更改之前,则保证首先发布关于表a更改的事件)。

我已经阅读了这里的文档,并做了一些测试,似乎这是Debezium提供的保证,但文档中的措辞有点模糊。

共有1个答案

海翼
2023-03-14

连接器根据提交LSN和更改LSN的值,按升序对读取的更改进行排序。这种排序顺序可以确保Debezium以数据库中发生的相同顺序重放更改

简单地说,如果它在同一个事务中,它是基于更改顺序的。如果不是,则基于交易完成的时间。

 类似资料:
  • 问题内容: 我的同事在工作中提出了一个我无法回答的问题(由于缺乏经验),该问题与跟踪表中相关字段的变化有关。 想象一下,我们有3个表,每个表20个字段。在此示例中,我们考虑这些表中的每一个都有2个字段,一个名为LastUpdatedOn,另一个名为LastUpdatedBy。 如果我们只想跟踪这3个表中的更改,而只跟踪几个特定字段,而没有为每个表创建包含更新前最新版本的历史表,那么我们如何跟踪这些

  • 我正在使用Debezium(0.7.5)MySQL连接器,我试图了解如果我想使用选项更新此配置,那么最好的方法是什么。 假设我创建了一个连接器,如下所示: 过了一段时间(2周),我需要将一个新表()添加到这个选项中(而且这个表是一个旧表,它是在连接器之前创建的) 我尝试的是: 暂停连接器。 删除了历史主题(也许这就是问题所在?)。 通过API update config Endpoint更新了配置

  • 我有一个Debezium连接器,连接到SQL服务器,其中一个表在配置参数中。我想添加另一个表,我已经添加到参数中,尽管我的连接器没有接收到它。 我以前的看起来像这样: 我当前的如下所示: 我重启了Kafka,重启了Debezium中的连接器,但是当我查看bash中的连接器状态时,我仍然看到旧的值。是否需要做其他事情来让连接器刷新配置文件中的内容? Debezium版本:1.2.5。Kafka最终版

  • 在debezium mysql连接器中白名单新表时,有没有遵循任何最佳实践? 我们在CDC流中使用debezium mysql连接器,并且出现了一个用例,将连接器配置的更多表列为白名单。以下是正在使用的debezium的版本详细信息以及 这是一张代币票https://issues.redhat.com/browse/DBZ-906这表示要在中运行连接器 模式,并在重新启动连接器之前重新创建历史主题

  • 我正在尝试为MySQL数据库中的多个表配置Debezium连接器(我在MySQL 8.0上使用Debezium 1.4)。在Kafka中创建主题时,我的公司有一个命名模式要遵循,而这个模式不允许使用下划线(u),所以我不得不用连字符(-)替换它们 所以,我的主题名称是: 专题1 专题二 专题三 我正在尝试使用转换“ByLogicalTableRouter”,但我找不到解决我的问题的正则表达式解决方

  • 我尝试记录JPA实体的任何更改。因此,每个实体都继承自一个抽象实体类,该类具有日志条目对象列表。 AbstractEntity类: LogEntry类: 我的方法是创建一个新的LogEntry对象,并在实体更新或持久化之前将其添加到实体的LogEntry列表中。 我尝试了以下解决方案: 几乎所有这些试验都使我能够更改受影响实体的属性(如名称或validTo)。但没有任何解决方案提供创建新LogEn