Elasticsearch与Mysql数据同步
Elasticsearch就是专门用于搜索的,所以我们会将新增的数据放入Elasticsearch中用于搜索,就有这样的常见的场景,需要将Mysql中的数据同步到Elasticsearch中。
Mysql数据同步到ES类型
Mysql数据同步到ES中分为两种,分别是全量同步和增量同步。全量同步表示第一次建立好ES索引之后,将Mysql中所有数据一次性导入到ES中。增量同步表示Mysql中产生新的数据,这些新的数据包括三种情况,就是新插入Mysql中的数据,更新老的数据,删除的数据,这些数据的变动与新增都要同步到ES中。
Mysql与ES的数据同步实现方式
业界有一些开源方案,开源中间件来实现。
1. 基于Mysql的binlog日志订阅:binlog日志是Mysql用来记录数据实时的变化。
这里主要的是binlog同步组件,目前实现的有国内的阿里巴巴开发的canal。
github地址:https://github.com/alibaba/canal
2. 使用go-mysql-elasticsearch。
go-mysql-elasticsearch是一款使用go语言开发的同步数据到ES的工具。
项目github地址:https://github.com/siddontang/go-mysql-elasticsearch
go-mysql-elasticsearch也是基于Mysql的binlog订阅,也可以使用使用mysqldump的方式。
目前还不支持ES6.x及以上的版本,也不支持mysql8.x版本,同时该项目目前还不够稳定,也在开发中。
3. ES官方数据收集和同步组件logstash