datax3.0 无法连接数据库记录排错过程

数据环境

  • DataX安装环境:win10
  • 源数据库:云主机,MySQL8.0.18
  • 目标数据库:云主机,MySQL8.0.18

软件环境

  • DataX需求环境(参见dataX官网):
    • JDK(1.8以上,推荐1.8)
    • Python(推荐Python2.6.X)
    • Apache Maven 3.x (Compile DataX)

配置源库和目标库

  • 切换到datax的安装目录
cd F:\datax
  • 查看配置文件模板命令
python bin/datax.py -r mysqlreader -w mysqlwriter

模板如下:

DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
  Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.


  Please refer to the mysqlreader document:
       https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md 

  Please refer to the mysqlwriter document:
       https://github.com/alibaba/DataX/blob/master/mysqlwriter/doc/mysqlwriter.md 

  Please save the following configuration as a json file and  use
       python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json 
  to run the job.

  {
      "job": {
          "content": [
              {
                  "reader": {
                      "name": "mysqlreader", 
                      "parameter": {
                          "column": [], 
                          "connection": [
                              {
                                  "jdbcUrl": [], 
                                  "table": []
                              }
                          ], 
                          "password": "", 
                          "username": "", 
                          "where": ""
                      }
                  }, 
                  "writer": {
                      "name": "mysqlwriter", 
                      "parameter": {
                          "column": [], 
                          "connection": [
                              {
                                  "jdbcUrl": "", 
                                  "table": []
                              }
                          ], 
                          "password": "", 
                          "preSql": [], 
                          "session": [], 
                          "username": "", 
                          "writeMode": ""
                      }
                  }
              }
          ], 
          "setting": {
              "speed": {
                  "channel": ""
              }
          }
      }
  }
  • 创建配置文件

    具体配置项目说明参见官网 https://github.com/alibaba/DataX

  • 将上面配置模板copy下来放在配置json文件中后,进行以下改写:

{
      "job": {
          "content": [
              {
                  "reader": {
                      "name": "mysqlreader", 
                      "parameter": {
                          "column": [这里需要所有列的话可以直接填"*",否则需要自己填写每个需要的列],  
                          "connection": [
                              {   
                                  "jdbcUrl": [
                                      "jdbc:mysql://ip:端口/数据库名?userSSL=false&serverTimezone=UTC"
                                  ],  
                                  "table": ["表名"]   
                              }   
                          ],  
                          "password": "密码", 
                          "username": "用户名", 
                          "where": "查询条件,没有可为空,例子:date_time <= DATE_FORMAT($(date_time),'%Y-%m-%d')"
                      }   
                  },  
                  "writer": {
                      "name": "mysqlwriter", 
                      "parameter": {
                          "column": [
                              "id",
                              "name"
                          ],  
                          "connection": [
                              {   
                                  "jdbcUrl": "jdbc:mysql://127.0.0.1:3306/test?userSSL=false&serverTimezone=UTC", (这里数据库版本为8.0以上的,数据库名后面必须加上两个参数,不然会报错的)
                                  "table": [
                                      "test_db"
                                  ]   
                              }   
                          ],  
                          "password": "root", 
                          "preSql": [], 
                          "session": [], 
                          "username": "root", 
                          "writeMode": "insert"
                      }   
                  }   
              }   
          ],  
          "setting": {
              "speed": {
                  "channel": "1"
               }
          }
      }
  }

第一次运行

  • 执行命令:
 python bin/datax.py job/mysql2mysql.json

果不其然报错了:

datax3.0 无法连接数据库记录排错过程_第1张图片

按照报错信息开始分析原因

  • 确认配置文件中所有参数没有误写的情况,进入下一步

datax3.0 无法连接数据库记录排错过程_第2张图片

  • 校验数据库是否可以正常连接,如正常进入下一步

    1、确认mysql数据库版本(我这里的mysql版本为8.0.18)

    2、查询相关问题后得知,datax3.0的mysql驱动包是不支持mysql8.0以上版本的,所以我这里将datax的mysql驱动包进行更新替换

    • 根据mysql数据库版本进行下载对应的mysql驱动包,下载地址:https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-8.0.18.zip
    • 解压后进行替换 datax\plugin\reader\mysqlreader\libs\mysql-connector-java-5.1.34.jar 为mysql-connector-java-8.0.18.jar

第二次运行

  • 执行命令:
python bin/datax.py job/mysql2mysql.json

emmm…还是报错:

datax3.0 无法连接数据库记录排错过程_第3张图片

按照报错信息开始分析原因

报错信息显示jdk版本不一致,所以我们打开终端输入一下命令:

 java -version

datax3.0 无法连接数据库记录排错过程_第4张图片

image-20200319103033525

这里我们可以看到jdk版本为1.7的,但是环境变量和本地的包都是1.8的,那么问题就知道了,win10系统中是有可能出现这样的问题的,如果是自己的电脑可以参考这个文章:https://www.cnblogs.com/zhangzhonghui/p/10678028.html
如果自己没有权限的话,那就好办了,让系统管理员安排一下,嘿嘿~
成功解决上述问题后

第三次运行

  • 执行命令:
 python bin/datax.py job/mysql2mysql.json

datax3.0 无法连接数据库记录排错过程_第5张图片

Nice!成功!

最后,datax中的where条件是可以使用动态传参的形式进行运行的,也可以实现多表同步实现,详细介绍:http://www.lhtry.net/blog/detail/29

你可能感兴趣的:(datax3.0 无法连接数据库记录排错过程)