需要配置这个文件
input {
stdin {
}
jdbc {
# mysql 数据库链接,center为数据库名,jdbc版本比较大的要加上?后面那串字符
jdbc_connection_string => "jdbc:mysql://192.168.161.131:3307/mz-master"
# 用户名和密码
jdbc_user => "root"
jdbc_password => "123456"
# 驱动 需要手动上传jar
jdbc_driver_library => "/opt/mysql-connector-java-8.0.29.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "1000"
# 需要记录查询结果某字段的值时,此字段为true,否则默认tracking_column为timestamp的值;
use_column_value => true
# 需要记录的字段,用于增量同步,需是数据库字段
tracking_column => user_id
# record_last_run上次数据存放位置;
record_last_run => true
#上一个sql_last_value值的存放文件路径, 必须要在文件中指定字段的初始值
last_run_metadata_path => "/opt/last_id.txt"
# 是否清除last_run_metadata_path的记录,需要增量同步时此字段必须为false;
clean_run => false
statement=> "select * from sys_users where user_id > :sql_last_value"
# 设置监听间隔 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
}
}
output {
elasticsearch {
# ES的IP地址及端口
hosts => ["192.168.161.128:9200"]
# 索引名称,elasticsearch叫做索引 和实体类中的索引要一致
index => "users_index"
# 自增ID id必须是待查询的数据表的序列字段 没有可以不写
document_id => "%{user_id}"
}
stdout {
# JSON格式输出
codec => json_lines
}
}
然后执行 /opt/logstash-7.9.3/bin/logstash -f /opt/logstash-7.9.3/config/jdbc.conf
优点 可以实时监控mysql来更新更新es数据
缺点 需要定期清理日志文件