数据同步工具DataX使用教程

TangLu 运维 2022-09-12 1221 0

一、DataX简介

DataX是阿里开源的一款异构数据源离线同步工具,可以实现多种关系型和非关系型异构数据库之间的数据同步功能。DataX作为中间传输载体,可以将原数据源无缝同步到新的异构数据源中(可以通过项目地址 https://github.com/alibaba/DataX  查看其所支持的各种数据源)。DataX以插件的形式工作,各个数据源之间有各自的读写模块,比如MySQLReader、HDFSWriter,根据使用不同的插件实现对不同数据源的读写。

DataX任务组成

· Job:单个作业的管理节点,负责数据清理、子任务划分、TaskGroup监控管理

· Task:由Job切分而来,是DataX作业的最小单元,一个大的Job可以分为多个Task,每个Task负责一部分数据的同步

· Schedule:将Task组成TaskGroup,即任务组

DataX与Sqoop主要区别

· DataX是单进程多线程工作

· 读写粒度容易控制

· 不支持分布式

· 支持流控


二、DataX部署与使用

1、提前部署JDK 1.8


2、下载DataX二进制安装包

wget https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/20220530/datax.tar.gz


3、解压后的bin目录存放可运行的脚本;conf目录存放了全局核心配置文件core.json;job目录存放所编写的任务脚本,并包含了一个模板文件job.json;lib存放程序公共依赖包;plugin目录存放了各个数据源的依赖包,按照读写的不同又分为了reader和writer,每个数据源下也提供了一个plugin_job_template.json作为模板文件


4、DataX任务配置

由于DataX是插件式工作,不同的reader和writer之间有不同的配置格式,只需要把正确的配置放在json文件中就可以运行。DataX提供了快捷查询配置的命令,只需要替换想要查看的reader或者writer就可以查看配置文件的编写模板。将配置文件保存下来后就可以使用python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json的方式来运行


bin/datax.py -r mysqlreader -w mysqlwriter 

#以下是修改后的可用模板
{
"job": {
"content": [{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": [
"id",
"name",
"age"
],
"connection": [{
"jdbcUrl": ["jdbc:mysql://172.20.1.190:3307/datax_test"],
"table": ["datax_test1"]
}],
"password": "123456",
"username": "root",
"where": ""
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"column": [
"id",
"name",
"age"
],
"connection": [{
"jdbcUrl": "jdbc:mysql://172.20.1.191:3307/datax_test",
"table": ["datax_test1"]
}],
"password": "132456",
"preSql": [],
"session": [],
"username": "root",
"writeMode": "insert"
}
}
}],
"setting": {
"speed": {
"channel": "1"
}
}
}
}


5、运行DataX,然后观察数据同步结果

#将上面的配置文件保存在job/mysql2mysql.json中
bin/datax.py job/mysql2mysql.json


评论