【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。

 

posted @ 2020-10-25 16:03  boluo1230  阅读(526)  评论(0编辑  收藏  举报