本文使用 logstash 来同步 elasticsearch 和 mysql 数据。

官网地址:
ElasticSearch
Logstash
下载地址

Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。 顾名思义,Logstash 收集数据对象就是日志文件。由于日志文件来源多(如:系统日志、服务器 日志等),且内容杂乱,不便于人类进行观察。因此,我们可以使用 Logstash 对日志文件进行收集和统一过滤,变成可读性高的内容,方便开发者或运维人员观察,从而有效的分析系统/项目运行的性能,做好监控和预警的准备工作等。

Logstash 安装配置

本地安装(for Windows)

1、Logstash 依赖 JDK1.8 ,因此在安装之前请确保机器已经安装和配置好 JDK1.8。需要注意版本与 elasticsearch 保持一致,Windows 系统下直接解压即可(建议使用 powershell 来运行)。

2、在 Logstash 目录下,新建一个同步 mysql 数据的工作文件夹(新建文件夹名称任意,本文新建一个名为 mysql 的文件夹为例,如图一)。然后将同步 mysql 数据库的配置文件、 mysql 连接驱动 jar 包都放到该文件夹下(如图二所示);什么?不知道同步数据配置怎么写,不是问题,复制下方的配置稍微改动一下就可以了。

logstash-create-mysql-folder

logstash-create-mysql-folder

配置文件(mysql.conf)

input {
    stdin {
    }

    jdbc {
      # mysql数据库连接信息
      jdbc_connection_string => "jdbc:mysql://mysql.lqiao.top/student?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC"
      # 驱动配置
      jdbc_driver_library => "C:\Users\ryan\Downloads\logstash-6.5.4\mysql\mysql-connector-java-6.0.5.jar"
      # 驱动类名
      jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      # mysql用户名和密码
      jdbc_user => "student"
      jdbc_password => "Passwd@123456"


      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      jdbc_default_timezone =>"Asia/Shanghai"

      # 执行指定的sql文件,也可以直接写sql语句
      # statement => "select * from student;"
      statement_filepath => "C:\Users\ryan\Downloads\logstash-6.5.4\mysql\student.sql"

      # 设置监听 各字段含义 分 时 天 月  年 ,默认全部为*代表含义:每分钟都更新
      schedule => "* * * * *"
      # 索引类型
      type => "pupil"
    }
}

output {
    # 输出到elasticsearch的配置
    elasticsearch {
        # ES服务器
        hosts => ["localhost:9200"]
        # ES索引名称
        index => "student"
        # 自增ID,为mysql的自增字段
        document_id => "%{id}"
    }

    # 这里输出调试,正式运行时可以注释掉
    stdout {
        codec => json_lines
    }
}

注:配置文件需要UTF-8编码,更多配置请参考官方文档

Jar 包

mysql-connector-java-6.0.5.jar 下载地址

执行SQL(student.sql)

select * from student;

注:如果需要同步多个 mysql 表,可以修改配置文件 mysql.conf,在 input 和 output 中添加其他的表。

启动 Logstash

# `win + r` 输入 `powershell`,进入到 powershell 命令行界面
# 在 `logstash/bin` 目录下执行运行命令
.\logstash.bat -f ..\mysql\mysql.conf

正常情况下,会同步数据值到 elasticsearch,根据上面的配置 logstash 每分钟去数据库读取最新数据。

logstash-execute

执行完命令之后,到 Elasticseach-head 插件中查看数据

logstash-execute


参考配置:

https://segmentfault.com/a/1190000011784259


results matching ""

    No results matching ""