logstash实现mysql数据同步到es

安装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"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值