如何修改DataX使其支持Mysql8.0
修改DataX使其支持Mysql8.0
1. DataX介绍
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
官方GitHub地址:https://github.com/alibaba/DataX
2. 修改DataX支持Mysql8.0
主要将DataX依赖的驱动包版本升级一下就可以了。
2.1. 修改父pom中的驱动包版本
找到mysql.driver.version,然后把值修改为8.0.33。
https://mvnrepository.com/artifact/mysql/mysql-connector-java
2.2. 修改驱动类和连接参数
2.2.1. 修改驱动类为com.mysql.cj.jdbc.Driver
mysql-connector-java 5和5之前使用:com.mysql.jdbc.Driver。
mysql-connector-java 6和6之后使用:com.mysql.cj.jdbc.Driver。
当前需要使用Mysql8.0,所以需要把驱动类修改为com.mysql.cj.jdbc.Driver。
2.2.2. 删除默认拼接的数据库连接参数
DataX默认还会给我们加了一下数据库的连接参数:yearIsDateType=false&zeroDateTimeBehavior=convertToNull&rewriteBatchedStatements=true&tinyInt1isBit=false
。
但是在Mysql8.0中这些参数已经被删除或不适用了:
- yearIsDateType:在MySQL 8.0中,year类型始终被视为整数类型,因此此参数已被删除。
- zeroDateTimeBehavior:在MySQL 8.0中,零日期和时间值的默认行为已更改为“ERROR”,因此此参数已不再适用。
- rewriteBatchedStatements:在MySQL 8.0中,批处理语句重写功能已被重新实现,不再需要此参数。
- tinyIntlisBit:在MySQL 8.0中,tinyint(1)始终被视为整数类型,因此此参数已被删除。
所以我们需要把suffix设置为空字符串,全部使用json中的数据库连接url。
2.3. 重新编译打包
2.3.1. 执行Maven命令打包
mvn -U clean package assembly:assembly -Dmaven.test.skip=true
打好的包会在target目录下:
2.3.2. 删除不需要的插件
如果不需要那么多插件,可以在父pom的modules中删除对应的module,只保留需要的插件。
我这里只需要Mysql,所以只保留了mysqlReader和mysqlWriter。
需要注意删除module之前记得先mvn clear
一下,防止其他模块已经打好包了,避免assembly的时候把这些不需要的包带上。
3. Maven Assembly
Maven assembly 是一个Maven插件,使用assembly可以配置所需的发布包类型,并指定包含哪些文件和依赖项。
执行插件:mvn assembly:assembly
。
Datax中的assembly配置:
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<finalName>datax</finalName> <!-- 归档的文件名称 -->
<descriptors>
<!-- 自定义配置的文件,该文件定义如何生成发布包。 -->
<descriptor>package.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- 绑定到packge阶段上,使得在执行mvn package命令时,
Maven将自动执行该插件,生成所需的发布包。 -->
<phase>package</phase>
</execution>
</executions>
</plugin>
</plugins>
具体的package.xml可以前往https://github.com/alibaba/DataX 去瞅瞅。
更多推荐
所有评论(0)