Logstash配置同步mysql到es配置

关于logstash安装:https://www.cnblogs.com/toov5/p/10301727.html

Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地

下面进一步详细说配置:

jdbc_driver_library: jdbc mysql 驱动的路径,在上一步中已经下载
jdbc_driver_class: 驱动类的名字,mysql 填 com.mysql.jdbc.Driver 就好了
jdbc_connection_string: mysql 地址
jdbc_user: mysql 用户
jdbc_password: mysql 密码
schedule: 执行 sql 时机,类似 crontab 的调度
statement: 要执行的 sql,以 “:” 开头是定义的变量,可以通过 parameters 来设置变量,这里的 sql_last_value 是内置的变量,表示上一次 sql 执行中 update_time 的值,这里 update_time 条件是 >= 因为时间有可能相等,没有等号可能会漏掉一些增量
use_column_value: 使用递增列的值
tracking_column_type: 递增字段的类型,numeric 表示数值类型, timestamp 表示时间戳类型
tracking_column: 递增字段的名称,这里使用 update_time 这一列,这列的类型是 timestamp
last_run_metadata_path: 同步点文件,这个文件记录了上次的同步点,重启时会读取这个文件,这个文件可以手动修改  

注意:

Crontab:官网 https://tool.lu/crontab/  注意:Crontab表达式以分为单位

./bin/logstash -f mysql.conf 启动

原理:

Logstash --> 发送查询语句到MySQL,

Logstash -> 发送查询结果到ES

首次查询全部数据(根据时间1970年),记录最后一此数update_time,作为下一次修改时间查询的条件值。数据库新增或者修改、删除的时候都会记录时间。

where update_time >= xxxx-xx-xx

每隔一段时间查询一次。表里面必须有:update_time 字段

同步方式:

1.  主键的新增方式

2.   update_time方式

比较:

使用 logstash-input-jdbc 插件读取 mysql 的数据,这个插件的工作原理比较简单,就是定时执行一个 sql,然后将 sql 执行的结果写入到流中,增量获取的方式没有通过 binlog 方式同步,而是用一个递增字段作为条件去查询,每次都记录当前查询的位置,由于递增的特性,只需要查询比当前大的记录即可获取这段时间内的全部增量,一般的递增字段有两种,AUTO_INCREMENT 的主键 id 和 ON UPDATE CURRENT_TIMESTAMP 的 update_time 字段,id 字段只适用于那种只有插入没有更新的表,update_time 更加通用一些,建议在 mysql 表设计的时候都增加一个 update_time 字段。

综上所述配置:

cd /home/elasticsearch/logstash-6.4.3/config

input {
  jdbc {
    jdbc_driver_library => "/home/mysql5.7/mysqlDriver/mysql-connector-java-8.0.13.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"    # 8.0以上版本:一定要把serverTimezone=UTC天加上
    jdbc_connection_string => "jdbc:mysql://192.168.124.8:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
    jdbc_user => "root"
    jdbc_password => "root"
    schedule => "* * * * *"
    statement => "SELECT * FROM user WHERE update_time >= :sql_last_value"
    use_column_value => true
    tracking_column_type => "timestamp"
    tracking_column => "update_time"
    last_run_metadata_path => "syncpoint_table"
  }
}
output {
    elasticsearch {
        # ES的IP地址及端口
        hosts => ["192.168.91.66:9200"]
        # 索引名称 可自定义
        index => "user"
        # 需要关联的数据库中有有一个id字段,对应类型中的id
        document_id => "%{id}"
        document_type => "user"
    }
    stdout {
        # JSON格式输出
        codec => json_lines
    }
}

将配置文件丢到config下: 名字为mysql.conf,随便起的

启动: ./bin/logstash ./config/mysql.conf

注意:因为我用的是mysql的最新的驱动8.多的版本,所以配置数据库的url时候一定要把serverTimezone=UTC天加上!

同时mysql数据库:

grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘root‘ with grant option;

FLUSH PRIVILEGES;

很慢的,启动过程盯着日志:

kinbana:

原文地址:https://www.cnblogs.com/toov5/p/11355596.html

时间: 2024-08-03 01:06:43

Logstash配置同步mysql到es配置的相关文章

logstash增量同步mysql数据到es

本篇本章地址:https://www.cnblogs.com/Thehorse/p/11601013.html 今天我们来讲一下logstash同步mysql数据到es 我认为呢,logstash是众多同步mysql数据到es的插件中,最稳定并且最容易配置的一个. input { stdin { } jdbc { type => "xxx" jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/yinhela

Ubuntu16.04 下 配置《 MySQL必知必会 》使用的软件环境

刚开始接触数据库, 想从< MySQL必知必会 >入门,需要本地配置一个MySQL数据库,配置环境的时候遇到了一些问题,特此记录. 首先附上pdf下载链接:   < MySQL必知必会 >中文版 以及  原版官网   书中附录B提到的样例表文件(也就是书中所用到的例子)也是在这个页面下载,稍后会提到. 一. Ubuntu 16.04下 安装 MySQL 正常的话几条语句就安装好了: 1.更新: sudo apt-get update 有的时候系统会使用IPv6的地址进行更新操作,导

【ElasticSearch】---ElasticSearch同步Mysql

ElasticSearch同步Mysql 先讲项目需求:对于资讯模块添加搜索功能 这个搜索功能我就是采用ElasticSearch实现的,功能刚实现完,所以写这篇博客做个记录,让自己在记录下整个步骤和过程中的一些注意事项. 一.安装elasticsearch和可视化工具 有关整个教程参考:mac安装elasticsearch和可视化工具 1.安装elasticsearch 网址地址:官网 2.安装elasticsearch-head(可视化界面) 安装地址:https://github.com/

MySQL主从同步、读写分离配置步骤

现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用. 为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master) 192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1 1.登录Master服务器,修改my.cnf,添加如下内容: server-id = 1 //数据库ID号,

MySQL主从同步、读写分离配置步骤、问题解决笔记

根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用.       为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master)           192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i6

mysql主主-配置数据同步

1.数据库同步设置 主机操作系统:Centos 6.2 数据库版本:mysql  Ver 14.14 Distrib 5.1.73 前提:MYSQL数据库正常启动 ServA:122.112.x.x ServB:211.101.x.x 1.1 配置同步账号 在ServA上增加一个ServB可以登录的帐号: Mysql>grant replication slave on  *.* TO [email protected]'211.101.x.x' IDENTIFIED BY '123.com';

MySQL主从配置:主从介绍、配置主和从 、测试主从同步

MySQL主从介绍 (两台机器数据同步) 主:-->binlog 从:-->relaylog 主上有一个log dump线程,用来和从的I/O线程传递binlog 从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地(执行) 主从的应用场景: (1)做数据的备份,(主:作读写数据,从:实时同步,当 主 宕机时,从 也可以即使提供服务 ) (2)也是做备份.(客户从 从 这台机器上读取数据(但是不能再从上写),

logstash同步mysql数据到Elasticsearch

安装logstash查看我的另一篇文章  Docker 部署 logstash 同步数据我们首先需要安装好对应的插件,然后下载对应的数据库链接jar包,下面是具体的步骤 1.进入容器中 docker exec it logstash bash 2.进入到bin 目录下,我这里是/usr/share/logstash/bin,可以看到logstash-plugin文件,然后安装插件 logstash-plugin install logstash-input-jdbc 3.看到如下输出,则表示安装

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

本文出处:https://my.oschina.net/xiaowangqiongyou/blog/1812708#comments 截取部分内容以便学习 input { jdbc { # mysql相关jdbc配置 jdbc_connection_string => "jdbc:mysql://10.112.76.30:3306/jack_test?useUnicode=true&characterEncoding=utf-8&useSSL=false" jdb