2017-08-14 9 views
0

Je synchronise les données dans la base de données Oracle et l'instance ElasticSearch.
La table de base de données "SYNC_TABLE" contient les colonnes suivantes: "ID" qui est un NUMBER, "LAST_MODIFICATION" - TIMESTAMP, "TEXT" - VARCHAR2. J'utilise Logstash avec jdbc-input-plugin pour effectuer une synchronisation de données sur une base régulière.Logstash Configuration jdbc-input-plugin pour la valeur initiale sql_last_value

Ceci est le fichier de configuration Logstash:

input { 
    jdbc { 
    jdbc_driver_library => "ojdbc6.jar" 
    jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver" 
    jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:XE" 
    jdbc_user => "******" 
    jdbc_password => "******" 
    schedule => "* * * * *" 
    statement => "SELECT * from SYNC_TABLE where LAST_MODIFICATION >= :sql_last_value" 
    tracking_column => "LAST_MODIFICATION" 
    tracking_column_type => "timestamp" 
    use_column_value => true 
    } 
} 
output { 
    elasticsearch { 
    index => "SYNC_TABLE" 
    document_type => "SYNCED_DATA" 
    document_id => "%{ID}" 
    hosts => "localhost:9200" 
    } 
    stdout { codec => rubydebug } 
} 

Je voudrais importer toutes les données sur la première manche, puis syncronise que diff entre la dernière course et l'heure actuelle. donc je pense Logstash faire les requêtes suivantes:

SELECT * from SYNC_TABLE where LAST_MODIFICATION >= '1 January 1970 00:00' 

puis régulièrement

SELECT * from SYNC_TABLE where LAST_MODIFICATION >= 'time of last run' 

Documentation dit que la valeur initiale devrait être de 1 Janvier 1970, mais je vois dans mes journaux qu'au lieu qu'il faut Horodatage actuel Ceci est la première requête:

SELECT * from SYNC_TABLE where LAST_MODIFICATION >= TIMESTAMP '2017-08-14 09:17:00.481000 +00:00' 

est-il une erreur dans le fichier de configuration de logstash qui fait la logstash utiliser l'horodatage en cours au lieu de défaut («1 Janvier 1970 00:00)?

Répondre

1

Le problème était dans .logstash_jdbc_last_run fichier qui contenait le sql_last_value des exécutions précédentes. J'ai supprimé ce fichier et redémarré logstash.