热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LogStash+MySQL+Elasticsearch实现数据增量导入

1       环境准备1.1       上传数据库驱动LogStash本身不提供数据库驱动,需要使用者提供数据库的驱动包,且LogStash

1        环境准备


1.1        上传数据库驱动

LogStash本身不提供数据库驱动,需要使用者提供数据库的驱动包,且LogStash中的数据库JDBC插件就是Java开发的。需要上传数据库驱动到LogStash所在主机。

Logstash5.x & 6.3.*以下版本,上传驱动不需要固定位置,任意位置即可。

Logstash6.8.4版本的上传位置固定是:$LogStash_HOME/logstash_core/lib/jars/


1.2        准备数据库表格

LogStash实现增量导入,需要有一个定位字段,这个字段的数据,可以表示数据的新旧,代表这个数据是否是一个需要导入到ES中的数据。这里使用表格的updated字段作为定位字段,每次读取数据的时候,都会记录一个最大的updated时间,每次读取数据的时候,都读取updated大于等于记录的定位字段数据。每次查询的就都是最新的,要导入到ES中的数据。


2       编写LogStash配置文件

在$LogStash_home/config/目录中,编写配置文件ego-items-db2es.conf

vim config/ego-items-db2es.conf








input {

  jdbc {

    # 连接地址

    jdbc_connection_string => "jdbc:mysql://192.168.1.2:3306/ego?useUnicode=true&characterEncoding=UTF-8&serverTimezOne=UTC"

 

    # 数据库用户名和密码

    jdbc_user => "root"

    jdbc_password => "root"

 

    # 驱动类,如果使用低版本的logstash,需要再增加配置 jdbc_driver_library,配置驱动包所在位置

    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"

    # 是否开启分页逻辑

    jdbc_paging_enabled => true

    # 分页的长度是多少

    jdbc_page_size => "2000"

    # 时区

    jdbc_default_timezOne=> "Asia/Shanghai"

 

    # 执行的SQL

    statement => "select id, title, sell_point, price, image, updated from tb_item where updated >= :sql_last_value order by updated asc"

 

    # 执行SQL的周期, [秒] 分钟 小时 天 月 年

    schedule => "* * * * *"

 

    # 是否使用字段的值作为比较策略

    use_column_value => true

    # 作为比较策略的字段名称

    tracking_column => "updated"

    # 作为比较策略的字段类型,可选为numberic和timestamp

    tracking_column_type => "timestamp"

 

    # 记录最近的比较策略字段值的文件是什么,相对寻址路径是logstash的安装路径

    last_run_metadata_path => "./ego-items-db2es-last-value"

    # 是否每次执行SQL的时候,都删除last_run_metadata_path文件内容

    clean_run => false

    # 是否强制把ES中的字段名都定义为小写。

    lowercase_column_names => false

  }

}

 

output {

  elasticsearch {

    hosts => ["http://192.168.89.140:9200", "http://192.168.89.141:9200"]

    index => "ego-items-index"

    action => "index"

    document_id => "%{id}"

  }

}


 


3       安装logstash-input-jdbc插件

在LogStash6.3.x和5.x版本中,logstash-input-jdbc插件是默认安装的。在6.8.4版本的LogStash中是未安装的,需要手工安装。安装命令如下:

$Logstash_HOME/bin/logstash-plugin install logstash-input-jdbc

 


4       启动测试

启动LogStash命令不变:

bin/logstash -f 配置文件



推荐阅读
author-avatar
守望天空2502870383
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有