logstash(8.2.2)分页、增量同步oracle数据到 elasticsearch

1、logstahs下载路径

Logstash 8.2.2 | Elastic

2、配置logstash 新版本不需要

新版本8.2.2 logstash自带logstash-integration-jdbc-5.2.5插件,不用执行以下命令
./logstash-plugin  install logstash-input-jdbc

3、oracle驱动

logstash同步数据需要连接数据库,需要相关驱动。

        将驱动ojdbc6.jar放到相关目录(可自定义l路径,后面配置需要该路径),该jar可从oracle安装目录的/home/ora/oracle/product/11.2.0/dbhome_1/jdbc/lib 下进行下载(实际路径可参照自己环境的安装路径)

4、logstash配置文件

可以从logstash安装目录下的conf 中找一个配置文件复制一下,以下是一个配置文件的例子

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.


input {

   jdbc {
        jdbc_driver_library => "/usr/local/logstash-8.2.2/lib/ojdbc6.jar"
        jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
        jdbc_connection_string => "jdbc:oracle:thin:@2.2.2.2:1521/bpm"
       jdbc_user => "username"
        jdbc_password => "password"
        schedule => "*/5 * * * *"
        jdbc_default_timezone => "Asia/Shanghai"
        statement => "select * from tablename where updatedate > :sql_last_value"
        jdbc_paging_enabled => "true"
        jdbc_page_size => "1000"
        lowercase_column_names=> "true"
        use_column_value => true
        tracking_column => "updatedate"
        tracking_column_type => "timestamp"
        record_last_run => "true"
        last_run_metadata_path => "/usr/local/logstash-8.2.2/config/lastRunDate/lastupdatetime.txt"
        clean_run => "false"
   }

}

filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}

output {
        elasticsearch {
                hosts => ["http://3.3.3.3:9200"]
                index => "index_name"
                document_id => "%{id}"
        }



}

关键配置:

 jdbc_driver_library:ojdbc6.jar包所在运行logstash程序服务器的路径

 schedule :执行时间间隔

statement :增量执行的sql语句

jdbc_paging_enabled: 是否开启分页

jdbc_page_size:每页数据量

lowercase_column_names: 源表字段名导入ES后是否忽略大小写

 use_column_value :是否使用字段值作为增量标识

tracking_column : 增量标识字段名

tracking_column_type:增量字段类型 

record_last_run :上次数据存放位置

last_run_metadata_path:存储增量标识数据文件路径(上一次同步数据的最后一条记录时间)

clean_run:是否清除last_run_metadata_path的记录,需要增量同步时此字段必须为false

output :

document_id : 使用sql返回的哪个字段作为索引的id

5、用该配置文件进行启动

①控制台启动

以下命令执行路径:/usr/local/logsTash/logstash-8.2.2/bin

./logstash -f   ./config/logstash_oracle.conf

②后台启动

### 后台启动不生成日志
./logstash -f ./config/logstash_oracle.conf >/dev/null 2>&1 &

6、多管道运行任务

1、如果需要同时同步多个表,可创建多个配置文件

编辑\logstash-8.2.2\config\pipelines.yml

- pipeline.id: oracle_136
  queue.type: persisted
  path.config: "/usr/local/logstash-8.2.2/config/logstash_oracle.conf"

2、 cmd启动。

以下命令执行路径:/usr/local/logsTash/logstash-8.2.2/bin
后台启动:
.\logstash &

注:在没有参数的情况下启动logstash时,它将读取pipelines.yml文件并实例化文件中指定的所有管道,当使用-e或-f时,Logstash会忽略pipelines.yml文件,并记录对此的警告。

你可能感兴趣的:(oracle,数据库,elasticsearch)