IT老齐架构300讲笔记(014) 巧用阿里Canal实现MySQL异构数据同步

目录

什么是异构数据?

​场景

如何将后台的数据同步到es?

场景拓展

目标

Canal

​mysql数据库的主从同步的功能

Canal实现

引入MQ解决解耦问题

专栏链接:IT老齐架构300讲笔记专栏


什么是异构数据?



场景

商户在后台系统添加数据,消费者需要在前台获取数据,这时候需要将后台的数据同步到es中。mysql的数据跟es存储的数据不一样,称为异构数据

如何将后台的数据同步到es?

做法:团队A在java代码中新增mysql数据时调用团队B的接口新增es商品数据
缺点:1、协作中两个团队存在代码强耦合,团队A必须了解团队B提供的接口
           2、扩展困难

场景拓展

团队C的MongoDB也要同步mysql的数据,团队A再次修改代码?
目标实现:数据能做到实时同步,团队间解耦,团队A不用多次调用接口。

目标

  1. 要保证数据做到准实时同步
  2. 团队之间解耦


Canal

Canal:阿里巴巴的,基于db增量日志解析提供增量数据订阅和消费



mysql数据库的主从同步的功能

原理:基于binlog实现(二进制日志文件)
场景:用户新增、删除数据,主库执行完相应sql语句后,会将sql记录到binlog中
主库将binlog传给从库,从库接收到binlog的sql,将其写入relaylog(重放日志)中
从库执行relaylog的sql语句,就此实现同步。最后从库还会将执行relaylog的sql语句写入从库的binlog中。

Canal实现

当引入Canal,相当于从库被Canal代替(假的mysql从库主要监听主库的binlog,relaylog的sql语句



怎么执行?
通过Canal的配置文件,当获取新的数据时,自动触发指定的java代码完成同步工作。通过Canal解决了数据监听的问题

引入MQ解决解耦问题

团队A新增删除数据,将消息发到MQ,其他团队从MQ订阅消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值