1、什么是Logstash
Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。
2、基本命令
logstash ‐e 执行语句
logstash -f 执行语句的路径
一、 使用Logstash将mysql数据库的信息导入 Elasticsearch
(1)下载安装好Logstash
,解压到没有中文字符的目录下。
(2)编写基本导入的配置文件mysql.conf
input {
jdbc {
# mysql jdbc connection string to our backup databse 连接的数据库
jdbc_connection_string => " jdbc:mysql://192.168.25.132:3306/book?characterEncoding=UTF8"
# the user we wish to excute our statement as
jdbc_user => "root"
jdbc_password => "12345"
# the path to our downloaded jdbc driver 连接驱动所在的位置
jdbc_driver_library => "D:/afiles/logstash-5.6.8/mysqletc/mysql-connector-java-5.1.46.jar"
# the name of the driver class for mysql 驱动的类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
# 是否分页
jdbc_paging_enabled => "true"
# 分页的大小
jdbc_page_size => "50"
#以下对应着要执行的sql的绝对路径。
#statement_filepath => ""
## 查询表数据的语句 也就是你要同步的数据
statement => "SELECT id ,bookName ,content, pagecount FROM tb_book"
#定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
schedule => "* * * * *"
}
}
output {
elasticsearch {
#ESIP地址与端口
hosts => "127.0.0.1"
#ES索引名称(自己定义的)
index => "bookstore"
#自增ID编号
document_id => "%{id}"
document_type => "book"
}
stdout {
#以JSON格式输出
codec => json_lines
}
}
(3)将配置好的mysql.conf
与数据库驱动
,放在同一个文件夹中。
我在logstach
安装目录下,新建了一个mysqletc
文件夹,放置配置文件和数据库驱动。
(4)到数据库存入测试数据 如下:
(5)输入命令开始同步
记得你的 elasticsearch的服务是开着的
cmd 进入 logstash安装文件夹下的bin目录 执行命令logstash -f ../mysqletc/mysql.conf
,等待几分钟之后,控制台就会打印查询语句。
ROM (SELECT id ,bookName ,content, pagecount FROM tb_book) AS `t1` LIMIT 1
[2019-07-21T20:42:00,425][INFO ][logstash.inputs.jdbc ] (0.003000s) SELECT * FROM (SELECT id ,bo
okName ,content, pagecount FROM tb_book) AS `t1` LIMIT 50 OFFSET 0
{"@version":"1","id":111,"@timestamp":"2019-07-21T12:42:00.427Z","bookname":"三国演义","pagecount":1
000,"content":"3个国家打架的故事"}
{"@version":"1","id":222,"@timestamp":"2019-07-21T12:42:00.428Z","bookname":"红楼梦","pagecount":200
0,"content":"一个家族从兴盛到落魄的故事"}
{"@version":"1","id":333,"@timestamp":"2019-07-21T12:42:00.429Z","bookname":"水浒传","pagecount":300
0,"content":"一群英雄好汉一起奇骑兵的故事"}
这个时候,也就同步成功了 ,通过head
插件,查看数据如下。
数据已经成功同步
(6)测试修改数据
将数据库的消息修改如下:检查索引库那边是否会同步数据库消息。配置文件中配置的同步时间是 schedule => "* * * * *"
。也就是时刻同步。为了减轻访问数据库的压力,可以将同步时间测试每隔几分钟。
修改已经同步到数据库。
注意:索引库只能同步修改,并不能同步删除,所以当我们想要删除一条数据的时候,要进行逻辑删除,如:设置状态值 1,0 。当修改值之后,会同步到索引库。我们查询索引库的时候,也就可以设置查询条件 来查询数据