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管理界面。

  • 相关阅读:
    装完某些软件之后IE主页被https://www.hao123.com/?tn=93453552_hao_pg劫持
    Python之向函数传递元组和字典
    Python之变量作用域
    Python之循环遍历
    Python之元组、列表and 字典
    Python数据类型
    Python运算
    Python变量空间
    Python编译源文件& 代码优化
    299. Bulls and Cows
  • 原文地址:https://www.cnblogs.com/yoyoma0355/p/14656608.html
Copyright © 2011-2022 走看看