数据环境
- 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
果不其然报错了:

按照报错信息开始分析原因
- 确认配置文件中所有参数没有误写的情况,进入下一步

-
校验数据库是否可以正常连接,如正常进入下一步
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…还是报错:

按照报错信息开始分析原因
报错信息显示jdk版本不一致,所以我们打开终端输入一下命令:
java -version


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

Nice!成功!
最后,datax中的where条件是可以使用动态传参的形式进行运行的,也可以实现多表同步实现,详细介绍:http://www.lhtry.net/blog/detail/29
本文记录了DataX3.0在win10环境下,尝试连接MySQL8.0.18数据库时遇到的问题及解决过程。问题包括:DataX的mysql驱动不兼容MySQL8.0、JDK版本不一致。通过更新mysql驱动包到8.0.18版本和确保JDK版本为1.8,最终成功解决了连接问题。

252

被折叠的 条评论
为什么被折叠?



