docker安装logstash,可以用来同步MySQL和elasticsearch数据,搭配食用更香
要使用Docker安装Logstash并搭配MySQL同步数据到Elasticsearch,你需要编写Logstash的配置文件,并使用Docker Compose来运行Logstash和相关服务。
- 创建
logstash-mysql.conf
配置文件:
input {
mysql {
host => "mysql"
port => "3306"
user => "your_username"
password => "your_password"
database => "your_database"
tables => ["your_table"]
schedule => "* * * * *"
clean_run => true
track_column_updates => true
use_column_value => true
track_remote_server_id => true
local_infile => true
bulk_size => 1000
}
}
filter {
json {
source => "message"
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "your_index"
document_type => "your_type"
document_id => "%{your_id_field}"
}
}
- 创建
docker-compose.yml
文件:
version: '3'
services:
logstash:
image: docker.elastic.co/logstash/logstash:7.16.2
volumes:
- ./logstash-mysql.conf:/usr/share/logstash/pipeline/logstash-mysql.conf
depends_on:
- mysql
- elasticsearch
command: bash -c "sleep 30 && logstash -f /usr/share/logstash/pipeline/logstash-mysql.conf"
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: your_password
MYSQL_DATABASE: your_database
command: --default-authentication-plugin=mysql_native_password
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.16.2
environment:
- discovery.type=single-node
volumes:
- esdata1:/usr/share/elasticsearch/data
volumes:
esdata1:
- 运行Docker Compose:
docker-compose up -d
确保替换配置文件中的your_username
, your_password
, your_database
, your_table
, your_index
, your_type
, 和your_id_field
为你的MySQL数据库的实际用户名、密码、数据库名、表名、Elasticsearch索引名、文档类型和文档ID。
这个配置文件会在MySQL中检测新的或者更新的数据,并将这些数据作为JSON格式发送到Elasticsearch。务必确保你的MySQL表中有一个可以用作文档ID的字段。
注意:确保Logstash的配置文件中的schedule字段设置为合适的时间间隔,以便Logstash可以定期检查MySQL表中的更改。
评论已关闭