logstash利用jdcb增量同步数据库说明
配置说明
做增量同步主要是更具sql_last_value的值做判断,如果符合条件才开始同步
配置文件如下:
input {
stdin {
}
jdbc {
#数据库地址
jdbc_connection_string => "jdbc:oracle:thin:@//localhost/zaradb"
jdbc_user => "game"
jdbc_password => "PRVXWFxSOa"
#数据库驱动路径
jdbc_driver_library => "/logstash-6.2.4/ojdbc7.jar"
jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
#sql路径
statement_filepath => "/logstash-6.2.4/pay_test.sql"
#是否开启记录追踪
record_last_run => "true"
#是否需要追踪字段,如果为true,则需要指定tracking_column,默认是timestamp
use_column_value => "true"
#指定追踪的字段
tracking_column => "pay_kafkatime"
#追踪字段的类型,目前只有数字和时间类型,默认是数字类型
tracking_column_type => "timestamp"
#设置时区
jdbc_default_timezone =>"Asia/Shanghai"
#是否每次清除last_run_metadata_path的内容
clean_run => "false"
#这里可以手动设置:sql_last_value的值,默认时间是1970-01-01,默认数字是0
last_run_metadata_path => "/logstash-6.2.4/logstash_jdbc_last_run"
#多久同步一次
schedule => "*/5 * * * *"
#是否分页
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
mutate {
#指定要删除的字段
remove_field => "@version"
remove_field => "@timestamp"
}
}
output {
# stdout { codec => rubydebug }
kafka {
#kafka topic
topic_id => "test"
#kafka地址
bootstrap_servers => "localhost:9092"
#json交互
codec => "json"
#client.id
client_id => "test2"
}
}
注意事项
插件将以sql_last_value存储在配置中的元数据文件的形式持久保存参数last_run_metadata_path。在查询执行后,该文件将被更新为当前值sql_last_value。下一次管道启动时,该值将通过从文件中读取来更新。如果 clean_run设置为true,则该值将被忽略,sql_last_value并将设置为1970年1月1日,如果use_column_value为true,则为0 ,就像没有执行任何查询一样。
如果数据库是非实时数据库,不能以时间作为追踪属性,不然同步的数据要么多要么少。