日志存储mysql配置

rslzwgfq  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(275)

我使用logstash将数据从mysql拉入elastic。配置类似于

input {
  jdbc {
    jdbc_driver_library => "/usr/share/mysql-connector-java-5.1.46-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://mysql:3306/books"
    jdbc_user => "root"
    jdbc_password=>"1"
    schedule => "* * * * *"
    statement => "SELECT * FROM book"
  }
}

所以这个问题只是,

statement => "SELECT * FROM book"

这在大多数文献中都有体现。问题是,logstash会理解哪些内容发生了更改,哪些内容需要索引/重新索引,还是只是扫描整个表并重新索引所有内容?在我的例子中,表中的数据几乎是静态的,但是,一旦创建了记录,它应该立即(至少尽快)可用。因此,牵引间隔较低。我应该创建一个更复杂的查询来进行拉取,还是应该假设logstash会起作用?

llew8vvj

llew8vvj1#

使用您的配置日志存储将获取查询select*from book选择的所有记录。
如果要只读新记录,则必须在配置中设置一个增量列,该列将用作配置中的where:

jdbc {
    statement => "SELECT id, mycolumn1, mycolumn2 FROM my_table WHERE id > :sql_last_value"
    use_column_value => true
    tracking_column => "id"
    # ... other configuration bits
  }

设置tracking\u column将启用存储tracking\u column中指定的列的最后一个值的功能。last value:sql\u last\u value可以作为where中的自定义条件在查询中使用。logstash状态将存储在文件系统中,并且只存储与最后一个值相关的少量元数据。
请注意,这样您只能获取新插入的记录,但根据您的数据模型,它无法获取已导入数据的删除或更新。

相关问题