centos7配置Logstash同步Mysql数据到Elasticsearch
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{}}',输出如下,代表启动成功:

关闭
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 => ""
#直接执行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 => ""
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就算完成了,各位如果觉得还有点意义,烦请点一下推荐,加个关注,互相交流,如果安装过程有任何问题或者发现错误,都可以留言交流,共同进步!
centos7配置Logstash同步Mysql数据到Elasticsearch的更多相关文章
- 【记录】ELK之logstash同步mysql数据到Elasticsearch ,配置文件详解
本文出处:https://my.oschina.net/xiaowangqiongyou/blog/1812708#comments 截取部分内容以便学习 input { jdbc { # mysql ...
- Centos8 部署 ElasticSearch 集群并搭建 ELK,基于Logstash同步MySQL数据到ElasticSearch
Centos8安装Docker 1.更新一下yum [root@VM-24-9-centos ~]# yum -y update 2.安装containerd.io # centos8默认使用podm ...
- 实战ELK(6)使用logstash同步mysql数据到ElasticSearch
一.准备 1.mysql 我这里准备了个数据库mysqlEs,表User 结构如下 添加几条记录 2.创建elasticsearch索引 curl -XPUT 'localhost:9200/user ...
- 使用logstash同步mysql数据到elasticsearch
下载 logstash tar -zxvf https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gz .tar.gz ...
- Logstash学习之路(四)使用Logstash将mysql数据导入elasticsearch(单表同步、多表同步、全量同步、增量同步)
一.使用Logstash将mysql数据导入elasticsearch 1.在mysql中准备数据: mysql> show tables; +----------------+ | Table ...
- 使用logstash同步MySQL数据到ES
使用logstash同步MySQL数据到ES 版权声明:[分享也是一种提高]个人转载请在正文开头明显位置注明出处,未经作者同意禁止企业/组织转载,禁止私自更改原文,禁止用于商业目的. https:// ...
- 推荐一个同步Mysql数据到Elasticsearch的工具
把Mysql的数据同步到Elasticsearch是个很常见的需求,但在Github里找到的同步工具用起来或多或少都有些别扭. 例如:某记录内容为"aaa|bbb|ccc",将其按 ...
- Elasticsearch--Logstash定时同步MySQL数据到Elasticsearch
新地址体验:http://www.zhouhong.icu/post/139 一.Logstash介绍 Logstash是elastic技术栈中的一个技术.它是一个数据采集引擎,可以从数据库采集数据到 ...
- 同步mysql数据到ElasticSearch的最佳实践
Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据.ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全 ...
随机推荐
- java小心机(2)| 重载和构造器的小细节
每天进步一点点,距离大腿又近一步! 阅读本文大概需要10分钟 java小心机,为你诉说java鲜为人知的一面 涉及基本数据类型的重载 基本类型能从一个"较小"的类型自动提升到&qu ...
- influxdb基础那些事儿
InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据.而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计 ...
- 对接口运用扩展方法 Applying Extension Methods to an Interface 精通ASP-NET-MVC-5-弗瑞曼 Listing 4-15
- 张旭个人第4次作业—Alpha项目测试
课程 软件工程实践 作业要求 个人第四次作业 团队名称 C#软工造梦厂 作业目标 运行其他组的项目找出问题及提出建议 一.测试人信息 姓名 张旭 学号 201731024123 团队名称 C#软工造梦 ...
- Dynamics CRM 快速获取custom entity
我们可以使用Command来实现快速获取custom entity的值. 创建cmd 并且在nuget中引用 CRMSDK 复制下面的代码. userName 为登陆CRM的email passwo ...
- 优雅写Java之三(IO与文本解析)
一.资源相关 二.路径与文件 读文件: String fileName = "str.txt"; Files.lines(Paths.get(fileName), Standard ...
- oracle 11g数据库服务器安装
系统:windows7旗舰版 64位.oracle数据库服务器版本:oracle11g. 一.下载 1.登录oracle账户: 首先打开谷歌浏览器,输入网址[英文版网址:https://www.o ...
- 上线前一个小时,dubbo这个问题可把我折腾惨了
前因 那是一个月黑风高的夜晚,不管有没有圆圆的月亮,都无法解救要加班的我.这就是苦涩的人生啊! 那天正好是春节回家的日子,定了晚上的票,然后还是上线的日子. 测试在做回归测试的时候,发现一个老功能报错 ...
- 我学React Native开发的经历(一) 第一周学习,环境搭建及demo1,一个导航跳转页面
大家好,这是跋涉者,wadereye,说来惭愧, 我是从2017年8月25日左右开始学习React Native的,因为时间不多, 在学习的过程中,感觉资料非常零散,要趟过的坑巨多,遇到的问题也非常多 ...
- 第一篇:Vue基础
Vue基础 渐进式JavaScript框架 通过对框架的了解与运用程度,来决定其在整个项目中的应用范围,最终可以独立以框架方式完成整个web前端项目 走进Vue 什么是Vue 渐进式JavaScrip ...