ElaticSearch与MySQL数据同步

在分布式开发中,如果数据库中标的数据被修改,怎样让数据保持同步呢?

下面主要介绍一下利用Canal+RabbitMQ实现Elaticsearch与MySQL的数据同步:

 以分布式在线教育系统为例:

 

 实现步骤:

1.课程服务队数据库课程表进行增删改的操作,MySQL就将binlog发送给Canal。

2.数据同步服务通过Canal监听器获得具体的数据,将数据发送给RabbitMQ消息队列。

3.搜索服务通过监听RabbitMQ消息队列获得数据,然后将数据同步更新到ElasticSearch中。

Canal简介

Canal是阿里巴巴的数据同步工具,最初主要为了应对杭州和美国的双机房部署问题,目前也是国内互联网企业经常使用的数据增量同步解决方案。

Canal原理:

  1. canal将自己伪装为MySQL的slave,向master发送dump协议

  2. master收到dump协议,数据发生修改后推送binary log给canal

  3. canal解析binary log对象,转换为增量数据,同步到ES、Redis等

Canal客户端

官方客户端见官网,这里只写第三方客户端,地址如下:

https://github.com/chenqian56131/spring-boot-starter-canal

1) 引入依赖

首先下载该开源项目,安装到本地的maven中,在项目中就可以使用该依赖

在idea这个位置添加cannal

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值