一、准备

1、mysql

我这里准备了个数据库mysqlEs,表User

结构如下

添加几条记录

2、创建elasticsearch索引

  1. 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文件内容

  1. cd /usr/share/logstash/bin
    sudo mkdir config-mysql 
    cd config-mysql 
    vim /usr/share/logstash/bin/config-mysql/mysql.conf
  1. input {
  2. stdin{
  3. }
  4. jdbc {
  5. # 连接的数据库地址和哪一个数据库,指定编码格式,禁用SSL协议,设定自动重连
  6. jdbc_connection_string => "jdbc:mysql://localhost:3306/mysqlEs?characterEncoding=UTF-8&useSSL=false&autoReconnect=true"
  7. # 用户名密码
  8. jdbc_user => "root"
  9. jdbc_password => "root"
  10. # jar包的位置
  11. jdbc_driver_library => "/usr/share/logstash/bin/config-mysql/mysql-connector-java-8.0.13.jar"
  12. # mysql的Driver
  13. jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_default_timezone => "Asia/Shanghai"
  14. jdbc_paging_enabled => "true"
  15. jdbc_page_size => ""
  16. #statement_filepath => "config-mysql/test02.sql"
        #注意这个sql不能出现type,这是es的保留字段
       statement => "select * from User"
  1. schedule => "* * * * *"
  2. #索引的类型
  3. type => "user"
  4. }
  5. }
  6. output {
  7. elasticsearch {
  8. hosts => "localhost:9200"
  9. # index名
  10. index => "user"
  11. document_type => "usertype"
  12. # 需要关联的数据库中有有一个id字段,对应索引的id号
  13. document_id => "%{id}"
  14. }
  15. stdout {
  16. codec => json_lines
  17. }
  18. }

注意,目前我们这个output是所有的input都会输出到这个index的。往往这不是我们想要的。

  1. output {
      #只输出类型为user的input
      if [type] == "user" {
  2.  
  3.   elasticsearch {
  1.    hosts => "localhost:9200"
  2.    # index名
  3.    index => "user"
  4.    document_type => "usertype"
  5.    # 需要关联的数据库中有有一个id字段,对应索引的id号
  6.    document_id => "%{id}"
  7.    }
  8.    stdout {
  9.    codec => json_lines
  10.    }
      }
    }

三、测试同步数据

  1. 输入
  1. /usr/share/logstash/bin/logstash -f /usr/share/logstash/bin/config-mysql/mysql.conf

等待一小会

可以看到一分钟执行一次增量同步。

ctrl+c退出

  1. 有个提示 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
解决办法:
  1. mkdir -p /usr/share/logstash/config/
  2. ln -s /etc/logstash/* /usr/share/logstash/config
  3. chown -R logstash:logstash /usr/share/logstash/config/
  4. bin/logstash -e 'input { stdin { } } output { stdout {} }'

查询看看有没有同步过来

  1. curl -XGET 'localhost:9200/user/_search?pretty'

过程中会遇到一些bug,如权限不够的话改变登录用户为root

还可以去/var/log/logstash看日志

mysql数据自动后台同步

有心的同学可能发现,Ctrl+C退出后就不再同步了。这是因为我们的conf文件没有放置在logstash的默认目录下,只需要copy下就可以了。

  1. 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. 创建Car类,包含name,price属性,构造器等方法,创建测试类,在main方法中创建Set接口的实现类,添加5个以上的Car对象,遍历集合元素,验证重复元素是否过滤了; 如果没有过滤,实现过滤功能;把每个小车的price降10000元,再遍历,查看price是否已改变

    i汽车类 package com.lanxi.demo2_3; public class Car { private String name; private int price; @Override ...

  2. js--------1.时间

    //获取当前时间 yyyy-MM-dd function getNowFormatDate() { var date = new Date(); var seperator1 = "-&qu ...

  3. python 安装scrapy need vistual c++ 14.0 的正面解法

    为什么一堆教程里面,都是侧面的. 因为需要你自己去正面刚 正题: 这个问题要的是 build tools 人(控制台)说的很清楚了, 给的链接不是直接解决问题的链接(我安装了 vs_redis.exe ...

  4. 18-09-20 关于Xlrd和Xlwt的初步学习

    #一关于利用xlrd 打开Excel 读取数据的简单介绍import xlrd """ #1 xlrd 基础的用法:读取,获取sheet,获取内容,行数,列数def re ...

  5. python自学第12天 模块

    json , pickle模块 json,用于字符串和python数据类型间进行转换 pickle,用于python特有的类型和python数据类型间的进行转换 shelve 模块 是一个简单的k,v ...

  6. python2入门(2)

    四.python条件语句 if语句基本语法if 判断条件: 执行语句块else if: 执行语句块else: 执行语句 五.循环语句 1 - while循环基本语法while 判断条件: 执行语句块w ...

  7. laravel 创建自动化生成数据库

    1.   生成 迁移脚本 php artisan make:migration create_users_table --create=users(表名) 当你⽣成⼀个模型时想要顺便⽣成⼀个 数据库迁 ...

  8. jsonify

    在flask中通过响应,将json数据显示在网页中,并且将Content-Type该为application/json格式 1,第一种方法: from flask import jsonify @ap ...

  9. RabbitMq入门以及使用教程

    祭出原帖:https://blog.csdn.net/lyhkmm/article/details/78772919 原文转载:http://blog.csdn.net/whycold/article ...

  10. js封装选项卡

    <div class="forestcamp_box"> <img src="img/home_02.jpg" /> <div c ...