您的位置:首页 > 数据库 > MySQL

Elasticserch与Mysql实现数据同步

2017-08-07 22:28 555 查看

目录

目录

引言

1安装Logstash与logstash-input-jdbc插件
1安装Logstash55

2安装logstash-input-jdbc插件

2实现Mysql数据到ES同步
1Mysql数据准备

2编写syncconf

3测试

3结语

引言

最近在做Mysql同步数据到ES中实现快速搜索,上网寻找了一些,主要有铭毅天下的logstash-input-jdbc实现mysql 与elasticsearch实时同步深入详解

讲述了ES通过Logstash的logstash-input-jdbc插件实现同步数据到ES中,实测在Logstash1.x中可行,由于在Logstash5.x中更换了配置,故此记录ES5.5与Logstash5.5实现数据同步。

1安装Logstash与logstash-input-jdbc插件

1.1安装Logstash5.5

Logstash5.5下载

Linux直接下载TAR压缩包,解压至安装目录,博主至/opt下

1.2安装logstash-input-jdbc插件

具体安装过程见 利用logstash的logstash-input-jdbc插件实现mysql增量导入ES的介绍

在更改到淘宝源后,因为Logstash5.5的Plugin安装不同于Logstash1.x,这里是Logstash5.5的安装

cd /opt/logstash-5.5.1/bin/
./logstash-plugin install logstash-input-jdbc


2实现Mysql数据到ES同步

2.1Mysql数据准备

数据库名:course

表名:live_room

表中有如下数据:



2.2编写sync.conf

#sync.conf如下
input {
stdin {
}

jdbc {
# mysql jdbc connection string to databse
jdbc_connection_string => "jdbc:mysql://localhost:3306/course?useSSL=false"
# the user we wish to excute our statement as
jdbc_user => "you use name"
jdbc_password => "you passwd"

record_last_run => "true"
use_column_value => "true"
tracking_column => "id"
last_run_metadata_path => "/home/test/info"
clean_run => "false"

# the path to you downloaded jdbc driver
jdbc_driver_library => "/home/test/tools/mysql-connector-java-5.1.43-bin.jar"
# the name of the driver class for mysql
jdbc_driver_class => "com.mysql.jdbc.Driver"
# jdbc_paging_enabled => "true"
jdbc_page_size => "500"
statement => "SELECT * from live_room"
#定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
# schedule => "* * * * *"
#设定ES索引类型
type => "live_room"
}

}

output {

elasticsearch {
#ESIP地址与端口
hosts => "localhost:9200"
#ES索引名称(自己定义的)
index => "course"
#document_type => "live_room"
#自增ID编号
document_id => "%{id}"
}

}


备注:

jdbc_connection_string => “填写自己的数据库地址”

record_last_run => “true”是否在last_run_metadata_path中保存状态

use_column_value => “true”使用增量列值而不是时间戳

tracking_column => “id”如果跟踪列值而不是时间戳,则要跟踪其值的列

last_run_metadata_path => “/home/test/info”上次运行时间的文件路径

clean_run => “false”是否应保留以前的运行状态

jdbc_driver_library => “/home/test/tools/mysql-connector-java-5.1.43-bin.jar”

mysql-connector-java-5.1.43-bin.jar自行下载放到目录下。

jdbc_page_size => “500”JDBC页面大小

将sync.conf放置到你需要的目录下

进入logstash5.5的目录

cd /opt/logstash-5.5.1/bin/
./logstash -f 放置sync.conf的目录


2.3测试



如图,可见数据已经传入ES。

3结语

本人初学ES,记录过程给像我一样学习的人,也方便查询,若过程有误,欢迎指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据