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中这些参数已经被删除或不适用了:

  1. yearIsDateType:在MySQL 8.0中,year类型始终被视为整数类型,因此此参数已被删除。
  2. zeroDateTimeBehavior:在MySQL 8.0中,零日期和时间值的默认行为已更改为“ERROR”,因此此参数已不再适用。
  3. rewriteBatchedStatements:在MySQL 8.0中,批处理语句重写功能已被重新实现,不再需要此参数。
  4. 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 去瞅瞅。

Logo

数据库是今天社会发展不可缺少的重要技术,它可以把大量的信息进行有序的存储和管理,为企业的数据处理提供了强大的保障。

更多推荐