Flink CDC这个问题怎么解决?

"Flink CDC这个问题怎么解决?
Caused by: java.lang.NoSuchMethodError: com.mysql.cj.CharsetMapping.getStaticCollationNameForCollationIndex(Ljava/lang/Integer;)Ljava/lang/String;
at io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser.extractCharset(MySqlAntlrDdlParser.java:405)
at io.debezium.connector.mysql.antlr.listener.ColumnDefinitionParserListener.resolveColumnDataType(ColumnDefinitionParserListener.java:158)
at io.debezium.connector.mysql.antlr.listener.ColumnDefinitionParserListener.enterColumnDefinition(ColumnDefinitionParserListener.java:75)
at io.debezium.ddl.parser.mysql.generated.MySqlParser$ColumnDefinitionContext.enterRule(MySqlParser.java:8617)
at io.debezium.antlr.ProxyParseTreeListenerUtil.delegateEnterRule(ProxyParseTreeListenerUtil.java:46)
at io.debezium.connector.mysql.antlr.listener.MySqlAntlrDdlParserListener.enterEveryRule(MySqlAntlrDdlParserListener.java:89)
at org.antlr.v4.runtime.tree.ParseTreeWalker.enterRule(ParseTreeWalker.java:41)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:25)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at org.antlr.v4.runtime.tree.ParseTreeWalker.walk(ParseTreeWalker.java:28)
at io.debezium.antlr.AntlrDdlParser.parse(AntlrDdlParser.java:87)
at io.debezium.connector.mysql.MySqlDatabaseSchema.parseDdl(MySqlDatabaseSchema.java:224)
at io.debezium.connector.mysql.MySqlDatabaseSchema.parseSnapshotDdl(MySqlDatabaseSchema.java:204)
at com.ververica.cdc.connectors.mysql.schema.MySqlSchema.parseSchemaByDdl(MySqlSchema.java:124)
at com.ververica.cdc.connectors.mysql.schema.MySqlSchema.lambda$buildSchemaByShowCreateTable$0(MySqlSchema.java:107)
at io.debezium.jdbc.JdbcConnection.query(JdbcConnection.java:555)
at io.debezium.jdbc.JdbcConnection.query(JdbcConnection.java:496)
at com.ververica.cdc.connectors.mysql.schema.MySqlSchema.buildSchemaByShowCreateTable(MySqlSchema.java:102)
at com.ververica.cdc.connectors.mysql.schema.MySqlSchema.buildTableSchema(MySqlSchema.java:80)
at com.ververica.cdc.connectors.mysql.schema.MySqlSchema.getTableSchema(MySqlSchema.java:66)
at com.ververica.cdc.connectors.mysql.source.assigners.MySqlChunkSplitter.analyzeTable(MySqlChunkSplitter.java:150)
at com.ververica.cdc.connectors.mysql.source.assigners.MySqlChunkSplitter.splitChunks(MySqlChunkSplitter.java:119)
at com.ververica.cdc.connectors.mysql.source.assigners.MySqlSnapshotSplitAssigner.splitTable(MySqlSnapshotSplitAssigner.java:294)
at com.ververica.cdc.connectors.mysql.source.assigners.MySqlSnapshotSplitAssigner.splitChunksForRemainingTables(MySqlSnapshotSplitAssigner.java:557)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 3 more"

展开
收起
十一0204 2023-08-09 10:04:46 498 分享 版权
1 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    这个报错表明Flink CDC使用的MySQL驱动与Debezium不兼容导致的。

    解决方法:

    校验Flink CDC和Debezium版本是否匹配。如果不匹配需要升级到兼容版本。

    尝试降级MySQL驱动到低版本,如8.0.27。高版本驱动可能兼容性不佳。

    设置Flink CDC配置项"debezium.mysql.versions"指定驱动版本,强制匹配驱动。

    使用相同版本的MySQL驱动库排查,升级后可能API变更导致问题。

    如果还失败,可以降级Flink和Debezium核心版本进行验证。

    一般来说,应该保持Flink CDC与Debezium和MySQL驱动的版本均一致,以免兼容问题。

    2023-08-10 22:53:17
    赞同 展开评论

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

还有其他疑问?
咨询AI助理