- 简介
Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地 - 下载 logstash-6.4.3.tar.gz
https://pan.baidu.com/s/1c9voEH0nW7gktkQAJCTsKQ 提取码: zmll
上传到/usr/local目录下 - 解压
tar -zxvf logstash-6.4.3.tar.gz
- 下载输入、输出插件
cd logstash-6.4.3 // 命令执行,需要等待一段时间 bin/logstash-plugin install logstash-input-jdbc bin/logstash-plugin install logstash-output-elasticsearch
- 上传mysql的jar包到服务器/usr/local/sql目录下
- 配置文件mysql.conf
配置文件说明input { jdbc { jdbc_driver_library => "/usr/local/sql/mysql-connector-java-5.1.46.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://192.168.2.107:3306/pitch_test" jdbc_user => "root" jdbc_password => "123456" 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.2.116:9200"] # 索引名称 可自定义 index => "user" # 需要关联的数据库中有有一个id字段,对应类型中的id document_id => "%{id}" document_type => "user" } stdout { # JSON格式输出 codec => json_lines } }
上传mysql.conf到服务器/usr/local/logstash-6.4.3jdbc_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: 同步点文件,这个文件记录了上次的同步点,重启时会读取这个文件,这个文件可以手
- 配置文件配置的pitch_member库的user表数据如下
- 启动
启动 elasticsearch 启动 kibana 启动 logstash 命令: cd /usr/local/logstash-6.4.3 ./bin/logstash -f mysql.conf
- 测试
登录kibana查询,执行下面查询
user表新增一条数据
查看控制台
查询通过操作user表实时更新update_time的当前时间,让后有logstash根据update_time时间每隔几分钟去数据库查询数据,这样我们就实现了将mysql的数据实时同步es去。user表update_time时间要是当前最新时间。
- 如何配置多张表
- 配置多张表信息
cd /usr/local/logstash-6.4.3/config/ vi pipelines.yml #######################再文件中配置数据库连接信息######## - pipeline.id: table1 path.config: "/usr/local/logstash-6.4.3/mysql.conf" - pipeline.id: table2 path.config: "/usr/local/logstash-6.4.3/mysql2.conf" ########################:wq,保存退出################
-
在/usr/local/logstash-6.4.3配置table1和table2的数据库表信息
table1就是上一步配置的user表信息,不变
table2根据第6步在配置张新表
- 启动
cd /usr/local/logstash-6.4.3 ./bin/logstash
- 测试.................