Loading

Canal

什么是canal

官话就不说了,直接一句话 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的实现是基于mysql的主从复制,

Master mysql会将数据变更的操作记录到二进制文件中 binlog ,此时Slave mysql 会有一个线程不断地去读取该文件中的增量内容,然后写入到自己的中继日志 reloylog中,另一个线程负责执行reloylog中的记录,对从数据库的数据进行跟新,canal就是这么个原理,他同样会去读取该二进制文件,并通知下游的服务进行相关信息的跟新。

canal的使用场景

canal的主要使用场景是用于缓存的跟新,保证数据库和缓存的一致性,相比于原来的更新数据库和更新缓存耦合的操作,使用canal来进行缓存的跟新,解除了更新数据库和更新缓存耦合,减少了代码的复杂程度,只需分别关注更新数据库和更新缓存的操作即可

posted @ 2023-09-01 17:30  花园SON  阅读(8)  评论(0编辑  收藏  举报