搭建 logstash 同步数据库
首先安装镜像 docker pull logstash:7.7.0
如何配合其它ES,kibanas,使用的话需要版本一致
首先创建本地目录 /sh/config-mysql 方便维护用来配置mysql
然后建立建立镜像 docker run -d --name=logstash --restart=always -p 5044:5044 -v /sh/config-mysql:/config-mysql -m 1024m logstash:7.7.0
注:-v /sh/config-mysql:/config-mysql 本地mysql目录映射docker容器目录
logstash容器编辑配置文件 /usr/share/logstash/config/logstash.yml
http.host: "0.0.0.0"
xpack.management.enabled: false
xpack.monitoring.elasticsearch.hosts: [ "http://你需要连接的的IP:9200" ]
path.config: /config-mysql/mysql.conf
#注:这里是我的mysql配置
接下来可以配置 /config-mysql/mysql.conf 同步配置了
input {
# beats {
# port => 5044
# }
jdbc {
jdbc_driver_library => "/config-mysql/mysql-connector-j-8.0.33.jar" #插件百度下
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://172.17.0.1:3306/数据库名称?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
jdbc_user => "数据库用户名"
jdbc_password => "数据库密码"
jdbc_paging_enabled => true
jdbc_page_size => 1000
jdbc_default_timezone =>"Asia/Shanghai"
use_column_value => true
tracking_column => "id"
#追踪字段的类型,目前只有数字(numeric)和时间类型(timestamp),默认是数fvz字类型 "timestamp"
#tracking_column_type=>"timestamp"
record_last_run=>true
last_run_metadata_path => "/config-mysql/demo.yml" #同步记录
# 首次同步完整,后期可以单独过滤下条件,字段需要加上索引
#DAY 天 HOUR 小时
statement => "MYSQL语句"
# 设置定时任务间隔 含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务
schedule => "*/30 * * * *"
}
}
output {
elasticsearch {
#hosts => ["127.0.0.1:9200","127.0.0.2:9200"]
hosts => ["127.0.0.1:9200"]
index => "myik"
document_id => "%{id}"
document_type => "_doc"
template_name => "myik"
template => "/config-mysql/logstash-ik.json" #同步过去ES使用的模版
template_overwrite => true
manage_template =>true
}
stdout {
codec => json_lines
}
}
配置同步跟ik自定义模板,如果不生效删除原来默认的,在测试。
docker logs -f --tail 20 logstash 查看日志 来发现报错信息
特别要注意数据库是否有访问权限,插件是否完整大小,各IP访问是否畅通。