设为首页 收藏本站
查看: 1814|回复: 0

[经验分享] 同步mysql数据到ElasticSearch的最佳实践

[复制链接]

尚未签到

发表于 2017-12-12 13:55:14 | 显示全部楼层 |阅读模式
  Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
  安装es以及head插件,略。
  为了使海量数据能够提供实时快速的查询,mysql很显然力不从心,于是我们需要利用es提供大数据搜索服务,典型的场景就是:产品或者商品搜索。
  首先是数据同步,将mysql数据同步到es的方式很多,经过测试,稳定且易用的是logstash-input-jdbc
  如何安装logstash-input-jdbc插件?
  参考:http://blog.csdn.net/yeyuma/article/details/50240595#quote
  全量同步与增量同步
  全量同步是指全部将数据同步到es,通常是刚建立es,第一次同步时使用。增量同步是指将后续的更新、插入记录同步到es。(删除记录没有办法同步,只能两边执行自己的删除命令)
  根据公司内部实践,logstash-input-jdbc增量同步的原理很简单。我们做增量同步是需要知道插入和更新记录的,因此,进入ES提供搜索服务的表(要同步的标),都要加上update_time,每次插入和更新的时候更新这个字段,让logstash-input-jdbc知道即可。
  详见:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html#_predefined_parameters
  关键点:
  where t.update_time > :sql_last_value
  测试结果:
  先更新一条数据看看
DSC0000.png

  然后在es中查询看看有没有更新到
DSC0001.png

  成功,自动同步了!
  如果需要同时同步多个表,那么需要以下配置
  

input {  
jdbc {
  
jdbc_driver_library => "/Users/logstash/mysql-connector-java-5.1.39-bin.jar"
  
jdbc_driver_class => "com.mysql.jdbc.Driver"
  
jdbc_connection_string => "jdbc:mysql://localhost:3306/database_name"
  
jdbc_user => "root"
  
jdbc_password => "password"
  
schedule => "* * * * *"
  
statement => "select * from table1"
  
type => "table1"
  
}
  
jdbc {
  
jdbc_driver_library => "/Users/logstash/mysql-connector-java-5.1.39-bin.jar"
  
jdbc_driver_class => "com.mysql.jdbc.Driver"
  
jdbc_connection_string => "jdbc:mysql://localhost:3306/database_name"
  
jdbc_user => "root"
  
jdbc_password => "password"
  
schedule => "* * * * *"
  
statement => "select * from table2"
  
type => "table2"
  
}
  
# add more jdbc inputs to suit your needs
  
}
  
output {
  
elasticsearch {
  
index => "testdb"
  
document_type => "%{type}"   # <- use the type from each input
  
hosts => "localhost:9200"
  
}
  
}
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-423344-1-1.html 上篇帖子: MYSQL的空间查询 下篇帖子: zabbix-3.2.4监控mysql服务器性能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表