使用表白名单选项更新debezium mysql连接器

oipij1gg  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(442)

我使用的是debezium(0.7.5)mysql连接器,我试图了解如果我想用这个选项更新这个配置,最好的方法是什么 table.whitelist .
假设我创建了一个连接器,类似这样:

curl -i -X POST -H "Accept:application/json" -H  "Content-Type:application/json" http://debezium-host/connectors/ -d '
{
  "name": "MyConnector",
  "config": {
      "connector.class": "io.debezium.connector.mysql.MySqlConnector",
      "connect.timeout.ms": "60000",
      "tasks.max": "1",
      "database.hostname": "myhost",
      "database.port": "3306",
      "database.user": "***",
      "database.password": "***",
      "database.server.id": "3227197",
      "database.server.name": "MyServer",
      "database.whitelist": "myDb",
      "table.whitelist": "myDb.table1,myDb.table2",
      "database.history.kafka.bootstrap.servers": "kb0:9092,kb1:9092,kb2:9092",
      "database.history.kafka.topic": "MyConnectorHistoryTopic",
      "max.batch.size": "1024",
      "snapshot.mode": "initial",
      "decimal.handling.mode": "double"
    }
}'

一段时间后(2周),我需要添加一个新表( myDb.table3 )为了这个 table.whitelist 选项(此表是一个旧表,它是在连接器之前创建的)
我尝试的是:
暂停连接器。
删除了历史主题(可能是这个问题?)。
通过api update config endpoint更新配置。
恢复连接器。
通过api更新命令:

curl -i -X PUT -H "Accept:application/json" -H  "Content-Type:application/json" https://kafka-connect-host/connectors/MyConnector/config/ -d '
{
  "connector.class": "io.debezium.connector.mysql.MySqlConnector",
  "connect.timeout.ms": "60000",
  "tasks.max": "1",
  "database.hostname": "myhost",
  "database.port": "3306",
  "database.user": "***",
  "database.password": "***",
  "database.server.id": "3227197",
  "database.server.name": "MyServer",
  "database.whitelist": "myDb",
  "table.whitelist": "myDb.table1,myDb.table2,myDb.table3",
  "database.history.kafka.bootstrap.servers": "kb0:9092,kb1:9092,kb2:9092",
  "database.history.kafka.topic": "MyConnectorHistoryTopic",
  "max.batch.size": "1024",
  "snapshot.mode": "schema_only",
  "decimal.handling.mode": "double"
}'

但它没有起作用,也许这根本不是最好的方法。在其他连接器中,我不使用该选项 table.whitelist ,所以当我需要听一张新table时,我没有这个问题。
我的最后一个选择是删除这个连接器,然后用这个新配置创建另一个连接器,同时监听新表( myDb.table3 ). 问题是如果我想从 myDb.table3 我必须用快照创建 initial 但我不想从其他表的快照中生成所有消息 myDb.table1,myDb.table2 .

esbemjvw

esbemjvw1#

目前还不支持更改白名单/黑名单配置。这项工作目前正在进行中(请参阅dbz-175),我们希望在下一个版本中提供对此的预览支持。有一个悬而未决的公关,这需要更多的工作,虽然。
在实现之前,最好的选择是设置连接器的新示例,该示例只捕获您感兴趣的其他表。这是以运行两个连接器为代价的(这两个连接器都将维护binlog读取器会话),但是只要您不需要太频繁地更改过滤器配置,就可以做到这一点。

相关问题