mysql与es实时同步
mysql与es实时同步
mysql与es实时同步
mysql与es实时同步
部门要求使⽤es替换原来的mysql模糊搜索,现在要把数据迁移到es中,同时为了保证对数据库的修改实时可见,需要实现mysql与elasticsearch实时同步:
1. 第⼀种⽅案是业务中修改mysql表时,使⽤es客户端将修改同步写⼊到es中。乌迪尔出装
2. 第⼆种⽅案是使⽤canal实现同步。
数据库双写
当在对mysql表进⾏insert,update时,同时使⽤es api对es数据库进⾏同步修改,将对应主键id和表名发送到kafka,kafka消费者根据id 和表名去mysql数据库取出修改或新增后的数据,调⽤es客户端向es发送请求,完成同步。
关于文学的名人名言
其中最重要的部分就是和es交互的es客户端了,我尝试过的⽅法有这两种:
接电话>名牌手表
七夕对老婆说的暖心话1.sprint-data-elasticsearch
sprint-data-elasticsearch的操作⽅式是在model中添加document注解,然后类似mysql中继承mapper⼀样继承ElasticsearchRepository就可以对model实例进⾏增删改查,不过这种⽅式和model强耦合,对每个model都要创建对应的Repository。同时配置账号密码需要transportclient,这个不被官⽅推荐。
通过http请求的⽅式操作es,他有Java Low Level REST Client和Java High Level REST Client。
未完待续。
使⽤canal
主要⽤途是基于 MySQL 数据库增量⽇志解析,提供增量数据订阅和消费。
canal提供了三个组件,分别是:兵马俑门票价格
1. deployer ,伪装成mysql的slave,接收binlog解析后传递给消息队列或客户端adapter,可以称为canal的服务端。
2. adapter,接收deployer的数据之后,同步到其他的数据库,官⽹提供了三种是es,HBase,RDB,算是canal的客户端。
3. admim,提供对canal服务端的可视化管理,不⽤每次登陆linux服务器修改配置,通过浏览器就可以操作。
当然你也可以下载源码运⾏。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。