安装logstash(跟elasticsearch安装的版本保持一致)
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.0.tar.gz
解压:
tar -zxvf logstash-6.5.0.tar.gz
java -version(没有jdk则需安装)
如上报错需要安装jdk
wget https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.tar.gz
配置环境变量:
vi /etc/profile
JAVA_HOME=/data/jdk1.8.0_161
CLASSPATH=.:
J
A
V
A
H
O
M
E
/
l
i
b
/
t
o
o
l
s
.
j
a
r
:
JAVA_HOME/lib/tools.jar:
JAVAHOME/lib/tools.jar:JAVA_HOME/lib/dt.jar
PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:HOME/bin:
H
O
M
E
/
.
l
o
c
a
l
/
b
i
n
:
HOME/.local/bin:
HOME/.local/bin:PATH
logstash-input-jdbc实现mysql数据库与elasticsearch同步
1.安装
logstash5.x之后,集成了logstash-input-jdbc插件。安装logstash后通过命令安装logstash-input-jdbc插件
cd /logstash-6.4.2/bin
./logstash-plugin install logstash-input-jdbc
./logstash-plugin install logstash-output-elasticsearch
2.配置
在logstash-6.5.0/config文件夹下新建jdbc.conf,配置内容如下
输入部分
input {
stdin {}
jdbc {
# mysql数据库驱动
jdbc_driver_library => “/usr/local/logstash-6.5.0/config/mysql-connector-java-5.1.30.jar”
jdbc_driver_class => “com.mysql.jdbc.Driver”
# mysql数据库链接,数据库名
jdbc_connection_string => “jdbc:mysql://localhost:3306/octopus”
# mysql数据库用户名,密码
jdbc_user => “root”
jdbc_password => “12345678”
# 设置监听间隔 各字段含义(分、时、天、月、年),全部为默认含义为每分钟更新一次
schedule => " * * * *"
# 分页
jdbc_paging_enabled => “true”
# 分页大小
jdbc_page_size => “50000”
# sql语句执行文件,也可直接使用 statement => ‘select * from t_employee’
statement_filepath => “/usr/local/logstash-6.5.0/config/jdbc.sql”
# elasticsearch索引类型名
type => “t_employee”
}
}
过滤部分(不是必须项)
filter {
json {
source => “message”
remove_field => [“message”]
}
}
输出部分
output {
elasticsearch {
# elasticsearch索引名
index => “octopus”
# 使用input中的type作为elasticsearch索引下的类型名
document_type => “%{type}” # <- use the type from each input
# elasticsearch的ip和端口号
hosts => “localhost:9200”
# 同步mysql中数据id作为elasticsearch中文档id
document_id => “%{id}”
}
stdout {
codec => json_lines
}
}
注:若有多个表则需要写多个jdbc
在logstash-6.4.2/config 目录下新建jdbc.sql文件
select * from t_employee
3.运行
cd logstash-6.5.0# 检查配置文件语法是否正确
bin/logstash -f config/jdbc.conf --config.test_and_exit 启动
bin/logstash -f config/jdbc.conf --config.reload.automatic
–config.reload.automatic: 会自动重新加载配置文件内容
Logstash6.X版本的type只支持一种
若有多个表需要同步数据则需要多个input和output,可参考如下配置文件
增量更新(需增加如下步骤):
#使用其它字段追踪,而不是用时间
use_column_value => true
#追踪的字段
tracking_column => job_id
record_last_run => true
#上一个sql_last_value值的存放文件路径, 必须要在文件中指定字段的初始值
last_run_metadata_path => "G:\Developer\Elasticsearch5.5.1\ES5\logstash-5.5.1\bin\mysql\station_parameter.txt"