How should I use sql_last_value in logstash?

前端 未结 3 447
终归单人心
终归单人心 2020-12-16 05:46

I\'m quite unclear of what sql_last_value does when I give my statement as such:

statement => \"SELECT * from mytable where id > :sql_last         


        
3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-16 06:08

    If you have a timestamp column in your table (e.g. last_updated), you should preferably use it instead of the ID one. So that when a record gets updated, you modify that timestamp as well and the jdbc input plugin will pick up the record (i.e. the ID column won't change its value and the updated record won't get picked up)

    input {
        jdbc {
            jdbc_connection_string => "jdbc:mysql://hostmachine:3306/db" 
            jdbc_user => "root"
            jdbc_password => "root"
            jdbc_validate_connection => true
            jdbc_driver_library => "/path/mysql_jar/mysql-connector-java-5.1.39-bin.jar"
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            jdbc_paging_enabled => "true"
            jdbc_page_size => "50000"
            schedule => "* * * * *"
            statement => "SELECT * from mytable where last_updated > :sql_last_value"
        }
    }
    

    If you decide to stay with the ID column nonetheless, you should delete the $HOME/.logstash_jdbc_last_run file and try again.

提交回复
热议问题