数据同步技术

    

本次旨在分享数据同步技术的相关知识点,包括数据同步概述、数据同步工具、数据库、数据同步到大数据平台。

首先来介绍一下数据同步的概念:

        数据同步是为保持数据源目的地数据一致性而进行的数据传输、处理的过程。

数据同步的场景:

        1、主数据库与备份数据库之间的数据备份。

        2、主系统与子系统间的数据更新。

        3、属于同类型不同集群数据库间的数据同步。

        4、不同区域、不同数据库类型间的数据传输交换。

        5、大数据系统中数据从业务系统同步进入数据仓库、数据从数据仓库同步进入数据服务或者数据应用。


数据源数据类型包括:

        1、源于关系型数据库的结构化数据。(如MySQL、Oracle、DB2、SQL Server等);

        2、源于非关系型数据库的非结构化数据(如HBase、MongoDB等);

        3、源于文件系统的结构化或非结构化数据(如阿里云对象存储OSS、为文件存储NAS等);


        数据同步需要针对不同的数据类型及业务场景,选择不同的同步方式。

数据同步方式:

        1、直连同步

        2、数据文件同步

        3、数据库日志解析同步

①直连同步:直连同步是通过定义好的规范接口API和基于动态链接库的方式直接连接业务库。

 优点:配置简单,实现容易,比较适合操作型业务系统的数据同步。

缺点:对源系统的性能影响较大,当执行大批量数据同步时会降低业务系统的性能。


②数据文件同步:是指通过约定好的文件编码、大小、格式等,直接从源系统生成数据的文本文件。由专门的文件服务器,加载到目标数据库系统中,当数据源包含多个异构的数据库系统时,这种方式比较简单、适用。


③数据库日志解析同步:数据库日志解析同步是指通过解析日志文件获取发生变更的数据,从而满足在增量数据同步的需求。

优点:性能好,效率高,实现了实时与准实时同步的能力。

缺点:投入较大,需要在源数据库与目标数据库之间部署一个系统实施抽取数据,数据漂移和遗漏。


        根据数据同步时延性要求的不同,数据同步可以分为离线批量数据同步和实时数据同步。

        离线数据同步通常是针对结构化、半结构化批量数据进行同步。而实时数据通常是针对数据流进行同步处理。


下面来介绍一下常用的数据同步工具。

离线数据同步工具

Sqoop:是一款开源的工具,主要用于在Hadoop与传统的关系数据库间进行数据同步。

Kettle:开源的ETL工具,数据抽取高效稳定。

DataX:阿里云数据同步产品,是一个异构数据源离线同步工具,提供各种数据存储的读写插件,多线程执行,适用简单。致力于实现各种异构数据源间的稳定高效的数据源同步功能。

实时数据同步工具有OGG、Debezium、DTS等

OGG:OGG是跨平台异构数据库之间的数据同步工具。

Debezium:是监控是数据库的日志变化,通过对行级日志的处理来达到数据同步。

DTS:是阿里云数据同步产品,实现数据源之间的数据实时同步。


数据库数据同步到大数据平台

        将关系型数据库同步到大数据平台的整体逻辑就是,从MySQL或者Oracle等关系型数据库使用数据同步工具,将数据同步到Hadoop或者阿里云,MaxCompute这样的大数据平台。

        在这里Sqoop工具的含义是将“SQL到Hadoop和Hadoop到SQL”,是Hadoop和关系型数据库之间数据迁移的工具,可以使用Sqoop将数据从关系型数据库导入到Hadoop的HDFS、Hive HBase等。或者反过来,将数据从HDFS、Hive、HBase导出到MySQL、Oracle等关系型数据库中。

 Sqoop import数据导入参数

         通过参数connect、username、password等设置源数据库的连接方式,通过table、where、columns、query等参数设置数据来源,通过target-dir、fields-terminated-by等参数设置目标文件。通过num-mappers等参数设置执行过程。

        我们来举个例子,假如将MySQL数据库中的emp表中的数据导入到Hadoop集群HDFS文件中,在此操作过程中,将emp表中满足条件的所有数据导入到Hadoop的HDFS文件中,emp表中每一行数据对应hdfs文件中的每一行数据,文件之中数据字段用特定的分隔符分隔开。(默认为逗号)

 也可以通过fields-terminated-by参数指定分隔。

        默认情况下数据导入是全量的,即将关系型数据库中所有满足条件的数据到导入到HDFS中,但在生产环境中系统可能会定期从与业务相关的关系型数据库,向Hadoop导入数据,导入后进行后续离线分析,此时不可能再将所有数据重新导入一遍,而是采用另一种导入模式,即增量导入。

        增量导入分为两种,一种是基于序列值增量导入,第二种是基于时间戳的增量导入。进行增量导入之前,需要先进行一次全量导入,后续的增量导入可以大于指定序列值对应的数据或指定时间戳之后的数据。

总结

(分享日常学习内容,在这个平台当作自己的学习笔记。后续会一直更新,有兴趣的同学欢迎一起学习。)(如有错误欢迎各位技术大佬指正。)(如有意问欢迎私信,看到会第一时间回复的)

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IMMOMMOI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值