当前位置:首页 > 服务端 > centos7配置Logstash同步Mysql数据到Elasticsearch

centos7配置Logstash同步Mysql数据到Elasticsearch

2022年09月16日 19:49:58服务端6

Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。个人认为这款插件是比较稳定,容易配置的使用Logstash之前,我们得明确自己的需求场景是什么,从哪种类型的数据源同步数据到哪种存储库。Logstash版本迭代较快,每个版本的插件都有点区别,比如6.3版本以后output到没有jdbc的插件,然而你如果想使用output的jdbc插件就需要去安装插件(logstash-output-jdbc),也就是说,如果你想用output的jdbc,你就必须使用6.3以下(最好5.x)的版本。这里以Logstash5.3.1版本为例。

1.下载安装

Logstash不支持jdk1.10,建议使用1.8。Logstash版本要与Es版本保持一致。下载地址:https://www.elastic.co/cn/downloads/past-releases/logstash-5-3-1

上传到目录,例如:usr/local/src

解压  tar -zxvf  logstash-5.3.1.tar.gz

重命名 mv logstash-5.3.1 logstash

启动验证:

cd logstash

bin/logstash -e 'input{stdin{}} output{stdout{}}',输出如下,代表启动成功:

centos7配置Logstash同步Mysql数据到Elasticsearch _ JavaClub全栈架构师技术笔记

关闭

ps -ef | grep logstash

kill pid

2.配置目录

配置文件目录:logstash/config

新建配置文件test.conf

下载mysql-connector-java-5.1.30.jar,下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.30

logstash目录下创建一个jar目录,用来存放jar文件 

mkdir jar
在logstash目录下创建一个sql目录,用来存放查询sql文件test.sql

mkdir sql

3.配置文件

Logstash同步数据方式有全量同步和增量同步两种,不同方式配置文件有细微不同。第一次同步时需要全量的数据,之后则需要定时去同步增量数据,使用logstash需要了解一下事项:

1.凡是SQL可以实现的logstash均可以实现(本就是通过sql查询数据)

2.支持每次全量同步或按照特定字段(如自增ID、更新时间)增量同步

3.同步频率可控,最快同步频率每分钟一次(如果对实效性要求较高,慎用)

4.不支持被物理删除的数据同步物理删除ES中的数据(可在表设计中增加逻辑删除字段标识数据删除)

全量同步

test.conf文件内容如下:

input {
  jdbc {
      # mysql 数据库链接,test为数据库名
      jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
      jdbc_user => "root"
      jdbc_password => "root"

      # 驱动路径
      jdbc_driver_library => "/usr/local/src/logstash/jar/mysql-connector-java-5.1.30-bin.jar"

      # 驱动类名
      jdbc_driver_class => "com.mysql.jdbc.Driver"

      #是否分页
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"

      #直接执行sql语句
      #statement =>"select * from test"
      # 执行的sql 文件路径+名称
      statement_filepath => "/usr/local/src/logstash/sql/test.sql"

      #设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      schedule => "* * * * *"

      # 索引类型
      #type => "jdbc"
    }

}

output {
  elasticsearch {
        #es的ip和端口
        hosts => ["http://127.0.0.1:9200"]
        #ES索引名称(自己定义的)
        index => "test_logstash"
        #文档类型(自己定义的)
        document_type => "test"
        #设置es中数据的id为数据库中的字段(一般设置为mysql中主键字段)
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }

}

test.sql文件内容如下:

#sql查询语句,mysql中怎样写,此处就怎样写
select
* from table

指定配置文件启动Logstash:

cd logstash

bin/logstash -f config/test.conf

会看到mysql中数据会在屏幕显示,如果有报错,一般为配置文件出错。

后台启动:nohup bin/logstash -f config/test.conf 

增量同步

test.conf文件内容如下:

input {
  jdbc {
      # mysql 数据库链接,test为数据库名
      jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
      jdbc_user => "root"
      jdbc_password => "root"

      # 驱动路径
      jdbc_driver_library => "/usr/local/src/logstash/jar/mysql-connector-java-5.1.30-bin.jar"

      # 驱动类名
      jdbc_driver_class => "com.mysql.jdbc.Driver"

      #是否分页
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      
      record_last_run => true
      use_column_value => true
      tracking_column => "id"
      last_run_metadata_path => "/usr/local/src/logstash/last_run_record"


      #直接执行sql语句
      statement =>"statement =>"select * from test where id >:sql_last_value""
      # 执行的sql 文件路径+名称
      #statement_filepath => "/usr/local/src/logstash/sql/test.sql"

      #设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      schedule => "* * * * *"

      # 索引类型
      #type => "jdbc"
    }

}

output {
  elasticsearch {
        #es的ip和端口
        hosts => ["http://127.0.0.1:9200"]
        #ES索引名称(自己定义的)
        index => "test_logstash"
        #文档类型(自己定义的)
        document_type => "test"
        #设置es中数据的id为数据库中的字段(一般设置为mysql中主键字段)
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }

}

红色部分是跟全量同步有区别的地方:

record_last_run:记录最后运行结果

use_column_value:记录字段

tracking_column:记录字段名,这里就是id

last_run_metadata_path:记录数据保存位置

sql_last_value:下次在执行同步的时候会将这个值,赋给sql_last_value

启动Logstash后,以后就是根据查询条件增量同步数据了。

到此,使用Logstash同步Mysql数据到Es就算完成了,各位如果觉得还有点意义,烦请点一下推荐,加个关注,互相交流,如果安装过程有任何问题或者发现错误,都可以留言交流,共同进步! 

 

作者:风行天下12
来源链接:https://www.cnblogs.com/yqzc/p/12343264.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/42132.html

标签: Elasticsearch
分享给朋友:

“centos7配置Logstash同步Mysql数据到Elasticsearch” 的相关文章

linux安装elasticsearch部署配置详细说明

    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引...

CenterOS 7 安装Elasticsearch、Kibana

CenterOS 7 安装Elasticsearch、Kibana 环境准备 JDK1.8、Elasticsearch 7.10.0、Kibana 7.10.0 JDK1.8安装 yum install java-1.8.0-op...

Linux安装Elasticsearch

Linux安装Elasticsearch

本文介绍Linux环境如何安装Elasticsearch. 本文环境是在腾讯云服务器CentOS7.2搭建的,JDK1.8,elasticsearch-5.4.2。 1 安装JDK 网上教程很多,也可以参考本人教程之前写的Linux安装...

ElasticSearch安装中文分词插件ik导致elasticsearch容器反复重启

问题:在docker容器的elasticsearch容器的plugin安装并解压了ik压缩包重启后查看elasticsearch状态一直是Restarting 解决办法:注意在解压ik的时候要在一个文件夹中,不能直接解压到plugin下面否则docker logs...

linux安装Elasticsearch详细步骤

linux安装Elasticsearch详细步骤

坑都已经踩好了 照着步骤一次成功  不多废话 走起 # ## 安装java运行环境 elasticsearch是用Java实现的 跑elasticsearch必须要有jre支持 所以必须先安装j...

elasticsearch 安装( 阿里云ECS )、远程访问、启动报错处理

elasticsearch 安装( 阿里云ECS )、远程访问、启动报错处理

附另 2 文章: elasticsearch-head 安装 kibana 安装   前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。   1. 从网上下载到 linux 版...

ECK安装elasticsearch集群及es配置x-pack

目录   ECK安装elasticsearch集群 elasticsearch安装x-pack插件 Elasticsearch Springboot 开发 ECK安装elasticsearch集群 E...

windows环境下elasticsearch安装教程(转载)

windows环境下elasticsearch安装教程(转载)

windows环境下elasticsearch安装教程(超详细) https://www.cnblogs.com/hualess/p/11540477.html 一、安装jdk ElasticSearch是基于lucence开发的,也就是运行需要java jdk...

elasticsearch安装和常用命令 (一)

1.下载elasticsearch最新版7.9 https://www.elastic.co/cn/elasticsearch/ 需要安装jdk 11。 启动:D:\elasticsearch-7.9.0\bin\elasticsear...

elasticsearch堆内存的配置建议

1、将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等 防止内存抖动   2:给多大的堆内存? 给ES的内存配置不是越大越好,建议不能超过32GB,不同jdk版本最大边界值是不同的,对于32位小于32G JVM才采用内存对象指针压缩技术,...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。