DataX新手版教程;mysql2mysql跑数脚本的生成和跑数过程案例(内涵多种错误解说)

DataX配置/运行教学:

本人也是新手,在配置DataX的路上踩了很多坑,结合了很多****其他博主和我碰到的错误进行整合,希望本文能帮助大家,每一步都很重要,请仔细阅读本文,谢谢

----------------------------------------------------------我是分隔线----------------------------------------------------------

DataX:
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

更多的介绍内容请看GitHub官网(其他人说的再详细都是看官网):
https://github.com/alibaba/DataX

开始操作顺序,如有不对请指正
运行脚本前配置要求:

GitHub官网有,官方有跳转连接到配置官网的连接:
https://github.com/alibaba/DataX/blob/master/userGuid.md
DataX新手版教程;mysql2mysql跑数脚本的生成和跑数过程案例(内涵多种错误解说)

下载好了之后,安装到自己所在的路径(路径上不建议有中文)

打开cmd(管理员方式打开)

首先进入到自己DataX下bin目录
cd {找到你的DataX路径}/bin

输入下面语句,可以查看json配置模板(懒人复制)

python datax.py -r {你的读取} -w {你的写入}
python datax.py -r mysqlreader -w mysqlwriter

会显示一下内容
DataX新手版教程;mysql2mysql跑数脚本的生成和跑数过程案例(内涵多种错误解说)
将内容打印在mysql2mysql.json并生成json文件
DataX新手版教程;mysql2mysql跑数脚本的生成和跑数过程案例(内涵多种错误解说)
这里呢我是在DataX下自己新建了test文件,大家也可以这样子。完成了之后就出现在test文件内
DataX新手版教程;mysql2mysql跑数脚本的生成和跑数过程案例(内涵多种错误解说)
可用文本剪辑器之类的打开它进行配置
DataX新手版教程;mysql2mysql跑数脚本的生成和跑数过程案例(内涵多种错误解说)
记得删仔细点,保证第一行是个"{"

配置内容

mysql写 文档:https://github.com/alibaba/DataX/blob/master/mysqlwriter/doc/mysqlwriter.md
mysql读 文档:https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md
里面有很多配置要求的参数,有些是必填的,要认真看文档
本人给个模板作为参考:

{
“job”: {
“content”: [
{
“reader”: {
“name”: “mysqlreader”,
“parameter”: {
“column”: ["*"],
“connection”: [
{
“jdbcUrl”: [“jdbc:mysql://localhost:3306/数据库名字?useUnicode=true&characterEncoding=utf8”],
“table”: [“表名”]
}
],
“password”: “root”,
“username”: “root”,
“where”: “”
}
},
“writer”: {
“name”: “mysqlwriter”,
“parameter”: {
“column”: [],
“connection”: [
{
“jdbcUrl”: “jdbc:mysql://localhost:3306/数据库名字?useUnicode=true&characterEncoding=utf8”,
“table”: [“表名”]
}
],
“password”: “root”,
“preSql”: [],
“session”: [],
“username”: “root”,
“writeMode”: “insert”
}
}
}
],
“setting”: {
“speed”: {
“channel”: “1”(线程数量,记得把我删了)
}
}
}
}

jdbc后面的是为了统一编码问题,必须要填(可以试试不填,多吸收经验,本人踩雷踩到的)

配置好之后,在mysql里面建2张表进行试验(表字段一致)
表一:
DataX新手版教程;mysql2mysql跑数脚本的生成和跑数过程案例(内涵多种错误解说)
表二:
DataX新手版教程;mysql2mysql跑数脚本的生成和跑数过程案例(内涵多种错误解说)

现在将表一插入到表二

提醒:配置中reader的表是要提取数据,插入到writer的表中的

示例如下
DataX新手版教程;mysql2mysql跑数脚本的生成和跑数过程案例(内涵多种错误解说)
如果出现这个,就是正常运行了
DataX新手版教程;mysql2mysql跑数脚本的生成和跑数过程案例(内涵多种错误解说)
我们再看看表二
DataX新手版教程;mysql2mysql跑数脚本的生成和跑数过程案例(内涵多种错误解说)
这样就算成功啦~~~(撒花,恭喜自己)

----------------------------------------------------------我是分隔线----------------------------------------------------------

错误的解决方案(持续更新中)

错误一:

java.sql.SQLException: The server time zone value ‘�й���׼ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

原因:我也不是很懂,好像是时区上的问题,有高手知道了可以告诉我哈~

解决方案:为URL添加参数"serverTimezone=UTC"即可,

举例子:
jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC

错误二:

ERROR RetryUtil - Exception when calling callable, 即将尝试执行第1次重试.本次重试计划等 待[1000]ms,实际等待[1000]ms, 异常Msg:[Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数 据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).]. - 具体错误信息为:java.sql.SQLException: Unable to load authentication plugin ‘caching_sha2_password’.]

原因:上面写的很清楚了,1.你写错了jdbc了,2.数据库账号密码没写对,但是还有个情况,就是上面讲的utf8的问题,你八成是这样的(我看过有些博主的,不用utf8也可以)

jdbc:mysql://127.0.0.1:3306/test

解决方法1: 改成jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8

解决方法2:可能版本太低了,在你的DataX目录下plugin\reader\mysqlreader\libs里面mysql-connector-java-8.0.18.jar升级到8.0以上,具体下载可前往mysql官网:https://www.mysql.com/

持续更新中…有问题可在本文评论,我看到了也会解答