01 引言
最近需要对接腾讯的tdsql
,准备使用flink
的mysql cdc jar,发现该jar
包并不支持tdsql
(5.x版本),运行时总是一堆的报错。
报错的根本原因是:flink的mysql cdc jar包里面是基于mysql8.x驱动来打包的,而该版本的tdsql仅支持的jdbc驱动为5.x。
因此,需要做的事情就是降级mysql cdc jar
包里面的mysql
驱动并重新打包,而mysql驱动包是在mysql cdc也依赖的debezium-connector-mysql里面引用的,所以需要修改的是debezium的包。
02 相关资料
相关的 代码 以及 打包好的jar包 都提交到了Gitee,请参考:https://gitee.com/19931024/flink-sql-connector-tdsql-cdc
本文涉及的相关信息如下:
- flink-cdc-connectors源码:https://github.com/ververica/flink-cdc-connectors
- flink-cdc-connectors文档:https://ververica.github.io/flink-cdc-connectors/master/index.html
- debezium源码:https://github.com/debezium/debezium
03 修改内容
flink-connectors引入debezium-connector-mysql后,降级mysql-conector,主要修改的地方在“../debezium-connector-mysql/pom.xml
”:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> <exclusions> <exclusion> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> </exclusion> </exclusions> </dependency>
同时还需要修改java代码,核心内容具体有如下:
src/main/java/io/debezium/connector/mysql/antlr/MySqlAntlrDdlParser.java
:src/main/java/io/debezium/connector/mysql/MySqlConnectorConfig.java
:src/main/java/io/debezium/connector/mysql/MySqlValueConverters.java
:
还有需要修改zeroDateTimeBehavior
的值由“CONVERT_TO_NULL
”改为“convertToNull
”,全局搜索代码修改即可,不是本文的重点,这里省略。
03 文末
附相关maven命令如下:
## 打包命令 mvn clean package -Dfile.encoding=UTF-8 -Dmaven.test.skip=true -f pom.xml ## 查询依赖关系 mvn dependency:tree
本文主要是记录基于flink mysql cdc的代码进行二次开发支持tdsql的cdc connector,希望能帮助到大家,谢谢大家的阅读,本文完!