07-架构2023版-centos+docker部署Canal 实现多端数据同步

canal 工作原理

  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
  • MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  • canal 解析 binary log 对象(原始为 byte 流)

基于日志增量订阅和消费的业务包括

  • 数据库镜像
  • 数据库实时备份
  • 索引构建和实时维护(拆分异构索引、倒排索引等)
  • 业务 cache 刷新
  • 带业务逻辑的增量数据处理

我们实际业务中,常用于缓存层数据实时更新, 以往的方式 :

1. 手动删除和更新缓存, 高并发下会造成脏数据。 

2. 消息队列方式,延时双删。 这会造成中间有间隔时间数据不一致, 另外对代码有侵入性。(也就是说需要主动的推送消息队列,订阅方去消费双删,这个是和业务无关的代码)

开始: 

1. mysql 服务器需要开发binlog 功能

如果是之前做过了主从复制,那么binLog是已经开启了的。参考

03-架构2023版-centos+docker部署mysql(主从复制版)

如果没有开启过的,就在my.cnf 中增加以下配置。 然后重启mysql

[mysqld]
log-bin=mysql-bin # 开启

你可能感兴趣的:(百万架构师重要笔记,docker,微服务专栏,架构,centos,docker,canal)