Elasticsearch 与 mysql 同步数据 (logstash-input-jdbc)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gekkoou/article/details/80987862

ELK部署参考: https://blog.csdn.net/gekkoou/article/details/80979374

本文使用 logstash 插件 jdbc 来实现 elasticsearch 同步 mysql 数据
插件 jdbc 官方详解: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html

执行命令 logstash -f logstash-input-jdbc.conf

logstash-input-jdbc.conf 代码

input {
    jdbc {
        # mysql 数据库链接
        jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/database"
        # 用户名和密码
        jdbc_user => "root"
        jdbc_password => "root"
        # 驱动, 下载地址: https://dev.mysql.com/downloads/connector/j/
        jdbc_driver_library => "/usr/share/logstash/driver/mysql-connector-java-8.0.11.jar"
        # 驱动类名
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        # 开启分页查询
        jdbc_paging_enabled => "true"
        jdbc_page_size => "5000"
        # 执行sql的文件路径
        # statement_filepath => "/usr/share/logstash/config/jdbc.sql"
        # 或直接执行的sql语句 (例如 mtime 字段为修改时间)
        statement => "SELECT * FROM test WHERE mtime > :sql_last_value"
        # 设置监听间隔, 各字段含义(由左至右)分、时、天、月、年, 全部为*默认含义为每分钟都更新
        schedule => "* * * * *"
        # 索引类型 (同步多表时用来区分)
        type => "jdbc"
        # 是否将 column 名称转小写
        # lowercase_column_names => false
        # 是否清除 last_run_metadata_path 的记录, 如果为真, 那么每次都相当于从头开始查询所有的数据库记录
        clean_run => false
        record_last_run => "true"
        use_column_value => "true"
        tracking_column => "mtime"
        # 最后运行时保存 tracking_column 的文件路径
        last_run_metadata_path => "/usr/share/logstash/data/logstash-input-jdbc-last_run"
    }
}

filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
    date {
        match => ["ctime", "yyyy-MM-dd HH:mm:ss,SSS", "UNIX"]
        #match => ["ctime", "UNIX"] 或者这样
        target => "@timestamp"
        locale => "cn"
    }
}

output {
    elasticsearch {
        # ES的IP地址及端口
        hosts => ["localhost:9200"]
        # 索引名称
        index => "test"
        # 自增ID 需要关联的数据库中有有一个id字段,对应索引的id号
        document_id => "%{id}"
    }
}





猜你喜欢

转载自blog.csdn.net/Gekkoou/article/details/80987862