使用 Debezium 将所有数据库表捕获到一个 Kafka 主题 [重复]
Posted
技术标签:
【中文标题】使用 Debezium 将所有数据库表捕获到一个 Kafka 主题 [重复]【英文标题】:Capture all database tables to one Kafka topic with Debezium [duplicate] 【发布时间】:2019-02-07 21:39:37 【问题描述】:如何配置 Debezium 以将数据库中的所有表发布到单个 Kafka 主题?
有可能吗?
【问题讨论】:
不清楚为什么要这样做,因为每个表都有不同的模式,并且在 Kafka 中拥有许多主题没有缺点 @cricket_007 一种情况可能是您的数据库中有多个租户动态创建自己的类型(表)作为其业务模型定义的一部分。在这种情况下管理主题可能会变得笨拙。例如,您可以选择对租户数据进行分组,并为每个租户设置一个主题。 【参考方案1】:默认情况下,Debezium 为每个数据库+表写出一个主题
不过,您可能想查看topic routing 上的文档
Debezium 使您能够使用单个消息转换或 SMT 在消息到达转换器之前重新路由发出的更改。 Debezium 提供的 SMT 使您能够根据正则表达式和替换模式重写主题和键,可根据 Debezium 实例进行配置。
所以你可以尝试类似的东西
transforms=Combine
transforms.Combine.type=io.debezium.transforms.ByLogicalTableRouter
transforms.Combine.topic.regex=(.*)
transforms.Combine.topic.replacement=all_tables
您可以在 Kafka Connect 文档部分找到其他 SMT 示例,我认为 RegexRouter 值得一试
【讨论】:
我应该在Kafka连接中对connect-file-source.properties
进行上述更改吗?
不,这些是 Debezium 属性
谢谢。但是我尝试了上面它没有用,但是这个帖子答案有效Is it possible in Debezium to configure table_name => kafka topic mapping?以上是关于使用 Debezium 将所有数据库表捕获到一个 Kafka 主题 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
MySQL使用Debezium更改为Kafka-仅捕获DDL stmts
如何使用debezium更改数据捕获在mysql中捕获数据并在kafka connect中使用jdbc sink?
如何使用 Debezium (cdc) 将从 mysql 获取的更改接收到另一个 mysql db