logstash实现mysql数据同步到es

放肆的年华 提交于 2019-12-31 20:49:34

安装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=.:JAVAHOME/lib/tools.jar:JAVA_HOME/lib/tools.jar:JAVA_HOME/lib/dt.jar
PATH=JAVAHOME/bin:JAVA_HOME/bin:HOME/bin: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,可参考如下配置文件

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!