DataX数据同步

背景:

业务需求中,经常会有同步各种系统或者数仓的数据到自己的库进行使用。比如从oracle同步到自己的mysql,自己写代码如果数据量大需要考虑多线程并发等。最近使用了阿里的Datax项目,操作简单并高效。

Datax

  1. 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

bash 复制代码
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为例

java 复制代码
{
    "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 运行

java 复制代码
python bin/datax.py job/test.json
相关推荐
troyzhxu6 分钟前
列表查询的 GraphQL —— 一行代码终结你的 if-else 地狱!
java·springboot·graphql
tedcloud12310 分钟前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
SakitamaX27 分钟前
LVS(Linux Virtual Server)概念详解
linux·运维·lvs
小张同学a.36 分钟前
Linux系统管理
linux·运维
孫治AllenSun1 小时前
【DataX】生产环境搭建DataX集群案例
java·开发语言·jvm
阿龙的工作记录1 小时前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
代码村新手1 小时前
Linux的基本指令
linux·运维·服务器
Draina2 小时前
CBC填充预言攻击-CBC Padding Oracle Crypto Attack
python·安全·web安全·网络安全·密码学·安全性测试
好好沉淀2 小时前
@NotBlank(message = “{xxx}“) 注解中花括号的含义
java
fīɡЙtīиɡ ℡2 小时前
内存泄漏产生的原因
java·spring·servlet