简介
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
特色
DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。
环境准备
- Linux服务器
- JDK(1.8以上,推荐1.8)
- Python(2或3都可以)
- Apache Maven (推荐3.x版本,用来编译项目,本文用不到,后续更高级的使用才会用)
资源下载
- 源码用来查看文档和个性化开发(下期重点说明)
源码下载地址
- DataX工具包,快速上手,配置相关参数就可使用(本期重点说明)
DataX工具包下载
DataX工具包使用
博主使用的版本
把下载好DataX工具包放到linux服务器上的文件夹内(u03)
// 进入工具包文件位置
cd /u03/
// 解压
tar -vxf datax.tar.gz
1.检查服务是否正常
// 进入执行python脚本位置
cd /u03/datax/bin
// 执行脚本授权
chmod 777 datax.py
// 检查服务是否正常
./datax.py /u03/datax/job/job.json
出现下图信息表示服务正常
2.数据库数据同步
从pg数据库数据同步到oralce数据库,表名test,字段:id,name。其中id为主键。
准备工作:在pg和oralce库中把test表建好,并且在pg库中插入几条数据。
pg库脚本
-- 建表
CREATE TABLE test (
"name" varchar NULL,
id varchar NOT NULL,
CONSTRAINT test_pk PRIMARY KEY (id)
);
-- 插入数据
INSERT INTO test ("name", id) VALUES('小赵', '1');
INSERT INTO test ("name", id) VALUES('小钱', '2');
INSERT INTO test ("name", id) VALUES('小孙', '3');
oracle库脚本
-- 建表
CREATE TABLE "TEST" (
"NAME" VARCHAR2(100),
"ID" VARCHAR2(100) PRIMARY KEY
)
数据同步任务参数配置:进入下图位置,创建文件test_base.json。(job.json是上面检查服务是否正常的时候使用的)
test_base.json
{
"job": {
"setting": {
"speed": {
"byte": 1048576
},
"errorLimit": {
"record": 0,
"percentage": 0
}
},
"content": [
{
"reader": {
"parameter": {
"password": "数据库密码",
"column": [
"id",
"name"
],
"sliceRecordCount": 2,
"splitPk": "id",
"connection": [
{
"jdbcUrl": [
"jdbc:postgresql://数据库ip+端口/库名"
],
"table": [
"test"
]
}
],
"username": "用户名"
},
"name": "postgresqlreader"
},
"writer": {
"parameter": {
"password": "数据库密码",
"column": [
"ID",
"NAME"
],
"connection": [
{
"jdbcUrl": "jdbc:oracle:thin:@数据库ip+端口/服务名",
"table": [
"TEST"
]
}
],
"username": "用户名"
},
"name": "oraclewriter"
}
}
]
}
}
执行脚本
// 进入执行脚本位置
cd /u03/datax/bin
// 执行
./datax.py /u03/datax/job/test_base.json
执行结果:pg库中3条数据已经同步到oracle库中了
3. 数据同步任务参数配置说明
pg库的数据读取器——postgresqlreader(下图是源码文件的说明文档)
数据库类型+reader
参数
oracle库的数据写入器——oraclewriter
数据库类型+writer
源码文件的说明文档详情说明的参数的使用,因为内容太多,这里就不多介绍了,推荐下载源码查看。
结语
DataX工具已经能处理一般的业务需求,但了解原理才能看的更宽广,下期内容更精彩。