zoukankan      html  css  js  c++  java
  • 初识canal

     

    转载链接:https://blog.csdn.net/yehongzhi1994/article/details/107880162

    思维导图

    前言
    我们都知道一个系统最重要的是数据,数据是保存在数据库里。但是很多时候不单止要保存在数据库中,还要同步保存到Elastic Search、HBase、Redis等等。

    这时我注意到阿里开源的框架Canal,他可以很方便地同步数据库的增量数据到其他的存储应用。所以在这里总结一下,分享给各位读者参考~

    一、什么是canal
    我们先看官网的介绍

    canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

    这句介绍有几个关键字:增量日志,增量数据订阅和消费。

    这里我们可以简单地把canal理解为一个用来同步增量数据的一个工具。

    接下来我们看一张官网提供的示意图:

     

    canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binary log,再发送到存储目的地,比如MySQL,Kafka,Elastic Search等等。

    二、canal能做什么
    以下参考canal官网。

    与其问canal能做什么,不如说数据同步有什么作用。

    但是canal的数据同步不是全量的,而是增量。基于binary log增量订阅和消费,canal可以做:

    数据库镜像
    数据库实时备份
    索引构建和实时维护
    业务cache(缓存)刷新
    带业务逻辑的增量数据处理
    三、如何搭建canal

      略

    总结
    canal的好处在于对业务代码没有侵入,因为是基于监听binlog日志去进行同步数据的。实时性也能做到准实时,其实是很多企业一种比较常见的数据同步的方案。

    通过上面的学习之后,我们应该都明白canal是什么,它的原理,还有用法。实际上这仅仅只是入门,因为实际项目中我们不是这样玩的…

    实际项目我们是配置MQ模式,配合RocketMQ或者Kafka,canal会把数据发送到MQ的topic中,然后通过消息队列的消费者进行处理。

    Canal的部署也是支持集群的,需要配合ZooKeeper进行集群管理。

    Canal还有一个简单的Web管理界面。

  • 相关阅读:
    poj 2676 Suduku (dfs)
    poj 1562 Oil Deposits (dfs)
    poj 2907 Collecting Beepers (dfs)
    poj 1655 Balancing Act (树形dfs)
    poj 3411 Paid Roads (dfs)
    hdu 2896 病毒侵袭 (AC)
    hdu 3065 病毒侵袭持续中 (AC)
    poj 2251 Dungeon Master (bfs)
    java中debug使用
    Swing入门级小项目总结
  • 原文地址:https://www.cnblogs.com/yoyoma0355/p/14656608.html
Copyright © 2011-2022 走看看