美文网首页
logstash 实时增量同步oracle 到datahub s

logstash 实时增量同步oracle 到datahub s

作者: 果果哥哥BBQ | 来源:发表于2019-04-26 16:13 被阅读0次

    配置文件:

        stdin{     
        }  
        jdbc{  
            jdbc_connection_string => "jdbc:oracle:thin:scott/tiger@//127.0.0.1:1521/orcl"  # jdbc数据库连接
            jdbc_user => "ncbs"  
            jdbc_password => "ncbs"  
            jdbc_driver_library => "D:\logstash-5.6.10\bin\logstash_jdbc_test\ojdbc6.jar"  # oracle jar包文件路径
            jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"  # jdbc数据库驱动
            jdbc_paging_enabled => "true"  
            jdbc_page_size => "5000000"  # 同步数据分页设置
            statement_filepath => "D:\logstash-5.6.10\bin\logstash_jdbc_test\jdbc.sql"  # 需同步的数据执行的SQL文件路径
           # statement => "select * from cxx_article_info where id > :sql_last_value" # 也可以直接将sql配置在这里
            schedule => "* * * * *"   # 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
            type => "T_YW_GA_JWRK"  # ES的type类型,相当于数据库中的table,需要配置多个表时,将jdbc整体复制一份,修改对应type
        }  
    }     
        
    output {
        datahub {
            access_id => "Your accessId"
            access_key => "Your accessKey"
            endpoint => "Endpoint"
            project_name => "project"
            topic_name => "topic"
            #shard_id => "0"
            #shard_keys => ["thread_id"]
            dirty_data_continue => true
            dirty_data_file => "/Users/ph0ly/trash/dirty.data"
            dirty_data_file_max_size => 1000
        }
    }  
    } 
    

    配置文件说明

    input

    input{
    jdbc{
    #jdbc sql server 驱动,各个数据库都有对应的驱动,需自己下载
    jdbc_driver_library => "/etc/logstash/driver.d/sqljdbc_2.0/enu/sqljdbc4.jar"
    #jdbc class 不同数据库有不同的 class 配置
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    #配置数据库连接 ip 和端口,以及数据库
    jdbc_connection_string => "jdbc:sqlserver://200.200.0.18:1433;databaseName=test_db"
    #配置数据库用户名
    jdbc_user =>
    #配置数据库密码
    jdbc_password =>
    #上面这些都不重要,要是这些都看不懂的话,你的老板估计要考虑换人了。重要的是接下来的内容。
    # 定时器 多久执行一次SQL,默认是一分钟
    # schedule => 分 时 天 月 年
    # schedule => 22 表示每天22点执行一次
    schedule => " *"
    #是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
    clean_run => false
    #是否需要记录某个column 的值,如果 record_last_run 为真,可以自定义我们需要表的字段名称,
    #此时该参数就要为 true. 否则默认 track 的是 timestamp 的值.
    use_column_value => true
    #如果 use_column_value 为真,需配置此参数. 这个参数就是数据库给出的一个字段名称。当然该字段必须是递增的,可以是 数据库的数据时间这类的
    tracking_column => create_time
    #是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
    record_last_run => true
    #们只需要在 SQL 语句中 WHERE MY_ID > :last_sql_value 即可. 其中 :sql_last_value 取得就是该文件中的值
    last_run_metadata_path => "/etc/logstash/run_metadata.d/my_info"
    #是否将字段名称转小写。
    #这里有个小的提示,如果你这前就处理过一次数据,并且在Kibana中有对应的搜索需求的话,还是改为true,
    #因为默认是true,并且Kibana是大小写区分的。准确的说应该是ES大小写区分
    lowercase_column_names => false
    #你的SQL的位置,当然,你的SQL也可以直接写在这里。
    #statement => SELECT * FROM tabeName t WHERE t.creat_time > :sql_last_value
    statement_filepath => "/etc/logstash/statement_file.d/my_info.sql" #数据类型,标明你属于那一方势力。单了ES哪里好给你安排不同的山头。 type => "my_info" } #注意:外载的SQL文件就是一个文本文件就可以了,还有需要注意的是,一个jdbc{}插件就只能处理一个SQL语句, #如果你有多个SQL需要处理的话,只能在重新建立一个jdbc{}插件。 }

    filter

    filter的配置暂时为空。

    output

    access_id(Required): 阿里云access id
    access_key(Required): 阿里云access key
    endpoint(Required): 阿里云datahub的服务地址
    project_name(Required): datahub项目名称
    topic_name(Required): datahub topic名称
    retry_times(Optional): 重试次数,-1为无限重试、0为不重试、>0表示需要有限次数, 默认值为-1
    retry_interval(Optional): 下一次重试的间隔,单位为秒,默认值为5
    skip_after_retry(Optional): 当由Datahub异常导致的重试超过重试次数,是否跳过这一轮上传的数据,默认为false
    approximate_request_bytes(Optional): 用于限制每次发送请求的字节数,是一个近似值,防止因request body过大而被拒绝接收,默认为2048576(2MB)
    shard_keys(Optional):数组类型,数据落shard的字段名称,插件会根据这些字段的值计算hash将每条数据落某个shard, 注意shard_keys和shard_id都未指定,默认轮询落shard
    shard_id(Optional): 所有数据落指定的shard,注意shard_keys和shard_id都未指定,默认轮询落shard
    dirty_data_continue(Optional): 脏数据是否继续运行,默认为false,如果指定true,则遇到脏数据直接无视,继续处理数据。当开启该开关,必须指定@dirty_data_file文件
    dirty_data_file(Optional): 脏数据文件名称,当数据文件名称,在@dirty_data_continue开启的情况下,需要指定该值。特别注意:脏数据文件将被分割成两个部分.part1和.part2,part1作为更早的脏数据,part2作为更新的数据
    dirty_data_file_max_size(Optional): 脏数据文件的最大大小,该值保证脏数据文件最大大小不超过这个值,目前该值仅是一个参考值

    相关文章

      网友评论

          本文标题:logstash 实时增量同步oracle 到datahub s

          本文链接:https://www.haomeiwen.com/subject/oulqnqtx.html