• 【Canal】【MySQL】解密阿里Canal :(一)Canal工作原理


    • 我们先回顾一下,传统MySQL主从复制工作原理:
    1、现在有一个客户端,往主库(Master)中写入一条数据;
    
    2、主库(Master)会记录一条数据变化,向BinLog中插入一条数据日志;
    
    3、I/O Thread会不停的调度(即过一会执行一下),向BinLog中发起一个请求,读取一下BinLog中的二进制日志
    
    4、BinLog接收到请求后,把数据发送到从库(Slave)中的;
    
    5、I/O Thread 接收到数据以后,把数据写入到RelayLog中;
    
    6、SQL Thread也是会不停的调度,向Relay Log发送一个请求,读取一下RelayLog中的临时日志
    
    7、RelayLog接收到请求后,把数据发送到SQL Thread,并根据日志把数据写入从库中

    • 接下来,我们也先看一下Canal的工作原理:
    1、canal其实模拟的Mysql Slave的交互协议,把自己伪装成Mysql Slave,
    
        向Mysql Master发送一个dump请求;
    
    2、Master收到这个dump请求后,开始推送binlog日志给slave(这个slave指canal);
    
    3、canal解析master发送过的binlog对象(当前binlog原始数据为byte流)

    • 一般Canal的使用场景有什么呢?
    1、数据库实时备份
    
    2、业务cache刷新
    
    3、search build (搜索的构建)
    
    4、价格变化等重要业务信息
    
    5、带业务逻辑的增量数据处理
    
    6、跨数据库的数据备份(异构数据同步),例如:mysql => oracle,
         mysql => mongo,mysql => redis, mysql=>elasticsearch 等

    当前canal主要支持的Mysql版本有:5.1.x、5.5.x、5.6.x、5.7.x、8.0.x。

  • 相关阅读:
    Spring中的AOP实现思路
    手写IOC-SPRINGPMVC-CONNPOOL
    职责链模式
    判断一个二叉树是不是对称二叉树
    合并区间
    shell命令中用source 和sh(或者bash)执行脚本的区别,以及export的作用
    angular指令的compile,prelink 和 postlink以及controller
    angular的启动原理
    高并发优化方法
    搭建ssm框架的一个小坑
  • 原文地址:https://www.cnblogs.com/boluopabo/p/13866874.html
Copyright © 2020-2023  润新知