【问题标题】:Include new tables with data to existing Debezium connector将带有数据的新表包含到现有的 Debezium 连接器中
【发布时间】: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)。缺点:每个版本可能包含一个新的连接器。

  1. 为表创建迁移连接器 (v2)(使用配置 snapshot.mode=initial 和新的 database.history.kafka.topic
  2. 完成快照后删除连接器 v2
  3. 删除 database.history.kafka.topic 用于之前的连接器(v1)
  4. 使用连接器 (v2) 中的表更新连接器 (v1) - 将它们放入 table.whitelist
  5. 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


【解决方案1】:

使用最新版本的 Debezium Server,您可以添加以下配置值

debezium.snapshot.new.tables=parallel

如果你使用的是 Debezium,你可以试试这个配置值

snapshot.new.tables=parallel

注意:Debeziyum 服务器是支持 Kinesis、Google Pub sub 和 Apache Pulsar 的服务器。我正在使用它,它的配置有点不同。我必须在每个项目之前添加“debezium”

添加此配置后,任何添加到 tables.whitelist 的内容,Debezium 都会为这些额外的表创建快照。

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 2021-05-03
    • 2019-05-08
    • 2021-09-30
    • 2021-05-19
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多