sql >> Databasteknik >  >> RDS >> Mysql

Logstash läser inte in nya poster från MySQL

Som standard kommer logstash-input-jdbc-pluginet att köra din SELECT-sats en gång och sedan avslutas. Du kan ändra detta beteende genom att lägga till en schema parameter med ett cron-uttryck till din konfiguration, så här:

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 är att SELECT-satsen nu körs varje minut.

Om du hade ett datumfält i din MySQL-tabell (men det verkar inte vara fallet), kan du också använda den fördefinierade sql_last_start parameter för att inte omindexera alla poster vid varje körning. Den parametern kan användas i din fråga så här:

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



  1. bulk infoga listvärden med SQLAlchemy Core

  2. Distribuera ett certifikat för krypterad anslutning SQL Server

  3. välj från en mysql-tabellposter som tillhör idag

  4. PostgreSQL-funktion / lagrad procedur CURRENT_TIMESTAMP ändras inte