【发布时间】:2021-02-05 23:02:11
【问题描述】:
目标:
需要向现有的 Debezium MySQL 连接器版本 1.1.1.Final 添加新表。连接器重新启动并更新配置后,表中的数据应填充到主题中(table.whitelist 中的新表)。
问题:
没有明确的策略来添加新表,该表将在拍摄初始快照后连同其数据一起添加到 Kafka(之前版本的连接器正在工作)。我们正在为工作连接器寻找类似于 snapshot.select.statement.overrides 的东西。 snapshot.select.statement.overrides 在快照已经创建并且连接器使用新表重新启动时不起作用。
可能的解决方案:
为应该使用数据初始化的表创建并运行新连接器(snapshot.mode=initial)。缺点:每个版本可能包含一个新的连接器。
或
- 为表创建迁移连接器 (v2)(使用配置 snapshot.mode=initial 和新的 database.history.kafka.topic)
- 完成快照后删除连接器 v2
- 删除 database.history.kafka.topic 用于之前的连接器(v1)
- 使用连接器 (v2) 中的表更新连接器 (v1) - 将它们放入 table.whitelist
- 将 snapshot.mode 更改为 schema_only_recovery 并启动连接器(v1)
问题:
哪种方式是官方的?也许我错过了什么,还有比第二种更简单的方法吗?
统一更新: 根据@Matar 的评论和一些调查,似乎不需要删除 database.history.kafka.topic,因为在默认配置中,它无论如何都会从数据库中收集所有 DDL。
【问题讨论】:
-
我正在处理类似于您手头的任务 (MSSQL) 的事情。我选择了解决方案(2)。我只是想知道你为什么要创建一个新的 database.history.kafka.topic ?我不能只使用 V1 中的那个,因为所有表都属于同一个数据库。
-
@matar 我认为,你是对的。无需再次重新创建主题,特别是如果您使用连接器正在侦听数据库中的所有更改。我想知道 Debezium 多年后还不支持升级方案。
标签: mysql apache-kafka apache-kafka-streams debezium