实时采集报错:io.debezium.DebeziumException: Unknown command Error code: 1047; SQLSTATE: HY000.
问题背景
使用KafkaConnect对MySQL进行实时采集的过程中出现启动异常的问题,其中集群环境和MySQL服务器均在云服务
报错详情如下
org.apache.kafka.connect.errors.ConnectException: An exception occurred in the change event producer. This connector will be stopped.
at io.debezium.pipeline.ErrorHandler.setProducerThrowable(ErrorHandler.java:42)
at io.debezium.connector.mysql.MySqlStreamingChangeEventSource$ReaderThreadLifecycleListener.onCommunicationFailure(MySqlStreamingChangeEventSource.java:1199)
at com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:980)
at com.github.shyiko.mysql.binlog.BinaryLogClient.connect(BinaryLogClient.java:599)
at com.github.shyiko.mysql.binlog.BinaryLogClient$7.run(BinaryLogClient.java:857)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: io.debezium.DebeziumException: Unknown command Error code: 1047; SQLSTATE: HY000.
at io.debezium.connector.mysql.MySqlStreamingChangeEventSource.wrap(MySqlStreamingChangeEventSource.java:1154)
... 5 more
Caused by: com.github.shyiko.mysql.binlog.network.ServerException: Unknown command
at com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:944)
... 3 more
问题产生原因
造成此原因是因为云服务器的mysql使用网络代理节点导致的,因为debezium在采集MySQL的binlog时采集节点是无法通过MySQL的网络代理节点解析对应的binlog数据的
解决方案
修改为节点直连模式而不是通过网络代理