在工作中,需要把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