Elasticsearch与MySQL同步数据

使用Logstash-jdbc-input插件可以将MySQL中的数据同步到数据库。

注意:同步时,只有增加和修改数据库的数据时会同步到Elasticsearch,删除记录时不会将Elasticsearch中的纪录删除。所以,在应用程序中,需要删除数据库中的纪录后,使用API清除ES中的缓存数据。

1.创建数据库表

create table person
(id int primary key auto_increment,
name varchar(10),
age int,
email varchar(20))

2.向表中插入纪录

insert into person(name,age,email) values('张三','21','zhangsan@qq.com');
insert into person(name,age,email) values('李四','23','lisi@qq.com');
insert into person(name,age,email) values('王五','25','wangwu@qq.com');

3.搭建Elasticsearch

4.安装logstash-input-jdbc

#解压
[root@rabbit01 local]# tar -zxvf logstash-6.6.0.tar.gz
[root@rabbit01 local]# cd logstash-6.6.0
#编写配置文件
[root@rabbit01 logstash-6.6.0]# vi logstash-input-jdbc.conf
input {
    jdbc {
        jdbc_connection_string => "jdbc:mysql://192.168.184.131:3306/mydatabase?useUnicode=true&characterEncoding=UTF-8"
        jdbc_user => "root"
        jdbc_password => "12345678"
        jdbc_validate_connection => true
        #数据库驱动
        jdbc_driver_library => "/usr/local/jar/mysql-connector-java-5.1.47.jar"
        #数据库驱动类
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        #定时更新时间,默认一分钟,从左到右为分、时、天、月、年
        schedule => "* * * * *"
        statement => "SELECT * from person"
    }
}
output {
    elasticsearch {
        index => "person"
        document_type => "person"
        document_id => "%{id}"
        hosts => ["192.168.184.131:9200","192.168.184.132:9200","192.168.184.134:9200"]
    }
}
#启动logstash-input-jdbc
[root@rabbit01 logstash-6.6.0]# bin/logstash -f logstash-input-jdbc.conf

5.查看Elasticsearch中的索引数据

在这里插入图片描述

6.手动修改MySQL数据库中的数据,查看同步数据

在这里插入图片描述
1分钟后。。。
在这里插入图片描述
可以看到,数据库更新后,经过1分钟,Elasticsearch中的数据就会更MySQL中的数据保持同步。

注:此博文为本人的学习收获,如有不足之处,欢迎大家批评指正,谢谢阅读!!!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值