一、准备

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 defaults
Could not find log4j2 configuration at path //usr/share/logstash/config/log4j2.properties. Using default config which logs errors to the console
解决办法:
mkdir -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的更多相关文章

  1. Centos8 部署 ElasticSearch 集群并搭建 ELK,基于Logstash同步MySQL数据到ElasticSearch

    Centos8安装Docker 1.更新一下yum [root@VM-24-9-centos ~]# yum -y update 2.安装containerd.io # centos8默认使用podm ...

  2. centos7配置Logstash同步Mysql数据到Elasticsearch

    Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中.个人认为这款插件是比较稳定,容易配置的使用Logstash之前,我们得明确 ...

  3. 【记录】ELK之logstash同步mysql数据到Elasticsearch ,配置文件详解

    本文出处:https://my.oschina.net/xiaowangqiongyou/blog/1812708#comments 截取部分内容以便学习 input { jdbc { # mysql ...

  4. 使用logstash同步mysql数据到elasticsearch

    下载 logstash tar -zxvf https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gz .tar.gz ...

  5. 使用logstash同步MySQL数据到ES

    使用logstash同步MySQL数据到ES 版权声明:[分享也是一种提高]个人转载请在正文开头明显位置注明出处,未经作者同意禁止企业/组织转载,禁止私自更改原文,禁止用于商业目的. https:// ...

  6. Logstash学习之路(四)使用Logstash将mysql数据导入elasticsearch(单表同步、多表同步、全量同步、增量同步)

    一.使用Logstash将mysql数据导入elasticsearch 1.在mysql中准备数据: mysql> show tables; +----------------+ | Table ...

  7. 推荐一个同步Mysql数据到Elasticsearch的工具

    把Mysql的数据同步到Elasticsearch是个很常见的需求,但在Github里找到的同步工具用起来或多或少都有些别扭. 例如:某记录内容为"aaa|bbb|ccc",将其按 ...

  8. logstash同步mysql数据失败

      问题描述 前提: 项目采用Elasticsearch提供搜索服务,Mysql提供存储服务,通过Logstash将Mysql中数据同步到Elasticsearch. 问题: 使用logstash-j ...

  9. logstash同步mysql数据到mysql(问题一)

    问题 通过logstash同步数据时 字段类型为tinyint时 通过过去 0变成了false  1变为了true 时间类型 变为 2018-10-16T14:58:02.871Z 分析 开始尝试通过 ...

随机推荐

  1. nodejs 安装失败 ,出现error 2502 和error2503

    出现error 2502 和error2503是因为win8的权限问题所导致的,具体说就是要以管理员身份进行安装就可以解决,下面详细来说一下. 1.cmd命令行点击以管理员身份运行. 2.这时候就可以 ...

  2. python笔记9-字符串操作

    1.定义字符串 字符串有下标从0开始,用[]可以来取下标 2.字符串读取 字符串可以使用循环for,每次取一个取出,循环对象的每个元素 3.字符串修改-字符串不可修改 字符串是不可变变量,一旦定义就不 ...

  3. AC Challenge(状压dp)

    ACM-ICPC 2018 南京赛区网络预赛E: 题目链接https://www.jisuanke.com/contest/1555?view=challenges Dlsj is competing ...

  4. nodejs --- formidable模块 , post 上传.

    1. 只有一个文件域: var formidable = require('formidable'), http = require('http'), util = require('util'); ...

  5. 团队-爬虫豆瓣top250项目-模块开发过程

    项目托管平台地址:https://github.com/gengwenhao/GetTop250.git 开发模块功能: "get_info()单个页面的爬取"功能,开发时间:15 ...

  6. 剑指Offer 12. 数值的整数次方 (其他)

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 题目地址 https://www.nowcoder.com/practice/ ...

  7. 测试那些事儿—软测必备的Linux知识(一)

    1.Linux入门须知 1.1文件.目录 linux文件:Linux所有的内容都是以文件形式保存,包括硬件(一切内容皆文件),并且linux不靠扩展名区分文件类型. linux文件有多种基本类型,常见 ...

  8. ArcSDE账户频繁被锁定(Oracle显示12560协议适配器错误)

    最近遇到了一个比较奇葩的问题,启动系统的时候无法显示地图服务,查找原因时发现无法连接Oracle.出现以下错误: 之前遇到这种问题,通常是由于同时安装了64位和32位Oracle客户端,且二者的环境变 ...

  9. [c#]_ELVE_Message多功能用法

     1.   当要显示如图3个按钮时,并要获得单击不同按钮的进行不同的相应时,可以在MessageBoxButtons后面添加一个.(应该英文的点,此处为了醒目,用中文代替)可以看到提示框下方需要几个按 ...

  10. Hyper-V 连网备忘

    最近总是把简单问题复杂化 1.内网连接: Hyper-V 上网一个内网连接足矣,宿主机与客户机可以互访,而且都可以上网.创建一个内网连接,默认配置界面如下: 然后把本地网卡共享给这个新建的内网连接,把 ...