将包含数据的新表包括到现有的Debezium连接器

时间:2020-10-22 21:04:25

标签: mysql apache-kafka apache-kafka-streams debezium

目标:

需要向现有的Debezium MySQL连接器版本1.1.1.Final添加新表。连接器使用更新的配置( table.whitelist 中的新表)重新启动后,应将表中的数据填充到主题中。

问题:

尚无明确的策略来添加新表,该表将在拍摄初始快照(连接器的先前版本正在运行)后与其数据一起添加到Kafka中。我们正在为工作的连接器寻找与 snapshot.select.statement.overrides 类似的东西。当快照已创建并且连接器使用新表重新启动时, snapshot.select.statement.overrides 不起作用。

可能的解决方案:

为应该使用数据( snapshot.mode = initial )初始化的表创建并运行新的连接器。缺点:每个版本 都可能包含一个新的连接器。

OR

  1. 为表创建迁移连接器(v2)(使用配置 snapshot.mode = initial 和新的 database.history.kafka.topic
  2. 快照完成后删除连接器v2
  3. 删除先前连接器(v1)的 database.history.kafka.topic
  4. 使用连接器(v2)中的表更新连接器(v1)-将它们放入 table.whitelist
  5. snapshot.mode 更改为 schema_only_recovery 并启动连接器(v1)

问题:

哪种方式是官方的?也许我丢失了某些东西,并且比第二种方法更简单?

UPD: 根据@Matar注释和调查,似乎不需要删除 database.history.kafka.topic ,因为在默认配置下,它仍然会从数据库中收集所有DDL。

1 个答案:

答案 0 :(得分:1)

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

debezium.snapshot.new.tables=parallel

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

snapshot.new.tables=parallel

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

添加此配置后,对tables.whitelist 的任何添加,Debezium 都会为这些附加表创建快照。