作用:

用于同步数据源,属于ELK中的L, 将各种格式各种渠道的数据通过它收集解析之后格式化输出到 Elasticsearch ,最后再由 Kibana 提供的比较友好的 Web 界面进行汇总、分析、搜索

全量操作:

在logstash下bin目录下创建mysqltoes.conf文件用于查询数据库,文件内容如下:

# 读取数据源
input {
 stdin { }
    jdbc {
		# 数据连接地址(你要连接哪个数据库)
        jdbc_connection_string => "jdbc:mysql://localhost:3306/springcloud"
		# 自己数据库用户名
        jdbc_user => "root"
		# 自己数据库密码
        jdbc_password => "root"
		# 驱动位置(自己电脑驱动的位置)
        jdbc_driver_library => "D:\install\develop\ELK\logstash-7.6.2\logstash-7.6.2\bin\mysql-connector-java-5.1.29.jar"
		# 驱动名称
        jdbc_driver_class => "com.mysql.jdbc.Driver"
		
        jdbc_paging_enabled => "true"

        jdbc_page_size => "50000"
		
		# 设置执行SQL
		use_column_value => false
		# 设置时区
		jdbc_default_timezone =>"Asia/Shanghai"
		#查询的数据库表
        statement => "SELECT * FROM `userkibana` "
		
		# 设置监听间隔 各字段含义(从左至右)分、时、天、月、年,全为*默认含义为每分钟都更新
        schedule => "* * * * *"
    }
 }

 output {
     stdout {
        codec => json_lines
    }
    elasticsearch {
		# ES位置
        hosts => "localhost:9200"
		# 索引名称
        index => "user1"
		# 文档类型
        document_type => "_doc"
		# 文档ID(指你数据库表中的id,如果没有就不用写)
        document_id => "%{id}"
    }
}

首先启动elasticsearch和kibana的服务

接下来使用cmd进入到你的logstash的bin目录里面使用logstash -f mysqltoes.conf

注意:-f后面的就是刚刚创建文件夹的位置,因为我的是在logstash的启动服务的同一个目录下,所以这么写,你的如果不在则写相应的路径

java 一张表更新以后再更新其他表如何做_java


当出现你数据库表中的值的时候则代表成功了,接下来我们在kibana中查询一下索引,也就是mysqltoes.conf配置文件中的index的值

GET /user1/_search

java 一张表更新以后再更新其他表如何做_java_02


可以查询出来

增量更新

步骤一:在你查询的数据表中添加一个时间类型的字段,如果mysql版本是5.6之前的则

java 一张表更新以后再更新其他表如何做_java_03


5.6之后的就类型为datetime,默认值CURRENT_TIMESTAMP

添加完字段以后因为还没有更新,所以是没有值的,接下来我们把表中的数据都更新一下,让新增的字段有值

java 一张表更新以后再更新其他表如何做_bc_04


步骤2:修改配置文件:

statement => "SELECT * FROM `userkibana` where update_date>:sql_last_value "

步骤3:重启logstash服务

java 一张表更新以后再更新其他表如何做_elasticsearch_05


步骤4:对数据表中的值进行修改

java 一张表更新以后再更新其他表如何做_elasticsearch_06


因为我们配置文件中 schedule => "* * * * "设置的为全*,所以我们稍等一分钟,看到服务显示

java 一张表更新以后再更新其他表如何做_java_07


修改的数据已经检测到,到Kibana里面查询

java 一张表更新以后再更新其他表如何做_java_08


已经同步过来,至此结束