canal实现Mysql到Elasticsearch实时增量同步

编程

mysql同步ES的方案,基本分两种,根据字段扫描或者通过解析binlog同步。前者的缺点是无法处理逻辑删除、需要频繁的根据某字段做全表扫描。

兼顾性能和ES的兼容性,我们选择了canal。

框架

增量

全量

支持ES版本

github

缺点

canal

binlog

扫描

>=5.6

 

 

elasticsearch-jdbc

jdbc

jdbc

<=2.3.4

https://github.com/jprante/elasticsearch-jdbc

无法处理物理删除

go-mysql-elasticsearch

mysqldump

binlog

<6.0

https://github.com/siddontang/go-mysql-elasticsearch

没有更新了

Logstash-input-jdbc

按照字段扫描

扫描

都可以

 

需要根据某个字段一直扫描,比如update_time,必须加索引;无法处理物理删除


ES版本选择

结论:6.8.0

原因:es的更新版本非常快,经常一个月就一个小版本。6.8.0是19年5月21发布的。为了性能和稳定性,选择6.x。

既然选择了canal,我们需要升级ES版本。老的业务可以继续使用老的集群。本次的实时更新es使用新的集群。升级到哪个版本呢?

先去调研各个版本的feature

ElasticSearch简介及其发展历史

各个版本升级内容

版本

feature

 

 

2.x

 

 

 

5.x

支持lucene6.x,多维浮点字段

Block k-d trees,核心思想是将数字类型编码成定长的字节数组,对定长的字节数组内容进行编码排序,

然后来构建二叉树,然后依次递归构建,目前底层支持8个维度和最多每个维度16个字节,基本满足大部分场景。

在Internal engine级别移除了用于避免同一文档并发更新的竞争锁。

Sliced Scroll

分片数量减少:shrink

reindex

提供了java原生的rest客户端sdk

Text/Keyword 来替换 String

磁盘空间少一半;索引时间少一半;查询性能提升25%

http://www.10tiao.com/html/157/201607/2653160245/1.html

6.x

 

 

elasticsearch 6.x 升级调研报告

7.x

 

 

Elastic Stack 7.0.0 正式发布

以上是 canal实现Mysql到Elasticsearch实时增量同步 的全部内容, 来源链接: utcz.com/z/513992.html

回到顶部