Logstash从mysql导数据到elasticsearch中
一、基本安装
1. 创建logstash安装目录
mkdir -p /usr/local/logstash
2. 解压tar包到指定的目录
tar zxvf logstash-7.16.1-linux-x86_64.tar.gz -C /usr/local/logstash/
3. 启动logstash
/bin/logstash -e 'input {stdin{}} output {stdout{}}'
二、 同步mysql数据配置
1. 导入mysql的java驱动包mysql-connector-java-8.0.23.jar到/usr/local/logstash-7.16.1/logstash-core/lib/jars目录下;
2. 需要建立两个文件,一个jdbc.conf,一个jdbc.sql,名称自定义;
(我把这两个文件都放在/usr/local/logstash-7.16.1目录下)
jdbc.conf
jdbc.conf文本内容如下:
input {
jdbc {
# 设置timezone, 用于增量更新
jdbc_default_timezone => "Asia/Shanghai"
# mysql 数据库链接,test为数据库名
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/testes"
# 用户名和密码
jdbc_user => "root"
jdbc_password => "root"
# 驱动
jdbc_driver_library => "/usr/local/logstash-7.16.1/logstash-core/lib/jars/mysql-connector-java-8.0.23.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
#last_run_metadata_path => "D:\Software\logstash-7.2.0\bin\mysql\last_value_data"
# 执行的sql 文件路径+名称
statement_filepath => "/usr/local/logstash-7.16.1/jdbc.sql"
# 设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
}
}
output {
elasticsearch {
# ES的IP地址及端口
hosts => ["localhost:9200"]
# 索引名称
index => "mingxing"
document_type => "_doc"
# 自增ID需要关联的数据库中有一个id字段, 对应索引的id号
document_id => "%{serialnumber}"
}
stdout {
# JSON格式输出
codec => json_lines
}
}
jdbc.sql
3.logstash启动检查(检查配置文件写的对不对)
/bin/logstash -f /usr/local/logstash-7.16.1/ jdbc.conf -t
4.启动logstash
/bin/logstash -f /usr/local/logstash-7.16.1/ jdbc.conf