1. canal

Canal,阿里巴巴 MySQL binlog 增量订阅&消费组件,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

在这里插入图片描述
首先了解一下mysql主备复制原理
  (1)master主库将改变记录,发送到二进制文件(binary log)中
  (2)slave从库向mysql Master发送dump协议,将master主库的binary log events拷贝到它的中继日志(relay log)
  (3)slave从库读取并重做中继日志中的事件,将改变的数据同步到自己的数据库

在这里插入图片描述
Canal 工作原理:

  1. canal 模拟 mysql slave 的交互协议,伪装自己为 mysql slave,向 mysql master 发送 dump 协议
  2. mysql master 收到 dump 请求,开始推送 binary log 给 slave(也就是 canal)
  3. canal 解析 binary log对象(原始为 byte 流)

Canal 包含两个组成部分:服务端和客户端。服务端负责连接至不同的 MySQL 实例,并为每个实例维护一个事件消息队列;客户端则可以订阅这些队列中的数据变更事件,处理并存储到数据仓库中。

2. canal安装

使用Canal实现redis和mysql的同步

Canal 详解 Mysql与Redis数据同步 解决方案

3. 客户端代码

Canal 实现Mysql Redis数据同步

如此以来即可实现:mysql的数据类实时同步至redis
当然,redis的数据也可以同步至mysql – 在写入redis时也可以异步去更新mysql的数据

通常是 读redis写mysql
所以在首先读取redis数据时若发现没有对应的key,则可以再到mysql中读取;
在首先写入mysql时可以使用以上方案同步至redis;

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐