Cannal组件

1.Cannal入门

什么是canal
当mysql发生新增,修改,我们可以利用cancal监控到这个修改的数据,并将这个数据写到消息队列,供实时计算框架使用。
cancal主要支持了MYSQL的Binlog解析,解析完成后才利用Cancal Client来处理获得的相关数据

什么是mysql的binlog
MYSQL的二进制日志可以说是MYSQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句),以事件形式记录,还包含语句执行的消耗时间。
二进制有两个重要的使用场景:
1.主从数据同步
2.数据恢复

binlog分类
binlog的格式有三种,分别是STATEMENT.MIXED,ROW

  • statement:语句级,binlog会记录每一次执行写操作的语句
  • row:行级,binlog会记录每次操作后每行记录的变化,保持数据的绝对一致性。占用空间较大
  • mixed:statement的升级版,默认情况还是statement,但是当函数中包含了uuid(),自增字段的表被更新,执行插入语句时,会按照row方式处理。节省空间,同事兼顾了一定的一致性

2.Cannal工作原理

1.MySQL主从复制过程

  1. Master主库将改变记录,写到二进制日志中
  2. Slave从库向MySQL Master发送dump协议,将Master主库的binary log events拷贝到它的中继日志(relay log)
  3. Slave从库读取并重做中继日志中的事件,将改变的数据同步到自己的数据库

canal 工作原理
把自己伪装成Slave,假装从Master复制数据

2.使用场景
1.原始场景:阿里Otter中间件的一部分
Otter是阿里用于进行异地数据库之间的同步框架,Canal是其中一部分

2.更新缓存
在这里插入图片描述
3.抓取业务表的新增变化数据,用于制作实时统计

步骤:

  1. 修改mysql配置文件my.cnf中的binlog_format为row模式,指定需同步的数据库binlog-do-db
  2. 给canal赋予只读权限
  3. 配置mysql服务器地址及用户名密码

TCP模式
客户端,服务端模式
自己编写客户端代码
kafka模式
采集后直接发送到消息队列中

canal数据结构
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华华华华华12138

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值