背景:
业务需求中,经常会有同步各种系统或者数仓的数据到自己的库进行使用。比如从oracle同步到自己的mysql,自己写代码如果数据量大需要考虑多线程并发等。最近使用了阿里的Datax项目,操作简单并高效。
Datax
- Datax概述&支持的库
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
2.DataX运行流程
3、部署使用
官网:https://github.com/alibaba/DataX
3.1解压
tar -zxvf datax.tar.gz -C /opt/module/
3.2自检,执行如下命令。成功会输出整个任务的结果
python /opt/module/datax/bin/datax.py /opt/module/datax/job/job.json
3.3 json文件描述讲解,以mysql为例
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader", #reader名称,固定,不可修改
"parameter": {
"column": [ #同步的字段
"id",
"name"
],
"where": "id>=3",# 查询条件,也可以不带
"connection": [
{
"jdbcUrl": [
"jdbc:mysql://127.0.0.1:3306/test" #读的库
],
"table": [
"test" #表
]
}
],
"password": "123456", #密码
"splitPk": "",
"username": "root" #用户
}
},
#写的库
"writer": {
"name": "mysqlwriter", #reader名称,固定,不可修改
"parameter": {
"username": "root", #数据库用户
"password": "123456",#数据库密码
"connection": [
{
"table": [
"test1" #目标表
],
"jdbcUrl": "jdbc:mysql://127.0.0.1:3306/test2?useUnicode=true&characterEncoding=utf-8"
}
],
"column": [ #对应字段,也可以*代表全部字段
"id",
"name"
],
"writeMode": "replace" #insert into(insert) replace into
#replace 或者 update
}
}
}
],
"setting": {
"speed": {
"channel": 1 #并发数
}
}
}
}
3.4 运行
python bin/datax.py job/test.json