jdbc
プラグインの中にlogstash
入力のようなMySQL文があります。ログスタッシュでsql_last_valueのテーブルのIDを使用していますか?
statement => "SELECT * from TEST where id > :sql_last_value"
私のテーブルは、次のような任意のdate
やdatetime
フィールドがありません。だから、テーブルに新しい行が追加されたかどうかを確認するために、分単位でscheduler
を使用してインデックスを更新しようとしています。
既存の値の変更を既存のレコードから更新するのではなく、新しいレコードのみを更新することができます。だから私はちょっとlogstash
入力のこれを持っていますこれを行うために:私はインデックスを作成し、ドキュメントをアップロードするために、このlogstash
ファイルを実行するたびに
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://myhostmachine:3306/mydb"
jdbc_user => "root"
jdbc_password => "root"
jdbc_validate_connection => true
jdbc_driver_library => "/mypath/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 id > :sql_last_value"
use_column_value => true
tracking_column => id
last_run_metadata_path => "/path/.logstash_jdbc_last_run"
clean_run => true
}
}
ことだから、それはすべてでアップロードされません。ドキュメント数はゼロとして表示されます。私はlogstash
confファイルを実行する前に.logstash_jdbc_last_run
を削除したことを確認しました。 logstashコンソール出力の
パート:
[2016-11-02T16:33:00294] [INFO] [logstash.inputs.jdbc] (0.002000s)SELECT COUNT(*)FROM
count
ASt1
LIMIT 1
AS( ID> '2016年11月2日午前11時02分00秒' TEST SELECT * FROM)、これが正しいとする分単位で分をチェックして行くが、その後それはdoesnの上に保ちますレコードを取得する。どのように機能するのですか?
何か不足していますか?どんな助けでも感謝します。
'jdbc'入力設定で' clean_run => true'を追加しようとしましたか? IDフィールドとの比較に使用された値が日付'2016-11-02 11:02:00'です。 – Val
@Val私もそれを試しましたが、結果は同じです。 – Kulasangar
'clean_run'は' .logstash_jdbc_last_run'ファイルを削除します。おそらく 'tracking_column_type => 'numeric'をデフォルトであるとして指定しようとします。 – Val