我使用logstash来索引Postgres db,尤其是具有千万行的表。
首先我尝试了这样的设置:
input {
jdbc {
dbc_connection_string => ...
jdbc_user => ...
jdbc_password => ...
jdbc_validate_connection => true
jdbc_driver_library => ...
jdbc_driver_class => "org.postgresql.Driver"
statement => "SELECT * FROM mytable WHERE last_update_date >= :sql_last_value ORDER BY mytable_id"
jdbc_fetch_size => "50000"
last_run_metadata_path => ...
schedule => ...
use_column_value => true
tracking_column => "last_update_date"
tracking_column_type => "timestamp"
几分钟后,它崩溃并显示OutOfMemoryError。所以我加了
jdbc_paging_enabled => true
jdbc_page_size => "50000"
但是我想我会错过一些数据:它将索引mytable_id