多表 Debezium 连接器是不是保证跨更改跟踪表的排序?
Posted
技术标签:
【中文标题】多表 Debezium 连接器是不是保证跨更改跟踪表的排序?【英文标题】:Does multi-table Debezium connector guarantee the ordering across change tracking tables?多表 Debezium 连接器是否保证跨更改跟踪表的排序? 【发布时间】:2021-10-10 06:34:11 【问题描述】:我正在尝试构建一个事件聚合解决方案,该解决方案遵循 MS SQL Server + Debezium MS SQL Server 连接器中的更改数据捕获 (CDC) 模式,以将 CDC 作为事件发布到 kafka 主题 + 使用 CDC 事件的聚合器服务,聚合它们并将聚合发布到不同的主题。
目前,我正在寻找一个问题的明确答案,Debezium 的 SQL Server 连接器是否跟踪多个表并使用主题路由转换将所有消息路由到同一主题,保证它将以“全局”顺序发布所有跟踪表中的事件(例如,如果对表 A 的更改发生在对表 B 的更改之前,则保证首先发布有关表 A 中更改的事件)。
我已经阅读了文档here 并进行了一些测试,这似乎是 Debezium 提供的保证,但文档中的措辞有点模棱两可。
【问题讨论】:
【参考方案1】:The connector sorts the changes that it reads in ascending order, based on the values of their commit LSN and change LSN. This sorting order ensures that the changes are replayed by Debezium in the same order in which they occurred in the database.
简单来说,如果在同一个事务中,它是基于更改的顺序。如果不是,则以交易完成的时间为准。
【讨论】:
谢谢@hady-willi以上是关于多表 Debezium 连接器是不是保证跨更改跟踪表的排序?的主要内容,如果未能解决你的问题,请参考以下文章
我们如何从带有 debezium kafka 连接器的副本集中的辅助 mongodb 节点跟踪 oplog?
Debezium 消息与 kafka-connect sink 连接器期望的格式兼容