在工作中,需要把mysql中的数据写入到es中进行分析;
官方文档:https://www.elastic.co/guide/en/logstash/6.3/plugins-inputs-jdbc.html
下面是配置方法:
input { jdbc { #数据库驱动路径 jdbc_driver_library => "/data/mysql-connector-java-5.1.41-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" #数据库连接相关配置 jdbc_connection_string => "jdbc:mysql://10.10.10.10:3306/test" jdbc_user => "root" jdbc_password => "123456" #任务计划,多久执行一次,在此每5分钟执行一次 schedule =>"*/5 * * * *" #启用追踪,如果为true,则需要指定tracking_column,默认是timestamp use_column_value => true #指定追踪的字段,在此我设置的追踪的字段为id tracking_column => id #是否将字段名称转小写,当字段已经为小写时,不用此项 lowercase_column_names => false #追踪字段的类型,目前只有数字(numeric)和时间类型(timestamp),默认是数字类型 tracking_column_type => "numeric" #记录最后一次运行的结果 record_last_run => true #上面运行结果的保存位置 last_run_metadata_path => "/data/jdbc-position.txt" #执行的语句,也可以通过statement_filepath指定sql的文件 statement => "SELECT * FROM student where id > :sql_last_value" #statement_filepath => "/data/test.sql" } } filter { json { source => "message" remove_field => ["message"] } } output { #输出到控制台进行调试,也可以写到kafka或者es中 stdout { codec => rubydebug } }
基于binlog的同步方案:
1.go-mysql-elasticsearch
2.maxwell
转载于:https://blog.51cto.com/liuzhengwei521/2325388