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

时间:2020-08-24 19:38:59

标签: java mysql debezium

我正在尝试发布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");

0 个答案:

没有答案