阿里离线数据同步工具 DataX 踩坑记录

最近在做一些数据迁移相关工作,调研了一些工具,发现DataX是个不错的东西,所以安利给大家。那么DataX是什么呢? DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具,实现包括 MySQL、SQL Server、Oracle、PostgreSQL 等各种异构数据源之间高效的数据同步功能。

主要功能

DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同步工作。同时DataX插件体系作为一套生态系统, 每接入一套新数据源该新加入的数据源即可实现和现有的数据源互通。具体介绍请移步DataX介绍

系统要求

  • Linux
  • JDK(1.8以上,推荐1.8)
  • Python(推荐Python2.6.X)
  • Apache Maven 3.x (Compile DataX)
  • 设置jvm堆内存,堆内存要求大于1g,否则会出现启动不了的情况
export JAVA_OPTS= -Xms1024m -Xmx1024m

快速开始

部署DataX

下载后解压至本地某个目录,进入bin目录,即可运行同步作业:

$ cd  {YOUR_DATAX_HOME}/bin    
$ python datax.py {YOUR_JOB.json}
  • 方法二、下载DataX源码,自己编译:DataX源码 (1)、下载DataX源码: $ git clone git@github.com:alibaba/DataX.git (2)、通过maven打包: $ cd {DataX_source_code_home} $ mvn -U clean package assembly:assembly -Dmaven.test.skip=true 打包成功,日志显示如下: [INFO] BUILD SUCCESS [INFO] ----------------------------------------------------------------- [INFO] Total time: 08:12 min [INFO] Finished at: 2018-06-05T16:26:48+08:00 [INFO] Final Memory: 133M/960M [INFO] -----------------------------------------------------------------

打包成功后的DataX包位于 {DataX_source_code_home}/target/datax/datax/ ,

生成配置文件

  • 第一步、创建配置文件(json格式) 可以通过命令生成配置模板: python datax.py -r oraclereader -w mysqlwriter > oracle2mysql2.json
  • 在 {DataX_source_code_home} 目录下的 plugin 目录下有DataX支持的所有reader与writer 通过命令生成的配置模板如下所示,楼主生成的reader与writer是对应的是从oracle读取数据,向mysql写数据。
{
"job": {
    "content": [{
        "reader": {
            "name": "oraclereader",
            "parameter": {
                "column": ["*"],
                "connection": [{
                    "jdbcUrl": ["*"],
                    "table": ["tb1"]
                }],
                "password": "***",
                "username": "***"
            }
        },
        "writer": {
            "name": "mysqlwriter",
            "parameter": {
                "column": ["*"],
                "connection": [{
                    "jdbcUrl": "*",
                    "table": ["tb1"]
                }],
                "password": "**",
                "preSql": [],
                "session": [],
                "username": "**",
                "writeMode": "insert"
            }
        }
    }],
    "setting": {
        "speed": {
            "channel": "3"
        }
    }
}
}
  • 最后:启动DataX $ cd {YOUR_DATAX_DIR_BIN} $ python datax.py ./oracle2mysql2.json

  • 同步结束,显示日志如下: ... 2018-06-05 11:20:25.263 [job-0] INFO JobContainer - 任务启动时刻 : 2018-06-05 11:20:15 任务结束时刻 : 2018-06-05 11:20:25 任务总计耗时 : 10s 任务平均流量 : 205B/s 记录写入速度 : 5rec/s 读出记录总数 : 50 读写失败总数 : 0

小结

相对来说DataX上手使用起来还是比较容易的,但是令楼主比较犯难就是不能在同一个配置文件里面同时写入不同的数据库的表,要想读取多张表并写入就只能单独配置。但是也解决了楼主一些问题。

作 者:haifeiWu 原文链接:http://www.hchstudio.cn/article/2018/4928/ 版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GreenLeaves

Oracle 客户端安装

Oracle 客户端的安装方式一种有两种: 1、Oracle标准客户端   点击下载 ? 这是Oracle提供的标准版11r2的客户端 2、Oracle Dat...

5448
来自专栏云计算

Go 微服务,第11部分:Hystrix和Resilience

在Go微服务博客系列的这一部分,我们将探讨如何使用Netflix Hystrix的Go实现和go-resilience重试包,使用断路器模式使我们的服务间通信更...

1.1K3
来自专栏Java与Android技术栈

多个语言项目发布JCenter仓库的小结

我在 JCenter 上发布过 Java、Android、Kotlin 的项目已经有数十个了。踩坑无数,所以写下这篇文章,作为记录和总结。

1082
来自专栏Android群英传

Andromeda:适用于多进程架构的组件通信框架(上)

1623
来自专栏即时通讯技术

新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析

Netty 是一个广受欢迎的异步事件驱动的Java开源网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。

2.9K3
来自专栏Linyb极客之路

工作流引擎之activiti6流程节点自由跳转实现

在中国式的流程需求中,诸如驳回,退回功能需要进行流程跳转,比如领导审批不通过,退回到申请人。这种中国式的流程需求,可以通过以下三种方式实现

2.4K3
来自专栏SeanCheney的专栏

爬虫框架整理汇总

4816
来自专栏自由而无用的灵魂的碎碎念

解决因为卸载vmware后键盘不能使用的问题

我之前安装的是vmware workstation 7.1,虽然添加与删除程序里有卸载选项,不过不管用,无奈用windows 优化大师将其卸载了。然后手动删除一...

1153
来自专栏Java技术栈

分布式服务防雪崩熔断器,Hystrix理论+实战。

Hystrix是什么? hystrix对应的中文名字是“豪猪”,豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制,这与hystrix本身的功能不谋...

4935
来自专栏张善友的专栏

使用Hystrix提高系统可用性

今天稍微复杂点的互联网应用,服务端基本都是分布式的,大量的服务支撑起整个系统,服务之间也难免有大量的依赖关系,依赖都是通过网络连接起来。 ? (图片来源:htt...

2175

扫码关注云+社区

领取腾讯云代金券