数据同步工具

数据同步工具公司要搞数据平台,首当其冲的是把旧库的数据导入到新库中,原本各种数据库大部分都提供了导入导出的工具,但是数据存储到各个地方,mongdb,hbase,mysql,oracle等各种各样的不同数据库,同步起来头都大了因此最近使用了一些数据同步工具,记录下来:离线导入导出DataX阿里的Datax是比较优秀的产品,基于python,提供各种数据村塾的读写插件,多线程执行,使用起…

大家好,又见面了,我是你们的朋友全栈君。

公司要搞数据平台,首当其冲的是把旧库的数据导入到新库中,原本各种数据库大部分都提供了导入导出的工具,但是数据存储到各个地方,mongdb,hbase,mysql,oracle等各种各样的不同数据库,同步起来头都大了

因此最近使用了一些数据同步工具,记录下来:

离线导入导出

DataX

阿里的Datax是比较优秀的产品,基于python,提供各种数据村塾的读写插件,多线程执行,使用起来也很简单,定义好配置json文件执行脚本就可以了,非常适合离线数据,增量数据可以使用一些编码的方式实现,但是也仅仅针对insert数据比较有效,update数据就不适合。

github地址:https://github.com/alibaba/DataX

目前DataX支持的数据库

数据同步工具

Sqoop

http://sqoop.apache.org/

Sqoop是针对大数据而生的,专注于Hadoop(Hive)与传统的数据库数据的传递,是Hadoop生态的一员。在数据库的支持的丰富性上不如DataX,但是如果你用hadoop,用sqoop是更好的选择,因为做Apache的顶级项目,他背后的支持远远比阿里一家公司靠谱的多

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

Kettle

Kettle作为传统ETL工具,目前也都已经有了nosql数据库的支持,而且kettle还有图形界面可以用,使用起来简单多了。而且本来就是专门做ETL的,是Pentaho指定的ETL组件,对于数据清洗等处理数据的环节支持更好。但是数据效率一般,而且在生产环境也很少弄台windows机器,适合小项目,数据量比较小的同步。

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。

Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。

实时同步

实时同步最灵活的还是用kafka做中间转发,当数据发生变化时,记录变化到kafka,需要同步数据的程序订阅消息即可,需要研发编码支持。这里说个mysql数据库的同步组件,阿里的canalotter

canal

https://github.com/alibaba/canal

canal是基于mysql的binlog进行数据同步的中间件。简单来说,Canal 会将自己伪装成 MySQL 从节点(Slave),并从主节点(Master)获取 Binlog,解析和贮存后供下游消费端使用。Canal 包含两个组成部分:服务端和客户端。服务端负责连接至不同的 MySQL 实例,并为每个实例维护一个事件消息队列;客户端则可以订阅这些队列中的数据变更事件,处理并存储到数据仓库中。

使用的话,安装好canal,配置好数据库参数,再编写一个客户端消费canal传过来的数据就可以了。如何使用官网写的挺清楚了,可以直接看官网。

otter

https://github.com/alibaba/otter

otter是在canal基础上又重新实现了可配置的消费者,使用otter的话,刚才说过的消费者就不需要写了,而otter提供了一个web界面,可以自定义同步任务及map表。非常适合mysql库之间的同步。

数据同步工具

而且通过retl_buff表的监控,也可以实现一些全量数据的同步。

但是otter也有一些不好的地方,比如界面上的参数并不是所有的都有用,文档写的一般,不是很清晰。但是想想省了好多事,还是非常好的一款中间件。

详细参见官网,安装部署研究下问题不大。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154010.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js数组排序的几种方法

    js数组排序的几种方法1、冒泡排序以从小到大排序为例,冒泡排序的原理就是通过两层循环把数组中两两相邻的元素进行比较,是的大的元素放到后边,元素交换位置,从而一步步的交换元素的位置,使得最大的元素放到数组的末尾,这样内部的循环就进行了一轮,再根据外部的循环依次再把次大一点的元素放到数组的末尾,从而实现数组的逐步排序。代码如下://冒泡排序vararr=[52,3,8,57,75,2,1];for(…

    2022年4月29日
    89
  • shell语法基础[通俗易懂]

    shell语法基础[通俗易懂]文章目录1.shell基本语法1.1shell中的变量定义和引用1.2shell中无引号、单引号和双引号的区别1.shell基本语法1.1shell中的变量定义和引用(1)变量定义和初始化。shell是弱类型语言(语言中的变量如果有明确的类型则属于强类型语言;变量没有明确类型就是弱类型语言),和C语言不同。在shell编程中定义变量不需要制定类型,也没有类型这个概念。(2)变量定义时可以初始化,使用=进行初始化赋值。在shell中赋值的=两边是不能有空格的。注意:shell对语法非常在意,非常严

    2022年7月12日
    16
  • c语言面试笔试题_c语言面试题库

    c语言面试笔试题_c语言面试题库121、为了避免嵌套的条件语句if-else的二义性,C语言规定:else与(B)匹配。A)缩排位置相同的ifB)其之前最近的ifC)其之后ifD)同一行上的if122、设i和x都是int类型,则对于for循环语句for(i=0,x=0;i<9;i++),下列哪句语正确(B)A)执行8次B)执行9次C)是无限循环D)循环体一次也不执行123、下面程序的运行结果是(C…

    2022年8月27日
    5
  • 设置java环境变量path_配置java环境变量path怎么设置[通俗易懂]

    设置java环境变量path_配置java环境变量path怎么设置[通俗易懂]只需要在path中增加%JAVA_HOME%\bin;即可。完整的JDK安装及环境变量配置如下:安装JDK选择安装目录安装过程中会出现两次安装提示。第一次是安装jdk,第二次是安装jre。建议两个都安装在同一个java文件夹中的不同文件夹中。(不能都安装在java文件夹的根目录下,jdk和jre安装在同一文件夹会出错)安装jdkjre建议安装在默认位置。安装完JDK后配置环境变…

    2022年6月21日
    32
  • Js之Navigator对象「建议收藏」

    Js之Navigator对象「建议收藏」敬请关注博客,后期不断更新优质博文,谢谢Window对象的navigator属性引用的是包含浏览器厂商和版本信息的Navigator对象。Navigator对象的命名是为了纪念Netscape之后NavigatorBU览器译注2,不过所有其他的浏览器也支持它(IE还支持clientlnformation属性,它作为navigator的厂商中立同义词。遗憾的是,其他浏览器并不支持这一更直观…

    2025年10月26日
    2
  • static函数局部变量的使用「建议收藏」

    static函数局部变量的使用「建议收藏」#include&lt;stdio.h&gt;#include&lt;stdint.h&gt;#include&lt;string.h&gt;#include&lt;math.h&gt;#include&lt;stdlib.h&gt;voidstaticFun(void){  static uint8_t data=0;  data++;  data…

    2022年7月16日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号