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,记录过程给像我一样学习的人,也方便查询,若过程有误,欢迎指正。相关文章推荐
- 通过Gearman实现MySQL到Redis的数据同步
- mysql数据双向同步实现
- 通过Gearman实现MySQL到Redis的数据同步
- 通过Gearman实现MySQL到Redis的数据同步
- Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步
- 通过Gearman实现MySQL到Redis的数据同步
- mysql 触发器实现两个表的数据同步
- 用mysql的federated数据引擎和触发器实现跨服务器表数据同步
- 通过Gearman实现MySQL到Redis的数据同步
- 利用脚本实现mysql主库到备库数据同步(每五分钟同步一次增量)
- MySQL实现两张表数据的同步
- 通过Gearman实现MySQL到Redis的数据同步
- redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)
- (精典教程)在MySql上实现Replication(Master 与 Slave 数据同步)
- 通过Gearman实现MySQL到Redis的数据同步(异步复制)
- 用solr DIH 实现mysql 数据定时,增量同步到solr
- 通过Gearman实现MySQL到Redis的数据同步
- 使用oracle goldengate 实现windows下mysql到oracle的数据同步
- 使用GoldenGate实现MySQL到Oracle的数据实时同步
- 在MySql上实现Replication(Master 与 Slave 数据同步) 二