Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Logstash liest keine neuen Einträge von MySQL ein

Standardmäßig führt das Plug-in logstash-input-jdbc Ihre SELECT-Anweisung einmal aus und wird dann beendet. Sie können dieses Verhalten ändern, indem Sie ein Zeitplan Parameter mit einem Cron-Ausdruck für Ihre Konfiguration wie folgt:

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"
 }
}

Das Ergebnis ist, dass die SELECT-Anweisung nun jede Minute ausgeführt wird.

Wenn Sie ein Datumsfeld in Ihrer MySQL-Tabelle hatten (aber das scheint nicht der Fall zu sein), könnten Sie auch den vordefinierten sql_last_start verwenden Parameter, um nicht bei jedem Durchlauf alle Datensätze neu zu indizieren. Dieser Parameter kann wie folgt in Ihrer Abfrage verwendet werden:

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