实战ELK(6)使用logstash同步mysql数据到ElasticSearch
一、准备
1、mysql
我这里准备了个数据库mysqlEs,表User
结构如下

添加几条记录

2、创建elasticsearch索引
curl -XPUT 'localhost:9200/user?pretty'

3、准备mysql-connector
下载地址为https://dev.mysql.com/downloads/connector/j/ 下载后解压可以得到connector的jar包 。
我把它放在了"/usr/share/logstash/bin/config-mysql/mysql-connector-java-8.0.13.jar"这个目录下。

二、 新建mysql与es交互的配置文件
cd到logstash目录bin目录下,新建文件夹config-mysql,打开并写入mysql.conf文件内容
cd /usr/share/logstash/bin
sudo mkdir config-mysql
cd config-mysql
vim /usr/share/logstash/bin/config-mysql/mysql.conf
input {
stdin{
}
jdbc {
# 连接的数据库地址和哪一个数据库,指定编码格式,禁用SSL协议,设定自动重连
jdbc_connection_string => "jdbc:mysql://localhost:3306/mysqlEs?characterEncoding=UTF-8&useSSL=false&autoReconnect=true"
# 用户名密码
jdbc_user => "root"
jdbc_password => "root"
# jar包的位置
jdbc_driver_library => "/usr/share/logstash/bin/config-mysql/mysql-connector-java-8.0.13.jar"
# mysql的Driver
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_default_timezone => "Asia/Shanghai"
jdbc_paging_enabled => "true"
jdbc_page_size => ""
#statement_filepath => "config-mysql/test02.sql"
#注意这个sql不能出现type,这是es的保留字段
statement => "select * from User"
schedule => "* * * * *"
#索引的类型
type => "user"
}
} output {
elasticsearch {
hosts => "localhost:9200"
# index名
index => "user"
document_type => "usertype"
# 需要关联的数据库中有有一个id字段,对应索引的id号
document_id => "%{id}"
}
stdout {
codec => json_lines
}
}
注意,目前我们这个output是所有的input都会输出到这个index的。往往这不是我们想要的。
output {
#只输出类型为user的input
if [type] == "user" {
elasticsearch {
hosts => "localhost:9200"
# index名
index => "user"
document_type => "usertype"
# 需要关联的数据库中有有一个id字段,对应索引的id号
document_id => "%{id}"
}
stdout {
codec => json_lines
}
}
}
三、测试同步数据
输入
/usr/share/logstash/bin/logstash -f /usr/share/logstash/bin/config-mysql/mysql.conf
等待一小会

可以看到一分钟执行一次增量同步。
ctrl+c退出
有个提示 warning
WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using --path.settings. Continuing using the defaultsCould not find log4j2 configuration at path //usr/share/logstash/config/log4j2.properties. Using default config which logs errors to the consolemkdir -p /usr/share/logstash/config/
ln -s /etc/logstash/* /usr/share/logstash/config
chown -R logstash:logstash /usr/share/logstash/config/
bin/logstash -e 'input { stdin { } } output { stdout {} }'
查询看看有没有同步过来
curl -XGET 'localhost:9200/user/_search?pretty'

过程中会遇到一些bug,如权限不够的话改变登录用户为root
还可以去/var/log/logstash看日志
mysql数据自动后台同步
有心的同学可能发现,Ctrl+C退出后就不再同步了。这是因为我们的conf文件没有放置在logstash的默认目录下,只需要copy下就可以了。
cp /usr/share/logstash/bin/config-mysql/mysql.conf /etc/logstash/conf.d/
service logstash.service restart
再测试下,发现正常同步了。

实战ELK(6)使用logstash同步mysql数据到ElasticSearch的更多相关文章
- Centos8 部署 ElasticSearch 集群并搭建 ELK,基于Logstash同步MySQL数据到ElasticSearch
Centos8安装Docker 1.更新一下yum [root@VM-24-9-centos ~]# yum -y update 2.安装containerd.io # centos8默认使用podm ...
- centos7配置Logstash同步Mysql数据到Elasticsearch
Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中.个人认为这款插件是比较稳定,容易配置的使用Logstash之前,我们得明确 ...
- 【记录】ELK之logstash同步mysql数据到Elasticsearch ,配置文件详解
本文出处:https://my.oschina.net/xiaowangqiongyou/blog/1812708#comments 截取部分内容以便学习 input { jdbc { # mysql ...
- 使用logstash同步mysql数据到elasticsearch
下载 logstash tar -zxvf https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gz .tar.gz ...
- 使用logstash同步MySQL数据到ES
使用logstash同步MySQL数据到ES 版权声明:[分享也是一种提高]个人转载请在正文开头明显位置注明出处,未经作者同意禁止企业/组织转载,禁止私自更改原文,禁止用于商业目的. https:// ...
- Logstash学习之路(四)使用Logstash将mysql数据导入elasticsearch(单表同步、多表同步、全量同步、增量同步)
一.使用Logstash将mysql数据导入elasticsearch 1.在mysql中准备数据: mysql> show tables; +----------------+ | Table ...
- 推荐一个同步Mysql数据到Elasticsearch的工具
把Mysql的数据同步到Elasticsearch是个很常见的需求,但在Github里找到的同步工具用起来或多或少都有些别扭. 例如:某记录内容为"aaa|bbb|ccc",将其按 ...
- logstash同步mysql数据失败
问题描述 前提: 项目采用Elasticsearch提供搜索服务,Mysql提供存储服务,通过Logstash将Mysql中数据同步到Elasticsearch. 问题: 使用logstash-j ...
- logstash同步mysql数据到mysql(问题一)
问题 通过logstash同步数据时 字段类型为tinyint时 通过过去 0变成了false 1变为了true 时间类型 变为 2018-10-16T14:58:02.871Z 分析 开始尝试通过 ...
随机推荐
- redis-cluster配置
为什么要用redis-cluster 1.并发问题 redis官方生成可以达到 10万/每秒,每秒执行10万条命令假如业务需要每秒100万的命令执行呢? 2.数据量太大 一台服务器内存正常是16~25 ...
- python笔记15-集合
集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不能根据下标来取值,不重复的,也就是说集合中是没有重复的数据 #定义集合:# #方法1:nums = [1,1,1,1,23,4,56]#定义 ...
- Nginx源代码安装
1.确认系统平台及版本 [root@Trial html]# uname -r 2.6.32-696.6.3.el6.x86_64 [root@Trial html]# cat /etc/redhat ...
- ios 中pickerView城市选择和UIDatePicker生日选择
代码详见压缩包
- java面向对象编程(五)--四大特征之抽象、封装
1.抽象 我们在前面去定义一个类时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模版).这种研究问题的方法称为抽象. 2.封装 封装就是把抽象出来的数据和对数据的操作封装在一起 ...
- SQLite相关异常
SQLite的异常大多都和异常IO操作有关,这类异常通常在debug测试的时候难以发现通常和用户的操作有关系,根据我遇到的包括以下几种: 1.No transaction is active 这种情况 ...
- 剑指Offer 53. 表示数值的字符串 (字符串)
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...
- webStrom访问只一个很简单的html文件的时候显示local host无法访问。。
直接从文件夹运行html没问题的,,,然后百度半天,,乱七八糟的答案, 1.谷歌商店安装 JB插件--插件地址 https://chrome.google.com/webstore/detail/je ...
- iOS tableView分割线高度自定义
1.系统自带的集中分割线的形式 myTableView.separatorStyle=UITableViewCellSeparatorStyleNone;(这个是去掉所有分割线)可以通过这个来设置 2 ...
- 解决Myeclipse通过svn导入项目后,项目直接报错问题
在使用Myeclipse2015通过SNV导入项目后,项目直接报错,如下图: 点开后报错详细信息如下: Multiple markers at this line - The type java.la ...