LogStash定时同步 MySql/Oralce 到ElasticSearch
下载 LogStash/ElasticSearch
LogStash >>> https://www.elastic.co/cn/downloads/past-releases/logstash-7-8-0 ElasticSearch >>> https://www.elastic.co/cn/downloads/enterprise-search 注意版本对应
解压安装/linux下安装 方式一致
配置 LogStash
- 重中之重: 将MySQL/Oracle的 JDBC jar包下载放入LogStash 的根目录下;
- 在 bin目录中新建文件 logstash-mysql/orcale.conf;
input {
stdin {
}
jdbc {
# 数据库 数据库名称为elk,表名为book_table
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/qbfx"
# 用户名密码
jdbc_user => "root"
jdbc_password => "123456"
# jar包的位置
jdbc_driver_library => "../mysql-connector-java-8.0.27.jar"
# mysql的Driver
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
// 可以选择读取sql文件 可以直接写sql
#statement_filepath => "config-mysql/book.sql"
statement => "select * from qbfx_qbxs"
#每分钟进行全量更新 cron
schedule => "* * * * *"
#索引的类型
type => "book"
# 这个增量更新 注释掉就是全量更新
clean_run => "false"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
// es 配置
output {
elasticsearch {
hosts => "127.0.0.1:9999"
# index名
index => "qbfx_qbxs"
# 需要关联的数据库中有有一个id字段,对应索引的id号
document_id => "%{id}"
}
stdout {
codec => json_lines
}
}
- sql文件写法;
book.sql:
SELECT * FROM(SELECT TL.*,ROWNUM rn FROM (SELECT * FROM TEST_LOGSTASH) TL) WHERE RN > :sql_last_value
4.conf 下 pipeline.yml配置;
- pipeline.id: test_mysql
path.config: "../bin/logstash-mysql.conf"
启动
1、ElasticSearch elasticsearch.bat 当前服务只允许本机访问,想要外网访问,想要修改安装目录下config目录中的elasticsearch.yml文件,在yml文件中加入 network.host: 0.0.0.0 ,表示所有IP都可以访问 2、LogStash logstash.bat
|