logstash同步数据库数据到ES中

    xiaoxiao2022-07-05  174

    logstash同步数据到ES

    logstash配置说明环境准备配置文件启动方式踩过的坑

    logstash配置说明

    环境准备

    在logstash目录中新建文件夹driver;把数据库驱动包复制到driver文件夹下(ojdbc6.jar);

    配置文件

    新建配置文件jdbc.conf;该配置文件的内容如下: input{ jdbc{ # 数据库驱动包存放路径 jdbc_driver_library => "D:\logstash-5.6.9\lib\ojdbc6.jar" # 数据库驱动器; jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver" # 数据库连接方式 jdbc_connection_string => "jdbc:oracle:thin:@192.168.1.1:1521:test" # 数据库用户名 jdbc_user => "admin" # 数据库密码 jdbc_password => "admin" # 数据库重连尝试次数 connection_retry_attempts => "3" # 判断数据库连接是否可用,默认false不开启 jdbc_validate_connection => "true" # 数据库连接可用校验超时时间,默认3600s jdbc_validation_timeout => "3600" # 开启分页查询(默认false不开启) jdbc_paging_enabled => "true" # 单次分页查询条数(默认100000,若字段较多且更新频率较高,建议调低此值) jdbc_page_size => "500" # statement为查询数据sql,如果sql较复杂,建议通过statement_filepath配置sql文件的存放路径 # statement_filepath => "D:\logstash-5.6.9\config\jdbc.sql" # sql_last_value为内置的变量,存放上次查询结果中最后一条数据tracking_column的值,此处即为rowid statement => "select t.*, t.rowid from test t where rowid > :sql_last_value" # 是否将字段名转换为小写,默认true(如果有数据序列化、反序列化需求,建议改为false); lowercase_column_names => false # 是否记录上次执行结果,true表示会将上次执行结果的tracking_column字段的值保存到last_run_metadata_path指定的文件中 record_last_run => true # 需要记录查询结果某字段的值时,此字段为true,否则默认tracking_column为timestamp的值 use_column_value => true # 查询结果某字段的数据类型,仅包括numeric和timestamp,默认为numeric tracking_column_type => numeric # 需要记录的字段,用于增量同步,需是数据库字段 tracking_column => "rowid" # 记录上次执行结果数据的存放位置 last_run_metadata_path => "D:\logstash-5.6.9\logs\last_id.txt" # 是否清除last_run_metadata_path的记录,需要增量同步时此字段必须为false clean_run => false # 同步频率(分 时 天 月 年),默认每分钟同步一次 schedule => "* * * * *" # ES索引的type type => "test_type01" } # 如果同步多个表,可以在复制一个jdbc{}块,修改相应的地方即可 } output{ elasticsearch{ # ES地址,集群中多个地址可用数组形式:hosts => ["192.168.1.1:9200", "192.168.1.2:9200", "192.168.1.3:9200"] hosts => "localhost:9200" # 索引名称 index => "elasticsearch" 数据唯一索引(建议同数据库表的唯一ID对应) document_id => "%{rowid}" } # 同步多个表时的写法 # if [type] == "test_type01" { # elasticsearch{} # } # if [type] == "test_type02" { # elasticsearch{} # } }

    启动方式

    cd到logstash的bin目录下,logstash.bat -f #配置文件jdbc.conf所在的路径#

    踩过的坑

    数据库驱动jdbc_driver_class前面少了Java::,导致启动报错:oracle.jdbc.driver.OracleDriver not loaded. Are you sure you’ve included the correct jdbc driver in :jdbc_driver_library?数据库驱动jdbc_driver_class前面写成了java::,导致启动报错:oracle.jdbc.driver.OracleDriver not loaded. Are you sure you’ve included the correct jdbc driver in :jdbc_driver_library?
    最新回复(0)