sql >> Database teknologi >  >> RDS >> Mysql

Logstash læser ikke nye poster ind fra MySQL

Som standard vil logstash-input-jdbc-plugin'et køre din SELECT-sætning én gang og derefter afslutte. Du kan ændre denne adfærd ved at tilføje en tidsplan parameter med et cron-udtryk til din konfiguration, som dette:

input {
 jdbc {
   jdbc_driver_library => "C:/logstash/lib/mysql-connector-java-5.1.37-bin.jar"
   jdbc_driver_class => "com.mysql.jdbc.Driver"
   jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test"
   jdbc_user => "root"
   jdbc_password => ""
   statement => "SELECT * FROM transport.audit"
   schedule => "* * * * *"               <----- add this line
   jdbc_paging_enabled => "true"
   jdbc_page_size => "50000"
 }
}

Resultatet er, at SELECT-sætningen nu kører hvert minut.

Hvis du havde et datofelt i din MySQL-tabel (men det ser ikke ud til at være tilfældet), kan du også bruge den foruddefinerede sql_last_start parameter for ikke at genindeksere alle poster ved hver kørsel. Denne parameter kan bruges i din forespørgsel som denne:

   statement => "SELECT * FROM transport.audit WHERE your_date_field >= :sql_last_start"



  1. SQL-sætning - VÆLG det omvendte af denne forespørgsel

  2. SQLiteException ved hjælp af WHERE +KEY_Date+='+date+'

  3. Viser duplikerede rækkenumre

  4. MySQL returnerer første række i en sammenføjet tabel