Canal,阿里巴巴 MySQL binlog 增量订阅&消费组件,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
首先了解一下mysql主备复制原理:
(1)master主库将改变记录,发送到二进制文件(binary log)中
(2)slave从库向mysql Master发送dump协议,将master主库的binary log events拷贝到它的中继日志(relay log)
(3)slave从库读取并重做中继日志中的事件,将改变的数据同步到自己的数据库
Canal 工作原理:
Canal 包含两个组成部分:服务端和客户端。服务端负责连接至不同的 MySQL 实例,并为每个实例维护一个事件消息队列;客户端则可以订阅这些队列中的数据变更事件,处理并存储到数据仓库中。
如此以来即可实现:mysql的数据类实时同步至redis
当然,redis的数据也可以同步至mysql – 在写入redis时也可以异步去更新mysql的数据
通常是 读redis写mysql
所以在首先读取redis数据时若发现没有对应的key,则可以再到mysql中读取;
在首先写入mysql时可以使用以上方案同步至redis;