DataX
概述
DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。有如下优点:
- 可靠的数据质量监控
- 丰富的数据转换功能
- 精准的速度控制
- 强劲的同步性能
- 健壮的容错机制
- 极简的使用体验
安装部署
环境准备
- jdk1.8+
- Python(推荐Python2.7.X)一定要为python2,因为后面执行datax.py的时候,里面的python的print会执行不了,导致运行不成功,会提示你print语法要加括号,python2中加不加都行 python3中必须要加,否则报语法错
- Apache Maven 3.x (Compile DataX)
注意配置系统环境变量。
自检测试
进入data目录,执行自检脚本:python D:\datax\bin\datax.py D:\datax\job\job.json,查看日志输出。
如果日志中出现中文乱码,在cmd中输入:CHCP 65001
job脚本
在cmd窗口,执行命令:python {DATAX_HOME}\bin\datax.py E:\datax\Mysql2Oracle.json
Mysql2Oracle.json
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "****",
"password": "****",
"column": ["rank","payment"],
"connection": [
{
"table": [
"salary"
],
"jdbcUrl": [
"jdbc:mysql://127.0.0.1:3306/test"
]
}
]
}
},
"writer": {
"name": "oraclewriter",
"parameter": {
"username": "****",
"password": "****",
"column": [
"rank",
"payment"
],
"preSql": [
"delete from oracle_test"
],
"connection": [
{
"jdbcUrl": "jdbc:oracle:thin:@127.0.0.1:1521:test",
"table": [
"oracle_test"
]
}
]
}
}
}
],
"setting": {
"speed": {
"channel": 4, //并发数限速(根据自己CPU合理控制并发数)
"byte": 524288, //字节流限速(根据自己的磁盘和网络合理控制字节数)
"record": 10000 //记录流限速(根据数据合理空行数)
}
}
}
}
注意事项
1. datax不支持mysql8.x版本
迁移操作Mysql8.0数据库时,需替换reader、writer组件中的驱动jar包
mysql驱动包路径:${DATAX_HOME}/datax/plugin/reader/mysqlreader/libs
2. 关键字处理
涉及到Mysql关键字的字段,在json文件中使用``符号标注
3. 多表增量同步
- 创建多个json文件,接收脚本传参
- 使用shell脚本和crontab定时器控制
4. 性能测试
本地单通道运行,数据如下:
2020-11-19 14:57:23.273 [job-0] INFO JobContainer -
任务启动时刻 : 2020-11-19 14:47:54
任务结束时刻 : 2020-11-19 14:57:23
任务总计耗时 : 568s
任务平均流量 : 233.97KB/s
记录写入速度 : 2223rec/s
读出记录总数 : 1245074
读写失败总数 : 0
参考
官网地址:https://github.com/alibaba/DataX