Elasticsearch与MySQL同步数据
程序员文章站
2022-05-09 14:20:19
...
使用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','aaa@qq.com');
insert into person(name,age,email) values('李四','23','aaa@qq.com');
insert into person(name,age,email) values('王五','25','aaa@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中的数据保持同步。
注:此博文为本人的学习收获,如有不足之处,欢迎大家批评指正,谢谢阅读!!!
下一篇: Javascript高性能动画与页面渲染
推荐阅读