DataX简介
DataX 是阿里巴巴内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。
DataX更像是一个数据枢纽,它可以读取多种数据源中数据,经过内部的转换又可以输出到多种数据源中。
其架构设计主要包含三部分:Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework
Writer: Writer为数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。
Framework:Framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。
这里只总结DataX在同步MySQL分库分表的使用。
同步分库中表的数据
我们业务系统的用户基本信息表,被分库存储在不同的库中,下面介绍使用DataX如何将这些分库的数据同步到HDFA中。
下载 & 使用
从Datax Github 中下载源码编译,或直接下载已编译好的工具包。
下载后解压至本地某个目录,进入bin目录,即可运行同步作业:1
2$ cd {DATAX_HOME}/bin
$ python datax.py {YOUR_JOB.json}
配置和使用很简单,只需配置YOUR_JOB.json,在这个文件中配置输入源.
其中 datax.py可以配置多个参数,如下:1
2
3
4
5
6-j # 设置jvm参数,如-Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError
--jobid= # 设置job唯一id
-m # 设置运行模式: standalone(默认), local, distribute.
-p # 动态设置一些参数,当在配置文件设置了一些变量时,如${tableName},那么可以通过-p"-DtableName=your-table-name"来动态设置。
-r # 使用一些reader模版,eg: mysqlreader,streamreader
-w , # 使用一些reader模版,eg: mysqlwriter,streamwriter
同步分库的配置
下面给出同步分库中表数据的配置,content中包含两部分内容,reader和writer,其中reader中配置了mysql的分库地址。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39