如何自动将数据从mysql更新到logstash

jvlzgdj9  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(324)

目前我正在用mysql做弹性栈,mysql数据库中的数据都可以用logstash进行ElasticSearch,但是当新数据进入mysql数据库时,我需要重新启动logstash,或者可以用logstash配置文件中的schedule来完成

input {

  jdbc { 
    jdbc_connection_string => "jdbc:mysql://localhost:3306/testdb"
    # The user we wish to execute our statement as
    jdbc_user => "root"
    jdbc_password => "ankit"
    # The path to our downloaded jdbc driver
    jdbc_driver_library => "/home/ankit/Downloads/mysql-connector-java-5.1.38.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    #run logstash at an interval of on minute
    #schedule => "* * * * * *"
    # our query
    statement => "SELECT * FROM ghijkl"
    }
    jdbc { 
    jdbc_connection_string => "jdbc:mysql://localhost:3306/testdb"
    # The user we wish to execute our statement as
    jdbc_user => "root"
    jdbc_password => "ankit"
    # The path to our downloaded jdbc driver
    jdbc_driver_library => "/home/ankit/Downloads/mysql-connector-java-5.1.38.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    #run logstash at an interval of on minute
    #schedule => "* * * * * *"
    # our query
    statement => "SELECT * FROM abcdef"
    }
  }

但这不是一个好方法,我正在考虑使用web钩子,但没有资源可以这样做,我尝试从文档页logstash http输入插件,但没有从这方面的帮助。
请帮忙。

cmssoen2

cmssoen21#

您只能下载最近的数据,比如说每15分钟使用特殊查询:

SELECT * FROM ghijkl" WHERE EVENT_TIME_OCCURRENCE_FIELD > :sql_last_value

代替 :sql_last_value 将插入最新记录的时间戳。第一次运行查询时 tracking_column 值设置为 01.01.1970 .
日志存储所需的配置:

schedule => "*/15 * * * *"
use_column_value => true
tracking_column => 'EVENT_TIME_OCCURRENCE_FIELD'

对于每个输入,还应指定 last_run_metadata_path 参数以避免将来出现问题,当您有许多输入,而有些输入使用同一个表但不同的架构时,元数据可能会被重写并产生意外的结果。

last_run_metadata_path => "PATH_TO_FILE_FOR_META_DATA"

相关问题