是否可以在 Debezium 中配置 table_name => kafka 主题映射?

Posted

技术标签:

【中文标题】是否可以在 Debezium 中配置 table_name => kafka 主题映射?【英文标题】:Is it possible in Debezium to configure table_name => kafka topic mapping? 【发布时间】:2018-03-26 08:25:39 【问题描述】:

我已阅读http://debezium.io/docs/connectors/mysql/,但我找不到任何关于是否可以配置 debezium 的信息,以便可以将来自 2 个(或更多)表的更改写入相同的单个 kafka 主题?在我看来,它总是 1 个表 -> 1 个主题。

【问题讨论】:

这似乎是可能的debezium.io/docs/configuration/topic-routing 但我不确定它是否要求 2 个表中的架构完全相同? 【参考方案1】:

是的,使用Single Message Transforms,根据您确定的the link。您可以使用正则表达式 (regex) 将表映射到所需的主题。 io.debezium.transforms.ByLogicalTableRouterorg.apache.kafka.connect.transforms.RegexRouter 都可以解决问题。有后者的例子in this post here:

"transforms":"dropPrefix",  
"transforms.dropPrefix.type":"org.apache.kafka.connect.transforms.RegexRouter",  
"transforms.dropPrefix.regex":"DC1-TEST-(.*)",  
"transforms.dropPrefix.replacement":"$1"

【讨论】:

ByLogicalTableRouter 可让您丰富主键,这在一个主题中包含来自多个表的事件时可能很有用。关于上面评论中的问题,它的原始用例是用于分片表,但它也应该适用于具有不同模式的表。

以上是关于是否可以在 Debezium 中配置 table_name => kafka 主题映射?的主要内容,如果未能解决你的问题,请参考以下文章

table.include.list 配置参数在 Debezium Postgres 连接器中不起作用

Debezium MySQL 参数 table.exclude.list 不起作用

带有 column.include.list 的 Debezium 连接器

带有正则表达式的 debezium 表白名单

Debezium 创建新主题时如何编辑复制因子

如何检查 debezium 快照是不是完整