分布式数据同步中间间canal

canal是阿里的一款MySQL数据库Binlog增量订阅与消费组件,它模拟mysql slave与master交互,接收并解析binlog,实现数据的实时同步。主要用于数据恢复、复制和审计。文中介绍了传统的主从同步原理以及canal的功能和安装过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分布式数据同步中间件canal

什么是canal?

目前公司使用的各种异构数据源之间的实时增量同步系统底层有用到canal这个中间件,我们借此可以简单来讲下canal有什么用。
在这里插入图片描述

传统的主从同步原理

master将数据记录到了binlog日志里面,然后slave会通过一个io线程去读取master那边指定位置点开始的binlog日志内容,并将相应的信息写到slave这边的relay日志里面,最后slave会有单独的sql线程来读取这些master那边执行的sql语句记录,达成两端的数据同步。

canal中间件功能

Binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句(除了数据查询语句)信息。而Binlog格式也有三种,分别为STATEMENT、ROW、MIXED。STATMENT模式基于SQL语句的复制,每一条会修改数据的SQL语句会记录。ROW模式除了记录SQL语句之外,还会记录每个字段的变化情况,能够清楚的记录每行数据的变化历史,会占用较多的空间。MIXED比较灵活的记录,当遇到表结构变更的时候,就会记录为STATMENT模式,当遇到了数据更新或者删除情况下就会变为ROW模式。Binlog三个用途分别为数据恢复、复制、审计。
在这里插入图片描述

Canal是阿里MySQL数据库Binlog的增量订阅&消费组件 ,基于数据库Binlog可以监控数据库数据的变化,进而用于数据同步等业务。分为Canal Server与Canal Client,前者读取Binlog解析后存储,后者连接前者消费。

canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议mysql master收到dump请求,开始推送binary log给slave(也就是canal),canal解析binary log对象(原始为byte流),通过对binlog数据进行解析即可获取需要同步的数据,在进行同步数据的过程中还可以加入开发人员的一些额外逻辑处理,比较开放。

canal的安装

下载地址:https://github.com/alibaba/canal/releases
canal配置省略。。。
在这里插入图片描述

本文部分学习参考了:https://www.cnblogs.com/javazhiyin/p/10836846.html
https://zhuanlan.zhihu.com/p/96628405

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值