下载官方代码

使用时发现链接MYSQL8.X 一直报用户名/密码/端口不对的错误 最后实践的解决方案如下

  • git clone https://github.com/alibaba/DataX
  • 主要解决mysqlreader mysqlwriter的问题 通过修改POM文件的MYSQL依赖版本号
  • 假定已安装编译后的DataX

修改

  • 进入代码根目录
  • vim mysqlreader/pom.xml
  1. <groupId>mysql</groupId>
  2. <artifactId>mysql-connector-java</artifactId>
  3. <version>8.0.19</version>
  • 如上修改版本号 保存
  • 修改MYSQL8.X Driver
  • 我们的问题修改一下第一行的mysql驱动就可以
  • mysqlwriter修改同理
  • vim plugin-rdbms-util/src/main/java/com/alibaba/datax/plugin/rdbms/util/DataBaseType.java
  • 替换为: com.mysql.cj.jdbc.Driver

image.png

重编译

  • 根目录下执行 mvn -U clean package assembly:assembly -Dmaven.test.skip=true
  • 等待
  • 编译到最后可能会提示一个JAR因为找不到依赖而编译失败 但是这和我们需要解决的问题无关(可使用官方提供的安装工具安装编译后的程序)
    1. -------------------------错误提示: 忽略---------------------------
    2. [INFO] tsdbwriter 0.0.1-SNAPSHOT .......................... FAILURE [ 0.181 s]
    3. [ERROR] Failed to execute goal on project tsdbwriter: Could not resolve dependencies for project com.alibaba.datax:tsdbwriter:jar:0.0.1-SNAPSHOT: Could not find artifact com.aliyun:hitsdb-client:jar:0.4.0-SNAPSHOT in central (https://maven.aliyun.com/repository/central) -> [Help 1]

替换旧文件

  • 复制上面已经编译的文件 mysqlreader/target/datax/plugin/reader/mysqlreader/mysqlreader-0.0.1-SNAPSHOT.jar 替换到已安装的mysqlreader目录下 plugin/reader/mysqlreader/
  • 复制 mysqlreader/target/datax/plugin/reader/mysqlreader/libs目录 到 plugin/reader/mysqlreader/lib
  • cp -R mysqlreader/target/datax/plugin/reader/mysqlreader/libs /Datax/plugin/reader/mysqlreader/
  • 其实重点是libs下的2个文件
  • mysql-connector-java-8.0.19.jar plugin-rdbms-util-0.0.1-SNAPSHOT.jar
  • mysqlwriter同理

验证

附:

hitsdb-client.jar 0.4.0拉取不到的解决方法

  • aliyun的该包GitHub https://github.com/aliyun/aliyun-tsdb-java-sdk/tree/release/0.4.0
  • git clone 切换到 release/0.4.0
  • 当前机器执行 mvn install -Dmaven.test.skip=true
  • 当前机器再重新编译一下Datax 如果仍然报错 去修改一下 /tsdbwriter/pom.xml 的hitsdb-client的版本号 0.4.0-SNAPSHOT
  • 再去Datax根目录重新编译项目

image.png