logstash实现MySQL数据同步到elasticsearch

1.logstash安装

1、Windows环境

1.下载logstash压缩包(.zip),解压后进入bin目录
在这里插入图片描述

在该目录下输入cmd,
在这里插入图片描述
进入控制台,输入:

logstash -e 'input{stdin{}} output{stdout{}}'

可验证是否运行成功

aaa
2021-04-15T11:35:28.946Z DESKTOP-AS6S9D3 aaa
bbbb
2021-04-15T11:35:31.968Z DESKTOP-AS6S9D3 bbbb

将MySQL数据同步到elasticsearch:
1.创建MySQL.conf文件(注意保存设置编码格式为utf-8)
文件内容为:

input {
 stdin { }
    jdbc {
        #注意mysql连接地址一定要用ip,不能使用localhost等 将下列修改为自己的主机和用户名密码
        jdbc_connection_string => "jdbc:mysql://192.168.217.130:3306/test"
        jdbc_user => "root"
        jdbc_password => "123456"
        #驱动的位置
        jdbc_driver_library => "D:\logstash-5.6.8\mysqletc\mysql-connector-java-5.1.46.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_paging_enabled => "true"
        jdbc_page_size => "500"
        #执行的语句
        statement => "SELECT * FROM user"
        schedule => "* * * * *"
    }
 }
  
 output {
     stdout {
        codec => json_lines
    }
    elasticsearch {
        #注意mysql连接地址一定要用ip,不能使用localhost等
        hosts => "192.168.217.130:9200"
        #使用elasticsearch的索引
        index => "testdb"
        #使用elasticsearch的类型
        document_type => "testTb"
        #此处的id值为MySQL中查询出来的id
        document_id => "%{id}"
    }
}


2.将刚才的conf文件放置在该文件夹下(该文件夹自己创建,可将MySQL驱动放置在该文件夹下)
在这里插入图片描述

回到bin目录下的命令行窗口,运行下列命令即可

D:\logstash-5.6.8\bin>logstash -f ../mysqletc/logstash.conf
2.Linux环境下docker安装

1.拉取镜像,这里版本为6.5.3(注意版本不同配置可能不一样)(这里和我的elasticsearch版本不一致但是也能使用)

docker pull daocloud.io/library/logstash:6.5.3

2.启动镜像,同时映射文件夹,这样就可以把文件同步到镜像内
将/Users/work/docker/logstash/文件映射到容器的/etc/logstash/pipeline/目录下

docker run -d --name logstash1   -v /Users/work/docker/logstash/:/etc/logstash/pipeline/  daocloud.io/library/logstash:6.5.3

若出现内存不足错误,则加启动配置: -e LS_JAVA_OPTS="-Xms512m -Xmx1g"(自定义数值大小)

3.安装 jdbc 和 elasticsearch 插件
通过 docker exec -it logstash1 /bin/bash 命令进入容器内,然后在下载插件

/opt/logstash-6.5.4# bin/logstash-plugin install logstash-input-jdbc
Validating logstash-input-jdbc
Installing logstash-input-jdbc
Installation successful
/opt/logstash-6.5.4# bin/logstash-plugin install logstash-output-elasticsearch
Validating logstash-output-elasticsearch
Installing logstash-output-elasticsearch
Installation successful

4.下载mysql-connector-java的jar包,放在刚刚配置的映射/Users/work/docker/logstash/文件夹中
编写logstash的配置文件logstash.config,也放在刚刚配置的映射/Users/work/docker/logstash/文件夹中

input {
 stdin { }
    jdbc {
        #注意mysql连接地址一定要用ip,不能使用localhost等
        jdbc_connection_string => "jdbc:mysql://192.168.1.103:3307/test"
        jdbc_user => "root"
        jdbc_password => "123456"
        #这个jar包的地址是容器内的地址
        jdbc_driver_library => "/etc/logstash/pipeline/mysql-connector-java-5.1.47.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
        statement => "SELECT * FROM test"
        schedule => "* * * * *"
    }
 }
  
 output {
     stdout {
        codec => json_lines
    }
    elasticsearch {
        #注意mysql连接地址一定要用ip,不能使用localhost等
        hosts => "192.168.1.103:9200"
        index => "test"
        document_type => "_doc"
        document_id => "%{id}"
    }
}

5.更改设置,容器内执行命令:

#进入config文件
cd config
#更改logstash.yml文件
vi logstash.yml

将http://elasticsearch:9200改为http://ip地址:9200
6.更改logstash启动配置

#进入config文件
cd config
#更改pipelines.yml文件
vi pipelines.yml

具体修改为,注意这个是容器内的地址配置文件的地址路径

- pipeline.id: table1
  path.config: "/etc/logstash/pipeline/logstash.conf"

注:若想配置多个同步文件,如下配置即可:

- pipeline.id: table1
  path.config: "/etc/logstash/pipeline/logstash.conf"
- pipeline.id: table2
  path.config: "/etc/logstash/pipeline/logstash1.conf"

然后退出容器,重启logstash即可

docker restart logstash1
 
 
#具体的日志查看方式
docker logs -f --tail=30 logstash1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值