Debezium MySQL错误:API流结果集ResultsetRowsStreaming仍处于活动状态

问题描述

我正在尝试发布CDC Debezium Api以使用MysqL数据库中表中的数据。

引擎可以正常运行一会儿,但是几分钟后,我收到以下消息:

2020-08-24 15:04:10.676  INFO 486 --- [pool-2-thread-1] i.d.connector.common.BaseSourceTask      : Stopping down connector
2020-08-24 15:04:10.676  INFO 486 --- [pool-2-thread-1] i.d.connector.MysqL.MysqLConnectorTask   : Stopping MysqL connector task
2020-08-24 15:04:10.676  INFO 486 --- [pool-2-thread-1] i.d.connector.MysqL.ChainedReader        : ChainedReader: Stopping the snapshot reader
2020-08-24 15:04:10.677  INFO 486 --- [pool-2-thread-1] i.d.connector.MysqL.SnapshotReader       : discarding 6365 unsent record(s) due to the connector shutting down
2020-08-24 15:04:10.677  INFO 486 --- [pool-2-thread-1] i.d.connector.MysqL.SnapshotReader       : discarding 0 unsent record(s) due to the connector shutting down
2020-08-24 15:04:10.688  INFO 486 --- [pool-2-thread-1] i.d.connector.MysqL.MysqLConnectorTask   : Connector task finished all work and is Now shutdown
2020-08-24 15:04:10.690  INFO 486 --- [pool-2-thread-1] o.a.k.c.storage.FileOffsetbackingStore   : Stopped FileOffsetbackingStore
2020-08-24 15:04:10.691 ERROR 486 --- [pool-2-thread-1] io.debezium.embedded.EmbeddedEngine      : Error while trying to run connector class 'io.debezium.connector.MysqL.MysqLConnector'

org.apache.kafka.connect.errors.ConnectException: Streaming result set com.MysqL.cj.protocol.a.result.ResultsetRowsstreaming@200b1f49 is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries. Error code: 0; sqlSTATE: S1000.
    at io.debezium.connector.MysqL.AbstractReader.wrap(AbstractReader.java:230) ~[debezium-connector-MysqL-1.2.0.Final.jar:1.2.0.Final]
    at io.debezium.connector.MysqL.AbstractReader.Failed(AbstractReader.java:207) ~[debezium-connector-MysqL-1.2.0.Final.jar:1.2.0.Final]
    at io.debezium.connector.MysqL.SnapshotReader.execute(SnapshotReader.java:831) ~[debezium-connector-MysqL-1.2.0.Final.jar:1.2.0.Final]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
    at java.base/java.lang.Thread.run(Thread.java:830) ~[na:na]
Caused by: java.sql.sqlException: Streaming result set com.MysqL.cj.protocol.a.result.ResultsetRowsstreaming@200b1f49 is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.
    at com.MysqL.cj.jdbc.exceptions.sqlError.createsqlException(sqlError.java:129) ~[mysql-connector-java-8.0.18.jar:8.0.18]
    at com.MysqL.cj.jdbc.exceptions.sqlError.createsqlException(sqlError.java:97) ~[mysql-connector-java-8.0.18.jar:8.0.18]
    at com.MysqL.cj.jdbc.exceptions.sqlExceptionsMapping.translateException(sqlExceptionsMapping.java:122) ~[mysql-connector-java-8.0.18.jar:8.0.18]
    at com.MysqL.cj.jdbc.ConnectionImpl.commit(ConnectionImpl.java:814) ~[mysql-connector-java-8.0.18.jar:8.0.18]
    at io.debezium.connector.MysqL.SnapshotReader.execute(SnapshotReader.java:747) ~[debezium-connector-MysqL-1.2.0.Final.jar:1.2.0.Final]
    ... 3 common frames omitted

我已经将认值从属性max.batch.size和max.queue.size减小到一半,但我仍然出现此错误

任何人都知道为什么会这样以及如何解决吗?

这是我的属性配置:

props.setProperty("name","cdc-connector");
props.setProperty("connector.class","io.debezium.connector.MysqL.MysqLConnector");

props.setProperty("tasks.max","1");

props.setProperty("offset.storage","org.apache.kafka.connect.storage.FileOffsetbackingStore");
props.setProperty("offset.storage.file.filename","~/offsets.dat");
props.setProperty("offset.flush.interval.ms","10000");
/* begin connector properties */
props.setProperty("database.hostname",databaseHost);
props.setProperty("database.port",databasePort);
props.setProperty("database.user",databaseUserName);
props.setProperty("database.password",databasePassword);
props.setProperty("database.server.id",databaseServerId);
props.setProperty("database.server.name","myDatabase");
props.setProperty("useSSL","false");
props.setProperty("database.allowPublicKeyRetrieval","true");
props.setProperty("database.history","io.debezium.relational.history.FileDatabaseHistory");
props.setProperty("database.history.file.filename","~/dbhistory.dat");
props.setProperty("table.whitelist",String.join(",",coreDatabaseWhitelistTables));
props.setProperty("include.query","true");

props.setProperty("snapshot.mode","initial");
props.setProperty("decimal.handling.mode","string");
props.setProperty("converters","timestampConverter");
props.setProperty("timestampConverter.type","com.test.cdc.transformation.converter.TimestampConverter");

props.setProperty("max.batch.size","1024");
props.setProperty("max.queue.size","4096");

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)