初始 sql_last_value 的 Logstash jdbc-输入插件配置
Logstash jdbc-input-plugin configuration for initial sql_last_value
我同步Oracle数据库和ElasticSearch实例中的数据。
数据库 table "SYNC_TABLE"
有以下列:"ID"
是一个数字,"LAST_MODIFICATION"
- TIMESTAMP,"TEXT"
- VARCHAR2。
我将 Logstash 与 jdbc-input-plugin 一起使用,以便定期执行数据同步。
这是 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 }
}
我想导入第一个 运行 上的所有数据,然后仅同步最后一个 运行 和当前时间之间的差异。
所以我希望 Logstash 进行以下查询:
SELECT * from SYNC_TABLE where LAST_MODIFICATION >= '1 January 1970 00:00'
然后定期
SELECT * from SYNC_TABLE where LAST_MODIFICATION >= 'time of last run'
Documentation 说初始值应该是 1970 年 1 月 1 日,但我在日志中看到它取的是当前时间戳。
这是第一个查询:
SELECT * from SYNC_TABLE where LAST_MODIFICATION >= TIMESTAMP '2017-08-14 09:17:00.481000 +00:00'
logstash 配置文件是否有任何错误使 logstash 使用当前时间戳而不是默认时间戳('1 January 1970 00:00')?
问题出在包含之前运行的 sql_last_value
的 .logstash_jdbc_last_run
文件中。
我已经删除了这个文件并重新启动了 logstash。
我同步Oracle数据库和ElasticSearch实例中的数据。
数据库 table "SYNC_TABLE"
有以下列:"ID"
是一个数字,"LAST_MODIFICATION"
- TIMESTAMP,"TEXT"
- VARCHAR2。
我将 Logstash 与 jdbc-input-plugin 一起使用,以便定期执行数据同步。
这是 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 }
}
我想导入第一个 运行 上的所有数据,然后仅同步最后一个 运行 和当前时间之间的差异。 所以我希望 Logstash 进行以下查询:
SELECT * from SYNC_TABLE where LAST_MODIFICATION >= '1 January 1970 00:00'
然后定期
SELECT * from SYNC_TABLE where LAST_MODIFICATION >= 'time of last run'
Documentation 说初始值应该是 1970 年 1 月 1 日,但我在日志中看到它取的是当前时间戳。 这是第一个查询:
SELECT * from SYNC_TABLE where LAST_MODIFICATION >= TIMESTAMP '2017-08-14 09:17:00.481000 +00:00'
logstash 配置文件是否有任何错误使 logstash 使用当前时间戳而不是默认时间戳('1 January 1970 00:00')?
问题出在包含之前运行的 sql_last_value
的 .logstash_jdbc_last_run
文件中。
我已经删除了这个文件并重新启动了 logstash。