【问题标题】:MySQL Debezium Kafka : schema isn't known to this connectorMySQL Debezium Kafka:此连接器不知道架构
【发布时间】:2020-02-27 19:12:40
【问题描述】:

我用 "table.whitelist" 中的一个表启动了 MySQL Debezium Kafka 连接器(版本:0.9.2.Final),它工作正常。在白名单中添加另一个表并重新启动连接器时,我收到以下错误。

org.apache.kafka.connect.errors.ConnectException: Encountered change event for table paperclip.iltwhose schema isn't known to this connector
    at io.debezium.connector.mysql.AbstractReader.wrap(AbstractReader.java:230)
    at io.debezium.connector.mysql.AbstractReader.failed(AbstractReader.java:208)
    at io.debezium.connector.mysql.BinlogReader.handleEvent(BinlogReader.java:477)
    at com.github.shyiko.mysql.binlog.BinaryLogClient.notifyEventListeners(BinaryLogClient.java:1095)
    at com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:943)
    at com.github.shyiko.mysql.binlog.BinaryLogClient.connect(BinaryLogClient.java:580)
    at com.github.shyiko.mysql.binlog.BinaryLogClient$7.run(BinaryLogClient.java:825)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.kafka.connect.errors.ConnectException: Encountered change event for table paperclip.iltwhose schema isn't known to this connector
    at io.debezium.connector.mysql.BinlogReader.informAboutUnknownTableIfRequired(BinlogReader.java:727)
    at io.debezium.connector.mysql.BinlogReader.handleUpdateTableMetadata(BinlogReader.java:702)
    at io.debezium.connector.mysql.BinlogReader.handleEvent(BinlogReader.java:461)
    ... 5 more

请找到我使用的以下配置。我希望通过这个设置("database.history.store.only.monitored.tables.ddl": "false"),它应该可以工作。

我该如何解决这个案子?

{
    "name": "Mysql-rnd-engagex",
    "connector.class": "io.debezium.connector.mysql.MySqlConnector",
    "tasks.max": "3",
    "key.converter": "org.apache.kafka.connect.json.JsonConverter",
    "value.converter": "org.apache.kafka.connect.json.JsonConverter",
    "errors.log.enable": "true",
    "errors.log.include.messages": "true",
    "database.hostname": "devmysql.xxxx.net",
    "database.port": "3306",
    "database.user": "xxxxxx",
    "database.password": "xxxxx",
    "database.server.name": "rnd_engagex_cdc",
    "database.history.kafka.bootstrap.servers": "xxxxxx.aivencloud.com:xxxx",
    "database.history.kafka.topic": "rnd_engagex_dbhistory",
    "database.history.skip.unparseable.ddl": "false",
    "database.history.store.only.monitored.tables.ddl": "false",
    "include.schema.changes": "false",
    "include.query": "false",
    "table.ignore.builtin": "true",
    "database.whitelist": "paperclip",
    "table.whitelist": "paperclip.elearning",    //added new table : "paperclip.elearning,paperclip.ilt"
    "column.blacklist": "paperclip.elearning.description",
    "gtid.source.filter.dml.events": "true",
    "tombstones.on.delete": "true",
    "connect.keep.alive": "true",
    "snapshot.minimal.locks": "true",
    "database.history.producer.ssl.truststore.location": "/xxxx/yyyy/keys/public.truststore.jks",
    "value.converter.schemas.enable": "false",
    "database.history.consumer.ssl.truststore.location": "/xxxx/yyyy/keys/public.truststore.jks",
    "database.history.producer.ssl.truststore.password": "password",
    "database.history.producer.ssl.keystore.location": "/xxxx/yyyy/keys/public.keystore.p12",
    "database.history.consumer.ssl.truststore.password": "password",
    "database.history.consumer.ssl.keystore.location": "/xxxx/yyyy/keys/public.keystore.p12",
    "database.history.producer.ssl.keystore.type": "PKCS12",
    "database.history.producer.ssl.keystore.password": "ppppppppp",
    "database.history.consumer.ssl.key.password": "ppppppppp",
    "database.history.producer.security.protocol": "SSL",
    "database.history.consumer.ssl.keystore.type": "PKCS12",
    "database.history.consumer.ssl.keystore.password": "ppppppppp",
    "database.history.producer.ssl.key.password": "ppppppppp",
    "database.history.consumer.security.protocol": "SSL",
    "key.converter.schemas.enable": "false"
}

【问题讨论】:

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


    【解决方案1】:

    您需要在创建连接器时添加属性“snapshot.new.tables”:“parallel”,然后您才能在后期将更多表列入白名单。这在文档中没有给出,因为该功能在 0.9.x 中是 beta 版

    【讨论】:

    • 感谢您的回复。但是如果我们创建一个新的连接器,这将起作用。如何使用正在运行的连接器修复它?我收到了 MySQL-Debezium 社区的回复“此问题已在 版本 0.10.0.Final 中得到解决”
    • issues.jboss.org/browse/DBZ-175 在 0.9.0 中添加。你可以交叉检查debezium.io/releases/0.9/release-notes。但是对于旧版本,可能会有一些问题。即使在 0.10.0 Amazon RDS MySQL 上也无法正常工作,但其他部署可以在可以访问全锁的情况下工作。
    • 正如您所建议的,我使用此 "snapshot.new.tables":"parallel" 配置创建了一个新连接器。我从 table.whitelist 中的一张表开始,然后完美地运行。然后我添加了另一个表,在 DBHistory 主题中更新了相关的 DDL 语句。但我收到此错误org.apache.kafka.connect.errors.ConnectException: Table 'elearning_lab' was not locked with LOCK TABLES Error code: 1100; SQLSTATE: HY000. at io.debezium.connector.mysql.AbstractReader.wrap(AbstractReader.java:230)
    • 您使用的是哪个 debezium 版本?另外,您是否在使用 AWS RDS for MySQL 之类的托管服务?
    • 问题中提到的版本。版本:0.9.2.Final。是 AWS RDS for MySQL
    【解决方案2】:

    就我而言,我已经设置了

    "snapshot.mode" : "initial",
    

    这就是解决方案。

    【讨论】:

    • 你写了两次同样的东西
    猜你喜欢
    • 2019-11-30
    • 2019-02-05
    • 2019-07-22
    • 2019-02-16
    • 1970-01-01
    • 2019-01-17
    • 2021-05-29
    • 2020-04-27
    • 2021-07-27
    相关资源
    最近更新 更多