使用Logstash-input-jdbc同步数据库中的数据全量 和 增量


使用Logstash-input-jdbc同步数据库中的数据(全量 和 增量)

logstash-input-jdbc插件是logstash 的一个个插件,使用ruby语言开发。

参考资料:

  1. https://github.com/logstash-plugins/logstash-input-jdbc
  2. https://www.elastic.co/blog/logstash-jdbc-input-plugin
  3. https://blog.csdn.net/weixin_40397083/article/details/80605182

安装ruby

安装步骤

[root@localhost ~]# gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
gpg: requesting key D39DC0E3 from hkp server keys.gnupg.net
gpg: requesting key 39499BDB from hkp server keys.gnupg.net
gpg: key D39DC0E3: "Michal Papis (RVM signing) <mpapis@gmail.com>" not changed
gpg: key 39499BDB: "Piotr Kuczynski <piotr.kuczynski@gmail.com>" not changed
gpg: Total number processed: 2
gpg:              unchanged: 2

[root@localhost ~]# \curl -sSL https://get.rvm.io | bash -s stable
Downloading https://github.com/rvm/rvm/archive/1.29.7.tar.gz
Downloading https://github.com/rvm/rvm/releases/download/1.29.7/1.29.7.tar.gz.asc
gpg: Signature made Thu 03 Jan 2019 05:01:48 PM EST using RSA key ID 39499BDB
gpg: Good signature from "Piotr Kuczynski <piotr.kuczynski@gmail.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 7D2B AF1C F37B 13E2 069D  6956 105B D0E7 3949 9BDB
GPG verified '/usr/local/rvm/archives/rvm-1.29.7.tgz'
Creating group 'rvm'
Installing RVM to /usr/local/rvm/
Installation of RVM in /usr/local/rvm/ is almost complete:

  * First you need to add all users that will be using rvm to 'rvm' group,
    and logout - login again, anyone using rvm will be operating with `umask u=rwx,g=rwx,o=rx`.

  * To start using RVM you need to run `source /etc/profile.d/rvm.sh`
    in all your open shell windows, in rare cases you need to reopen all shell windows.
  * Please do NOT forget to add your users to the rvm group.
     The installer no longer auto-adds root or users to the rvm group. Admins must do this.
     Also, please note that group memberships are ONLY evaluated at login time.
     This means that users must log out then back in before group membership takes effect!
[root@localhost ~]# source /etc/profile.d/rvm.sh
[root@localhost ~]# rvm -v
[root@localhost ~]# rvm install 2.5
[root@localhost ~]# ruby -v
ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-linux]

安装示例图

在这里插入图片描述

安装logstash-input-jdbc插件

安装步骤

[root@localhost elasticsearch-6.4.0]# cd /usr/logstash-6.4.0/

[root@localhost logstash-6.4.0]# bin/logstash-plugin install logstash-input-jdbc
Validating logstash-input-jdbc
Installing logstash-input-jdbc
Installation successful

实现样例

准备工作

  • MySQL数据库
  • ElasticSearch
  • LogStash
  • MySQL驱动jar包

全量导入

样例数据

在这里插入图片描述

准备配置文件jdbc.conf
input {
 jdbc {
   jdbc_connection_string => "jdbc:mysql://192.168.152.132:3306/test"
   jdbc_user => "root"
   jdbc_password => "MyNewPass4!"
   jdbc_driver_library => "/root/mysql-connector-java-5.1.26.jar"
   jdbc_driver_class => "com.mysql.jdbc.Driver"
   statement => "select * from contacts"
  }
}
filter {
 json {
   source => "message"
 }
}
output {
  stdout {
    codec => rubydebug
  }
  elasticsearch {
    hosts => "192.168.152.132:9200"
    index => "test"
    document_id => "%{uid}"
    #cluster => "logstash-elasticsearch"
  }
}
启动logstash
[root@localhost logstash-6.4.0]# bin/logstash -f config/jdbc.conf --debug
测试结果

在这里插入图片描述

增量导入

样例数据(同上)
准备配置文件jdbc.conf
input {
 jdbc {
   jdbc_connection_string => "jdbc:mysql://192.168.152.132:3306/test"
   jdbc_user => "root"
   jdbc_password => "MyNewPass4!"
   jdbc_driver_library => "/root/mysql-connector-java-5.1.26.jar"
   jdbc_driver_class => "com.mysql.jdbc.Driver"
   statement => "select * from contacts"
   # execute query every minute, on the minute
   schedule => "* * * * *"
  }
}
filter {
 json {
   source => "message"
 }
}
output {
  stdout {
    codec => rubydebug
  }
  elasticsearch {
    hosts => "192.168.152.132:9200"
    index => "test"
    document_id => "%{uid}"
    #cluster => "logstash-elasticsearch"
  }
}
启动logstash(同上)
新增测试

手动插入一条测试数据

在这里插入图片描述

大概1分钟左右查看logstash服务控制台

在这里插入图片描述

再去查看ES,是否有增量数据

在这里插入图片描述

修改测试

现在将样例数据ID为1的记录first_name修改为aaa,查看修改信息是否会同步到ES中

在这里插入图片描述

大概1分钟左右查看logstash服务控制台

在这里插入图片描述

再次查看ES,查看修改的数据是否同步完成

在这里插入图片描述

全唐诗检索实例

样例数据

在这里插入图片描述

准备配置文件ts.conf

input {
 jdbc {
   jdbc_connection_string => "jdbc:mysql://192.168.152.132:3306/test"
   jdbc_user => "root"
   jdbc_password => "MyNewPass4!"
   jdbc_driver_library => "/root/mysql-connector-java-5.1.26.jar"
   jdbc_driver_class => "com.mysql.jdbc.Driver"
   statement => "select p1.id as id,p1.content content,p1.title as title, p2.name as author from poetries p1 LEFT JOIN poets p2 on p1.poet_id = p2.id"
   # execute query every minute, on the minute
   # schedule => "* * * * *"
  }
}
filter {
 json {
   source => "message"
 }
}
output {
  # stdout {
  #   codec => rubydebug
  # }
  elasticsearch {
    hosts => "192.168.152.132:9200"
    index => "ts"
    document_id => "%{id}"
    document_type => "poetries"
  }
}

创建ES的ts索引的Mapping

在kibana上执行创建mapping指令

PUT /ts
PUT /ts/_mapping/poetries 
{
  "properties": {
    "id": {
      "type": "integer"
    },
    "content":{
      "type": "text",
      "search_analyzer": "ik_max_word",
      "analyzer": "ik_max_word"
    },
    "title":{
      "type": "text",
      "search_analyzer": "ik_max_word",
      "analyzer": "ik_max_word"
    },
    "author":{
      "type": "text",
      "search_analyzer": "ik_max_word",
      "analyzer": "ik_max_word"
    }
  }
}

启动logstash导入全唐诗

[root@localhost logstash-6.4.0]# bin/logstash -f config/ts.conf

测试结果

查看kibana,结果如下:

在这里插入图片描述


在这里插入图片描述

实现全唐诗检索

在这里插入图片描述

原文地址:https://blog.csdn.net/qq_31871785/article/details/89533058

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


连接数据库的方式:第一种方式:ODBC:开放数据库连接是微软公司开放服务结构中有关数据库的一个组成部分,是数据库访问接口标准。ODBC是基于C语言实现的。提供了语言和数据库进行交互的一致性的接口,便于语言和数据库通信以及语言对数据库的各种操作。第二种方式:JDBC(本章重点)在Java中,
JDBCRequest 使用VariableNamesmysql:数据库连接池对象variousname:设置的变量名称 如何使用该变量a_#、b_#、c_#、d_#:代表行数a_1:第1行、第1列b_2:第2行、第2列
 1.JDBCDBC(JavaDataBaseConnectivity):Java数据库连接技术:具体讲就是通过Java连接广泛的数据库,并对表中数据执行增、删、改、查等操作的技术。JDBC是数据库与Java代码的桥梁。JDBC中定义了操作数据库的各种接口和类型:增删改基本操作:(1)获取连接:Connectionconnection=
1.需要jar包的支持:java.sqljavax.sqlmysql-conneter-java...连接驱动(必须要导入)<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></depend
1.简介Activiti是一个业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。在Java工作流引擎中可谓是主流,我们的项目也是使用的这个框架进行流程相关的开发。与流程息息相关的就是我们的流程定义BPMN文件,包含有一系列
1.JDBC体系系统一组规范:接口JDBC接口(API)包括两个层次:面向应用的API:JavaAPI,抽象接口,供应用开发人员使用(连接数据库,执行SQL语句,获得结果)面向数据库的API:JavaDriverAPI,供开发商开发数据库驱动程序JDBC是sun公司提供一套用于数据库操作的接口,java程序员只需要面向这套接
原文链接JDBC一般指Java数据库连接(JavaDatabaseConnectivity)api应用程序接口(API):可以调用或者使用类/接口/方法等去完成某个目标。API制定的类/方法可以做什么。API由开发人员调用。spi服务提供接口(SPI):需要继承或实现某些类/接口/方法等去完成某个目标。SPI告诉你
spring.shardingsphere.datasource.names=#省略数据源配置,请参考用法#标准分表配置spring.shardingsphere.rules.sharding.tables.<table-name>.actual-data-nodes=#描述数据源名称和实际表,分隔符为点,多个数据节点用逗号分隔,支持内联表达式。Absent表示仅对数据库进行分片
1问题Cannotloaddriverclass:com.mysql.cj.jdbc.Driver 2解决方案2.1已解决2.1.1首先,去查看项目中MySQL的版本如果找不到,说明可能还没有jdbc驱动,需要配置或者引入       (1)如果是直接引用的jar包,就去lib文件夹中查看,后缀是版
JDBC一、JDBC概述什么是JDBC?JDBC是使用Java语言操作关系型数据库的一套API。这套API是交由不同的数据库厂商实现的。我们利用JDBC编写操作数据库的代码,真正执行的是各个数据库的实现类(驱动)。全称:(JavaDataBaseConnectivity)Java数据库连接。JDBC的好处面向接口编
说明:/*需要引入依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.18</version></dependency>*/代码:objec
1.概要在“配置元件”中添加“JDBCConnectionConfiguration”。配置如下图: 2.重点:配置人大金仓数据库连接下面着重介绍人大金仓数据库连接配置:DatabaseURL输入:jdbc:kingbase8://192.132.180.101:54321/hj_yc   (备注:应输入 jdbc:kingbase8://IP:
JDBC概念:JavaDataBaseconnectivityJava数据库连接,Java语言操作数据库JDBc本质∶其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类
Mybatis核心配置文件习惯上命名mybatis-config.xml,整合Spring之后,整个配置文件可以省略核心配置文件主要用于配置连接数据库的环境以及MyBatis的全局配置信息标签顺序顺序出错会报错propertiessettingstypeAliasestypeHandlersobjectFactoryobjectWrapperFa
JDBC1.概念:JavaDataBaseConnectivityJava数据库连接,Java语言操作数据库JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
  1.出现这个问题的原因 :在安装mysql的时候时区设置的不正确,mysql默认的是美国的时区,而我们中国大陆要比他们迟8小时,采用+8:00格式使用的数据库是MySQL,没有指定MySQL驱动版本的情况下它自动依赖的驱动是8.0.12很高的版本,这是由于数据库和系统时区差异所造成的,在jdbc连
一、环境准备1.数据库创建2个库2个表:xdclass_shop_order_0product_order_0product_order_1ad_configproduct_order_item_0product_order_item_1xdclass_shop_order_1product_order_0product_order_1ad_configproduct_order_item_0product_order_item_1数据
编写配置文件(application.yml)spring:datasource:username:rootpassword:123456url:jdbc:mysql://localhost:3306/mybatis?useUnicode&characterEncoding=utf-8driver-class-name:com.mysql.cj.jdbc.Driver测试连接@SpringBootTestclassSprin
结构图pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http:/
MySql链接url参数详解 jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值2]... 常用的几个较为重要的参数: 参数名称参数说明缺省值最低版本要求 user 数据库用户名(用于连接数据库) 所有版本passWord用户密码(用于连接