暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MySQL-表数据需要同步到ES索引中怎么办?

原创 1727 2023-08-25
252

Snipaste_20240125_134647.png

MySQL实时同步表数据到ES索引

了解了一下还是有很多同学都有类似的需求:
由于业务场景需要,将MySQL的一张表或N张表同步到Elasticsearch中。
毕竟逻辑运算MySQL很强,但是全文检索还歹是ES来。

当然同步的方法很多,业界最常见的就是canal+组件,或通过其他类似管道的组件进行同步。
其原理都相同,就是模拟成从库实时监控MySQL的binlog进行数据处理后发送消息到下游中间件或直达目标组件。

今天给大家推荐一款中间件 “go-mysql-elasticsearch” 下载地址
该中间件为热心大牛开源中间件,其功能强大稳定性高,源码清晰,有golang功底的小伙伴二开也比较轻松。
我们公司虽然也用canal实现很多功能,但是这个go-mysql-elasticsearch相较canal更轻量。可以直接模拟成从库实时监控binlog的变化,同时支持解析mysqldump内容(这点非常优秀,解决了实时同步前增量同步的烦恼),然后直接将解析后的数据写入ES索引中,不再需要其他任何中间件辅助,不过经过测试目前仅支持ES8.X前的写入。

实操

部署起来非常简单,一个zip包,解压即用。
提供了配置文件模板,可按需更改:

1、配置数据库地址

c.png

2、配置对应规则

d.png

这里其实是可以在一个配置文件中配置多组对应关系如:

a.png

但是为了保证稳定性与逻辑清晰,我们可以一个配置文件只配置一组对应关系,需要同步多张表时拆分成多个任务就行了。

3、配置字段匹配规则

f.png

4、支持指定字段(同步需要同步的字段)

g.png

5、支持数据预处理
这里的支持方式是通过ES的管道来实现的

h.png

总结:

该中间件还是非常好用的,即使mysql在高并发的情况下,数据依旧可以秒级同步到es中。我司已长期在生产环境中使用,并未发现异常。
我司经过二开,目前还支持配置只插入或只更新或只删除(其实就是解析binlog的时候过滤一下)
y.png
前段时间由于将elasticsearch7.x升级到8.x导致该中间件无法使用,原因是es8.x已取消type,但是市面上大多数mysql同步es的中间件都还未作处理(canal也是),所以再次二开,目前也支持同步到es8。

还是那句学的越多会的越少,在我有mysql同步数据的需求时,别人已经在多年前就开发好了相关中间件。只能说站在大牛的肩膀上,向更多小伙伴分享了

二维码.png

最后修改时间:2024-06-05 11:38:11
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论