当前位置: 首页 > 知识库问答 >
问题:

使用表白列表选项更新Debezium MySQL连接器

呼延辰龙
2023-03-14

我正在使用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选项,所以当我需要侦听新表时,我没有这个问题。

我的最后一个选择是删除这个连接器,并创建另一个连接器,使用这个新配置来监听新表(mydb.table3)。问题是,如果我想从mydb.table3中获得初始数据,我必须使用快照initial来创建,但我不想从其他表mydb.table1、mydb.table2的快照中生成所有消息。

共有1个答案

钮晟
2023-03-14

此时还不支持对白名单/黑名单配置的更改。目前正在对此进行研究(请参见DBZ-175),我们希望在下一个版本中提供对此的预览支持。有一个待定的公关,这需要更多的工作,虽然。

在实现之前,最好的选择是设置一个连接器的新实例,它只捕获您感兴趣的其他表。这是以运行两个连接器为代价的(这两个连接器都将维护一个binlog读取器会话),但只要您不需要经常更改筛选器配置,就可以实现这一目的。

 类似资料:
  • 这看起来应该很简单,但我没有找到任何例子或留档。我有一个看起来像这样的Dynamodb表: 记录1:{姓名、电子邮件、项目[{product}、{item2}、{item3]} 记录2:(姓名、电子邮件、项目[{product}、{item2}、{item3]} 我需要能够更新items元素,即更新记录1中的item1对象。我可以通过硬编码list数组元素使用以下代码来实现这一点,但我不知道如何将

  • 因此,我在DynamoDB中有一项: 我想添加一个新的属性到上述项目,属性是: 现在,我在JS中使用AWS-SDK这样做: 但是,我得到一个错误: ExpressionAttributeValue包含无效值:一个或多个参数值无效:AttributeValue不能包含key:newAttr的空字符串 所以如果我是这样就可以了,但我不希望这个新属性是一个字符串,我希望它是一个列表。 那么我做错了什么?

  • 本文向大家介绍sharepoint项目。更新列表项,包括了sharepoint项目。更新列表项的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我有两个名为和的表。该表包含名为的列。 我需要从相应的表格中填充表格的列,以便表格中的每一行都有一个逗号分隔的列表,其中列出了学校名称的值。 我怎样才能做到这一点?我应该使用查询还是存储过程? 我只知道: SQL小提琴 输出需要如何 问题答案: 借助和 STUFF 来对值进行CONCATENATE,您可以轻松地用所需的结果更新表。 SQLFiddle演示

  • 问题内容: 我使用bootstrap multi-select,我想使用ajax更新流选项 要在init中填充我的多选 然后在事件上我想用以下ajax更新我的选项列表 我尝试使用rebuild方法,但是创建后不会触发下拉菜单 使用萤火虫,我可以看到已生成列表,但选择后不会显示 问题答案: 在文档中,我可以阅读: .multiselect(’setOptions’,options)用于在初始化mul

  • 问题内容: 这是Informix更新的正确语法吗? 我收到通用-201“发生语法错误”消息,但看不到出了什么问题。 问题答案: 您的语法错误是table1.code 改成 完整的代码