我是靠谱客的博主 平常雨,最近开发中收集的这篇文章主要介绍logstash mysql input_Mysql 同步数据到 Elasticserach(使用logstash-input-jdbc),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

业务中遇到一起商务结算的大量数据(3亿)业务,需要查询响应能快,准备动用ES,这里先完成一个初级作业。

Mysql容易搭建,这里不作复述。

需要个ES-kibana的环境,从系统开始搭建过程太冗长,这里继续享受docker。 windows环境的docker怎么配置,windows环境下 docker部署:Windows使用WSL2安装Docker​www.jianshu.comadc305630a4c84803b33cacd9ff65945.png

拉取改镜像:docker pull nshou/elasticsearch-kibana

启动该镜像:docker run -d -p 9200:9200 -p 5601:5601 nshou/elasticsearch-kibana

其中 9200是ES的端口,5601是kibana的端口。

容器内运行成功:

同步使用logstash-input-jdbc,其中遇到一堆坑,主要参照如下:

为调试方便,把logstash装在win环境里:

2、在bin路径下面执行命令logstash-plugin.bat install logstash-input-jdbc 安装。比如C:eslogstash-7.8.0bin 中间如果遇到java找不到,就在setup.bat首行加路径,比如SET JAVA_HOME=C:Program FilesJavajdk1.8.0_251

3、bin路径下面建文件夹sync-conf,这个里面又同步sql文件和配置文件,只要路径对,放哪里都可以,这里已bin下作示例:

4、内包含如下文件:

5、关键的配置文件sync.conf在启动命令行中需要用到:

如果数据库中的字段类型是json或string类型,但其中是json结构体,可以通过如下filter同步至es,直接变成结构体:

filter {

json {

source => "extcol"

target => "extcol_obj"

remove_field => ["extcol"]

}

}

其中extcol是string字段名。

logstash 支持秒级 :下面是每5秒同步一次

schedule => "*/5 * * * * *"

这里使用一个简单的Mysql数据做同步源头,上图中选中部分。

6、sync.sql里放置数据查询语句,这里可以写的非常复杂,可以联查,作为示例简单处理:

7、启动同步,在bin目录下,命令行为 .logstash.bat -f sync-confsync.conf

周期性刷新数据说明启动运行正常:

实际效果很明显:

首先查询数据库里的数据:

查询ES中的数据,内容一致:

更新数据库内的数据,查询ES中的数据,数据保持同步。

至此Mysql向ES的最基本的数据同步已实现。

转载请注明出处。

微服务拆分方法论请移步:丁云:奇技淫巧之CQRS:系统微服务拆分时的数据解耦​zhuanlan.zhihu.com6b3394e587dc37ff2b84989c63884648.png

JDBC SQL 如何操作 ES,请移步:丁云:X-PACK JDBC连接ElasticSearch Docker图文版​zhuanlan.zhihu.com4cae22b67097f848542dc8cab7ae6934.png

Mycat对Mysql分片分库请移步:丁云:Mycat 一致性hash分库(Mysql)​zhuanlan.zhihu.com53e674cf89d15b489f291cee6c6082a9.png

最后

以上就是平常雨为你收集整理的logstash mysql input_Mysql 同步数据到 Elasticserach(使用logstash-input-jdbc)的全部内容,希望文章能够帮你解决logstash mysql input_Mysql 同步数据到 Elasticserach(使用logstash-input-jdbc)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部