logstash同步数据库数据到elasticsearch

logstash同步数据库数据到elasticsearch


1:确定elasticsearch与数据库是正常运行的状态
2:下载logstash,官网下载即可,最好与elasticsearch同版本
3:下载数据库的驱动包(不一定非要放到lib下面,放哪都可以,只要你找得到)

logstash同步数据库数据到elasticsearch
4:建一个.conf的文件
input里面填数据库信息
output里面填elasticsearch的信息
logstash同步数据库数据到elasticsearch
jdbc_driver_library:是数据库驱动包,输入绝对路径就可以
statement_filepath:是sql文件路径,可以直接写一个sql 比如 “select * from table t” 复杂的话建议写在文件里
多条sql的话可以在input里写多个 jdbc,利用type名称的不同在output里判断写入不同的索引当中
schedule => “*/10 * * * *” :是指同步频率 这里是每隔10分钟同步一次
logstash同步数据库数据到elasticsearch
input {
jdbc {
jdbc_connection_string=>“jdbc:mysql://**autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8"
jdbc_user => “ttcdv2”
jdbc_password => “ttcdv2”
jdbc_driver_library => “F:/logstash-6.7.0/lib/mysql-connector-java-5.1.46.jar”
jdbc_driver_class => “com.mysql.jdbc.Driver”
jdbc_paging_enabled => “true”
record_last_run => “true”
use_column_value => “false”
tracking_column => “id”
clean_run => “false”
lowercase_column_names => false
jdbc_page_size => “50000”
statement_filepath => “F:/logstash-6.7.0/bin/jdbc/goods.sql”
schedule => "
/10 * * * *”
type => “type123”
}

}
output {
stdout {
codec => json_lines
}
if[type] == “type123”{
elasticsearch {
hosts => “http://127.0.0.1:9200/”
index => “index1”
document_type => “type1”
document_id => “%{id}”
}
}

}
sql文件就不发了 就是一条sql
5:windows环境下 进入logstash下bin目录
输入 logstash -f jdbc.conf(刚才建的conf文件,如果conf不在bin目录下需要写明路径)
logstash同步数据库数据到elasticsearch
linux环境下 运行nohup ./logstash -f jdbc.conf >logstash.log > 2>&1 &
可以后台运行一直同步,运行后会显示运行的端口号,看logstash 文件夹下 logstash.log文件夹看打印日志

logstash同步数据库数据到elasticsearch