Datax的同步调研

参考文档:官网地址

GitHub - alibaba/DataX: DataX是阿里云DataWorks数据集成的开源版本。

DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。

Datax的同步调研_第1张图片

Dolphinscheduler对Datax的支持

Dolphinscheduler配置Datax踩坑记录_dolphinscheduler datax_若小鱼的博客-CSDN博客

挑战海量数据:基于Apache DolphinScheduler千亿级数据应用实践 (baidu.com)

Sqlserver同步到MySQL

Datax系列(二)Mysql和SqlServer同步 – 星伴同行 (fcors.com)

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "sqlserverreader", 
                    "parameter": {
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:sqlserver://Ip:1433;DatabaseName=ecology"], 
                                "table": ["HrmResource"]
                            }
                        ], 
			"column": [
                            "id","loginid","lastname"
                        ],
                        "password": "ganiOA2017", 
                        "username": "sa"
                    }
                }, 
                "writer": {
                    "name": "mysqlwriter", 
                    "parameter": {
                        "column": ["id","loginid","lastname"], 
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://192.168.8.21:3310/test?useUnicode=true&useSSL=false&characterEncoding=utf8", 
                                "table": ["company_user"]
                            }
                        ], 
                        "password": "123456", 
                        "username": "root", 
                        "writeMode": "replace"
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": "10"
            }
        }
    }
}

Datax 使用说明

DataX/userGuid.md at master · alibaba/DataX · GitHub

Datax 3.0 介绍

DataX/introduction.md at master · alibaba/DataX · GitHub

​ DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。

Datax的同步调研_第2张图片

Datax的全量同步和增量同步

dataX 配置时间增量同步_datax增量同步_大熊程序猿的博客-CSDN博客

DataX 数据全量,增量同步方案_datax的全量和增量采集如何配置-CSDN博客

datax主要是解决离线全量同步,通过select语句或者dump指令提取数据,然后同步到目标,数据仓库典型用法。

DataX不适合实时数据同步或太频繁的定时同步,因为同步都需要去读取源表,频率过大对源表会造成压力。

otter:基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统

什么是canal?

otter之前开源的一个子项目,开源链接地址:http://github.com/alibaba/canal

mirrors / alibaba / otter · GitCode

otter安装与使用终极总结 (xjx100.cn)

SQLserver到MySqL的全量同步

DataX-阿里开源离线同步工具在Windows上实现Sqlserver到Mysql全量同步和增量同步_霸道流氓气质的博客-CSDN博客

定时增量同步

相比全量同步,增量同步增加了用某个字段来判断改条数据是否被更新,具体体现在 Shell 脚本和 Json 文件中

DataX | MySQL多表全量同步和多表定时增量同步-蒲公英云 (dandelioncloud.cn)

1.准备工作:

给需要同步的表增加用于增量同步判断的字段,可用ID也可以用时间,个人建议用时间,更方便。

给读库的table1表加上实时更新的时间记录字段(可根据需要是否给写库也加上,我这里是加上的):

alter table table1 add column `curr_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间(DataX数据采集使用)';

MySQL | 设置时间字段为自动更新(CURRENT_TIMESTAMP)

datax 持续数据同步_采用DataX实现多表增量数据同步 (xjx100.cn)

DataX用来做批量数据迁移很适合,能够保证数据的一致性,性能也很好,结合时间戳字段,用来实现数据定时增量同步也是可以的,如每分钟或每5分钟增量同步一次数据。用DataX这个方案做增量同步要求每个表带一个时间戳字段,删除数据采用逻辑删除,这个要求也比较容易做到。

增量同步实现

实现增量同步需要在表中增加一个时间戳字段,如update_time,在同步配置文件中,通过where条件,根据时间戳字段筛选当前时间向前一段时间内的增量数据。

Datax介绍:

罗海伟:阿里云万亿级数据集成架构实践 - 知乎 (zhihu.com)

如何使用DataX同步全量数据_表格存储-阿里云帮助中心 (aliyun.com)

1、databus活跃度不高,datax和canal 相对比较活跃。

2、datax 一般比较适合于全量数据同步,对全量数据同步效率很高(任务可以拆分,并发同步,所以效率高),对于增量数据同步支持的不太好(可以依靠时间戳+定时调度来实现,但是不能做到实时,延迟较大)。

3、canal 、databus 等由于是通过日志抓取的方式进行同步,所以对增量同步支持的比较好。

4、以上这些工具都缺少一个监控和任务配置调度管理的平台来进行支撑。

重点参考这个文档:

DataX-阿里开源离线同步工具在Windows上实现Sqlserver到Mysql全量同步和增量同步_霸道流氓气质的博客-CSDN博客

可视化页面部署:

datax-web: DataX集成可视化页面,选择数据源一键生成JSON并脱敏,集成定时任务,支持分布式,支持增量获取,实时查看运行日志,监控执行器资源,kill运行进程。 - 木兰确实 (mulanos.cn)

你可能感兴趣的:(大数据)