logstash jdbc 增量同步到kafka

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 ,就像没有执行任何查询一样。

如果数据库是非实时数据库,不能以时间作为追踪属性,不然同步的数据要么多要么少。

猜你喜欢

转载自blog.csdn.net/z619193774/article/details/80524230