当前位置:   article > 正文

SpringBoot2>08 - Logstash同步数据库数据到ES_springboot logstash

springboot logstash

扯淡:

上一章遗留了ES的索引和数据库的同步采取API操作非常慢这个问题。本章将采用Logstash解决这一问题。ELK(Elasticsearch , Logstash, Kibana),我们肯定听说过,一般在大型项目中用于搭建日志分析系统,1、ES:搜索引擎,2、Logstash:搜集、传输、处理日志或其他数据的工具,3、Kibana:将日志分析可视化。本章仅使用Logstash从数据库同步数据到ES。

个人学习总结:
链接:【springboot、springcloud、docker 等,学习目录

Logstash使用:

1、安装:下载解压即可。

下载地址:

Download Logstash Free | Get Started Now | Elastic

2、首次运行测试:

进入bin目录执行命令:

  1. # 测试 stdin:键盘输入 stdout:屏幕输出
  2. logstash -e 'input { stdin { } } output { stdout {} }'

键盘输入回车,若看到屏幕输出即安装成功。

参数:

-e :执行

-f :指定文件

同步数据库数据到ES:

1、MySQL有如下表:

2、Logstash安装目录下新建文件夹mysqletc(路径、名称不固定,建议如此)

3、mysqletc中新建mysql.conf(名称不固定)。

mysql.conf(根据需求对应修改):

  1. input {
  2.   jdbc {
  3.       # mysql jdbc connection string to our backup databse
  4.       jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/springboot2.0?useSSL=false&useUnicode=true&characterEncoding=utf8"
  5.       # the user we wish to excute our statement as
  6.       jdbc_user => "root"
  7.       jdbc_password => "root"
  8.       # the path to our downloaded jdbc driver  
  9.       jdbc_driver_library => "E:/es/logstash-5.6.8/mysqletc/mysql-connector-java-5.1.44.jar"
  10.       # the name of the driver class for mysql
  11.       jdbc_driver_class => "com.mysql.jdbc.Driver"
  12.       # 是否分页
  13.       jdbc_paging_enabled => "true"
  14.       # 每页记录数
  15.       jdbc_page_size => "6"
  16.       # 以下对应着要执行的sql的绝对路径。
  17.       #statement_filepath => ""
  18.       # 简单SQL可直接写到此处
  19.       statement => "select id, name, content, writer from es_article"
  20.       #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
  21.       schedule => "* * * * *"
  22.   }
  23. }
  24. output {
  25.   elasticsearch {
  26.       #ESIP地址与端口
  27.       hosts => "127.0.0.1:9200" 
  28.       #ES索引名称(自己定义的)
  29.       index => "article"
  30.       #自增ID编号
  31.       document_id => "%{id}"
  32.       document_type => "articles"
  33.   }
  34.   stdout {
  35.       #以JSON格式输出
  36.       codec => json_lines
  37.   }
  38. }

可修改的地方:

  • 数据库的连接、驱动等信息,因为Logstash亦可支持其他数据库。

  • 分页相关。

  • statement :查询数据库的SQL,字段为需要同步到ES中的字段。

  • schedule :定时表达式,最小单位为分钟,注意与spring task中的@schedule (cron = "") 区分开。

4、启动Logstash(ES相关软件都已启动):

  1. # 启动Logstash -f:指定自定义输入输出文件
  2. logstash ‐f ../mysqletc/mysql.conf

5、控制台:

看到自定义的查询SQL语句,根据自定义配置文件配置(schedule => "* * * * *"),每分钟执行一次。

6、ES监控:http://127.0.0.1:9100/

可看到数据库中数据已同步到ES。

至此,Logstash同步表数据到ES中完成。

TIPS:

1、相同的数据会被第二次执行时覆盖。
2、前一次同步的数据不会因为第二次同步没有该数据而删除。
3、综上,建议对需要同步到ES的表作假删除操作,即标识符删除(例如:flag: 0/1)


个人学习分享
更多 springboot、springcloud、docker 文章,关注微信公众号吧:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/936284
推荐阅读
相关标签
  

闽ICP备14008679号