MySQL数据同步到ES的4种解决方案

大家应该都在各种电商网站检索过商品,检索商品一般都是通过什么实现呢?搜索引擎 Elasticsearch。

那么问题来了,商品上架,数据一般写入到 MySQL 的数据库中,那么用于检索的数据又是怎么同步到 Elasticsearch 的呢?

1.同步双写

这是能想到的最直接的方式,在写入 MySQL,直接也同步往 ES 里写一份数据。

对于这种方式:

  • 优点:实现简单

  • 缺点:

    • 业务耦合,商品的管理中耦合大量数据同步代码

    • 影响性能,写入两个存储,响应时间变长

    • 不便扩展:搜索可能有一些个性化需求,需要对数据进行聚合,这种方式不便实现

2.异步双写

我们也很容易想到异步双写的办法,上架商品的时候,先把商品数据丢进 MQ,为了解耦合,我们一般会拆分一个搜索服务,由搜索服务去订阅商品变动的消息,来完成同步。

前面说的,一些数据需要聚合处理成类似宽表的结构怎么办呢?例如商品库的商品品类、spu、sku 表是分开的,但是查询是跨维度的,在 ES 里再聚合一次效率就低一些,最好就是把商品的数据给聚合起来,在 ES 里以类似大宽表的形式存储,这样一来查询效率就高一些。

多维度多条件查询

这种其实没什么好办法,基本上还是得搜索服务直接查库,或者远程调用,再查询一遍商品的数据库,就是所谓的回查。

回查完成聚合

这种方式:

  • 优点:

    • 解耦合,商品服务无需关注数据同步

    • 实时性较好,使用 MQ,正常情况下,同步完成在秒级

  • 缺点:引入了新的组件和服务,增加了复杂度

3.定时任务

假如我们要快速搞搞,数据量有没那么大,怎么办呢?定时任务也可以。

定时任务

定时任务,最麻烦的一点是频率不好选,频率高的话,会非自然地形成业务的波峰,导致存储的 CPU、内存占用波峰式上升,频率低的话实时性比较差,而且也有波峰的情况。

这种方式:

  • 优点:实现比较简单

  • 缺点:

    • 实时性难以保证

    • 对存储压力较大

4.数据订阅

还有一种方式,就是最时兴的数据订阅。

MySQL 通过 binlog 订阅实现主从同步,各路数据订阅框架比如 canal 就依据这个原理,将 client 组件伪装成从库,来实现数据订阅。

MySQL主从同步

我们以应用最广泛的 canal 为例,canal 通过canal-adapter,支持多种适配器,其中就有 ES 适配器,通过一些配置,启动之后,就可以直接把 MySQL 数据同步到 ES,这个过程是零代码的。

canal同步数据

但是,和老板了解过,使用 canal 看起来很美好,帮我们把同步的事情都干了,但其实,还是要写代码。为什么呢?

前面提到的多张表数据聚合,canal 的支持没那么好,所以还是得回查。这时候用 canal-adapter 就不合适了,需要自己实现 canal-client,监听和聚合数据,写入 ES:

数据订阅+回查

这种看起来和异步双写比较像,但是第一降低了商品服务的耦合,第二数据的实时性更好。

所以使用数据订阅:

  • 优点:

    • 业务入侵较少

    • 实时性较好

至于数据订阅框架的选型,主流的大体上是这些:

除了 MySQL 同步 ES,MySQL 同步到其它的数据存储,例如 HBase,其实大体上都是类似的几种方法。

吃颗栗子吧
关注 关注
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL如何实时同步数据ES?试试这款阿里开源的神器
技术专家
07-24 646
MySQL如何实时同步数据ES?试试这款阿里开源的神器
使用Logstash同步mysql数据Elasticsearch(亲自踩坑)_将mysql中的数据导入es搜索引擎利用logstash(1)
2401_84141410的博客
04-14 887
⚠️原因:mysql 中的字段 ‘birth_date’ 数据格式为 2000-09-15,通过LogStash导数据时 格式变为 2000-09-14T16:00:00.000Z而ES索引类型要求的格式为 :yyyy-MM-dd所以报错;⚠️原因:数据库表中的sex字段,字段类型为tinyint,Logstash会转成boolean,但是ES中设置的也是int类型,所以你懂的。恭喜你🎉🎉🎉,到这你已经成功3/4啦,接下来进入到最重要,同时99%会报错的最后一步,加油⛽️。
Canal简介
qq_41794285的博客
11-29 968
简介 Canal:译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。 基于日志增量订阅和消费的业务包括 数据库镜像 数据...
4 MySQL 同步 ES 方案,yyds!
架构师小秘圈
05-31 1394
上周听到公司同事分享 MySQL 同步数据ES 的方案,发现很有意思,感觉有必要将这块知识点再总结提炼一下,就有了这篇文章。本文会先讲述数据同步的 4 方案,并给出常用数据迁移工具,干货满满!不 BB,上文章目录:1. 前言在实际项目开发中,我们经常将 MySQL 作为业务数据库ES 作为查询数据库,用来实现读写分离,缓解 MySQL 数据库的查询压力,应对海量数据的复杂查询。这其中有一个...
logstash7.0.1将数据mysql5.7同步es7.0.1大数据量下同步慢的问题
java_xxxx的博客
05-24 1547
首先我们分为两情况 全量导库:以主键id的方式写sql语句分页导入es 增量倒库:按数据修改时间的时间字段进行到库 情况1: 原因:如果我们按修改时间的字段来进行全量倒库,那么logstash的sql语句在大数据量的时候会非常慢,因为logstash在我们的sql之外又套了一层 如:logstash里的mysql.conf文件里的sql SELECT * FROM article_lib WHERE update_time >= '2021-01-01 10:06:00' 但是logstash执行
ESMySQL数据同步(全量与增量)
热门推荐
RuiKe的博客
02-11 3万+
思考: 考虑ES如何与数据库实现同步ES如何查询多个字段? 如何构建商品服务(包含搜索功能)? ES肯定是集群的,如何集群? 一个项目当它做大做当后都可能会需要将数据从传统的数据库同步到另一数据集合中,一般用于提高查询效率或将数据进行备份的目的。其中比较常见的一同步方式是从关系型数据库同步es 一、理论基础 1.1、es数据库是如何保持一致的呢? 原理: 1.2、My...
02-基于Apache SeaTunnel的MySQLElasticsearch实时同步解决方案-线上 meetup11.16
11-17
用 Apache SeaTunnel 以最快的方式,实现从 MySQLElasticSearch 实时同步,在本次分享中,我们将详细介绍这一解决方案的工作原理、如何配置和部署,以及实际的使用案例。
基于Canal的MySQLElasticsearch实时同步方案设计源码
04-09
MySQLElasticsearch实时同步方案 - ...该项目为用户提供了一个基于Canal的MySQLElasticsearch实时同步方案,支持增量同步和全量同步,通过界面交互和功能模块,为用户提供了一个高效、易用的实时数据同步解决方案
基于 MySQL Binlog 的 Elasticsearch 数据同步实践
01-07
把需要检索的业务数据,统一放到一张MySQL 表中,这张中间表对应了业务需要的Elasticsearch 索引,每一列对应索引中的一个Mapping 字段。通过脚本以 Crontab 的方式,读取 MySQL 中间表中 UTime 大于上
canal-elasticsearch:基于阿里巴的canal向elasticsearch同步数据mysql数据的小工具
02-03
对于Elasticsearch,如果要在项目中使用,第一个要解决的问题就是,如何将数据库中的数据同步Elasticsearch,下面常见的几中方案 修改代码,修改插入数据库的代码,同时插入Elasticsearch 修改代码,修改插入...
mysql-es:将MySQL同步ElasticSearch,支持关系
05-26
MySQL-ElasticSearch同步 一个具有实时,无损失,一对一关系MySQL-ElasticSearch同步工具。 基于, 。 运河是Bin-log解析器,也是阿里巴巴的订户 版本 1.0-beta:2018-09-04 说明书 ,请点击这里 要求 Java 1.8以上 2 GB内存+ 2核CPU + 100M可用空间(用于日志) 特征 支持ElasticSearch 5.x〜6.x. 支持没有启用彬日志之前MySQL。 如果MySQL之前没有启用bin-log,NO PROM,请立即启用它。 该工具将通过“ mysqldump”转储历史数据。 请参阅。 支持一对一关系。 原始表 用户表:| id | 昵称| xxx | 职位表: id | user_id | 标题| 内容| 使用简单的设置将它们全部同步,例如: ES-index帖子:| id | u
mysql同步数据elasticsearch示范.conf
09-18
mysql同步数据elasticsearch示范:input { jdbc { type => "hot_words" jdbc_driver_library => "D:/ELK/logstash/bin/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar" jdbc_driver_class => "com.mysql.jdbc.Driver"
基于canal的mysqlelasticsearch实时同步方案,支持增量同步和全量同步.zip
01-15
通过系统性的规划和执行,方案能够分析问题的根本原因,提供可行的解决方案,并引导实施过程,确保问题得到合理解决。 目标达成: 方案通常与明确的目标相关联,它提供了一达成这些目标的计划。无论是企业战略、...
同步MySQL数据库增量变化fountain.zip
07-19
Fountain是监查、捕捉MySQL数据库的增量变化,分发数据变化给消费者处理的一套解决方案。  Fountain,英[ˈfaʊntən],是”源泉“的意思,MySQL数据库源源不断的下发增量,因此而得名。  任何需要快速、准确...
word源码java-es:用于高级搜索的elasticsearch
06-05
同步数据、使用 spring-data-elasticsearch 进行高级检索。 系统分析大作业,详细写个 readme 记录下我肝了整整五天踩坑跳坑的结果。 1. elasticSearch 去官网下载安装,这里我用的6.4.1(好像说springboot默认6.4.3...
使用Logstash和JDBC将MySQL数据导入到Elasticsearch(ES)的过程
u011197085的博客
07-11 1400
在Logstash的配置文件中(通常是logstash.conf),你需要定义一个input和一个output。这个映射定义了一个index叫做"myindex",包含一个type叫做"mytype",以及三个字段,分别是"myfield1"(文本),“myfield2”(日期),和"myfield3"(整数)。请注意,首先你需要准备好的JDBC驱动,Logstash实例,Elasticsearch实例,以及你希望导入的MySQL数据。下载完成后,将jar文件放在一个Logstash可以访问的位置。
4 MySQL 同步 ES 方案,yyds
知识分享官
09-26 262
在实际项目开发中,我们经常将 MySQL 作为业务数据库ES 作为查询数据库,用来实现读写分离,缓解 MySQL 数据库的查询压力,应对海量数据的复杂查询。这其中有一个很重要的问题,就是如何实现 MySQL 数据库ES数据同步,今天和大家聊聊 MySQLES 数据同步的各方案。我们先看看下面 4 常用的数据同步方案。
如何将MySQL数据同步Elasticsearch中?
最新发布
05-08
MySQL数据同步Elasticsearch有多方法,以下是其中两常见的方式: 1. 使用Logstash进行同步: 首先需要在Logstash中安装MySQL插件,然后配置MySQLElasticsearch的连接信息和数据同步规则,最后启动Logstash即可实现数据同步。 2. 使用Elasticsearch-jdbc进行同步Elasticsearch-jdbc是Elasticsearch官方提供的一个工具,可以直接从关系型数据库中读取数据并将其同步Elasticsearch中。使用该工具需要在Elasticsearch中安装相应的插件,然后配置数据库Elasticsearch的连接信息和数据同步规则,最后启动同步任务即可实现数据同步

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • MySQL数据同步到ES的4种解决方案 784
  • idea中push代码失败问题解决 749
  • Spring boot中整合微信支付 283
  • ElasticSearch进阶:一文全览各种ES查询在Java中的实现 237
  • Spring 为什么使用三级缓存而不是二级缓存? 162

最新评论

  • ElasticSearch进阶:一文全览各种ES查询在Java中的实现

    CSDN-Ada助手: 恭喜您写了第19篇博客!标题看起来非常吸引人,我很期待能够阅读您的文章。您的博客内容一直都很有深度,对于ElasticSearch的进阶查询在Java中的实现,我相信您会给我们带来很多实用的经验和技巧。希望您能够继续保持创作的热情,并分享更多有关ElasticSearch的知识。对于下一步的创作建议,或许可以思考一下如何在实际项目中应用这些查询技巧,或者深入探讨一些高级的ElasticSearch功能。再次感谢您的分享,期待您的新作!

  • Elasticsearch (Es)倒排索引

    CSDN-Ada助手: 恭喜您写了第17篇博客!标题“Elasticsearch(Es)倒排索引”听起来非常有趣和有深度。您的博客内容一定非常详细和有价值,我很期待能够阅读它。考虑到您在这个领域的专业知识和经验,我想向您提个建议。或许您可以继续探索Es倒排索引的应用场景或与其他相关技术的结合,这将进一步丰富您的博客内容。谢谢您的分享,我期待着您未来更多的精彩创作!

  • EsMapper映射

    CSDN-Ada助手: 恭喜您撰写第18篇博客!标题“EsMapper映射”非常引人注目。您对这个主题的深入探讨让我对EsMapper的映射有了更清晰的理解。感谢您分享这样有价值的内容。 接下来,我想提供一些建议,希望对您的下一步创作有所帮助。考虑到EsMapper映射的复杂性,您可以尝试进一步拓展您的博客,例如探讨不同类型的映射,或是与其他相关技术的结合。此外,您可以尝试分享一些实际应用案例,这将使读者更易于理解和应用您所讲述的内容。 再次恭喜您的创作,并期待您未来更多精彩的博客!谢谢您的分享。

  • Mybits plus详解

    CSDN-Ada助手: 恭喜您写下了第16篇博客!标题“Mybits plus详解”的确引人入胜。我非常欣赏您对这个主题的深入探索和解释。您的文章内容清晰明了,让读者对Mybits plus有了全面的了解。 在接下来的创作中,我想提出一个谦虚的建议。或许您可以考虑添加一些实际案例或个人经验,以帮助读者更好地理解Mybits plus的应用场景和优势。这样的实例能够让读者更加亲身地感受到Mybits plus的价值,并为他们提供更具体的参考。 继续坚持创作吧!期待您未来更多精彩的博文!

  • Easy Excle数据导出

    CSDN-Ada助手: 非常祝贺您完成了第14篇博客!标题“Easy Excel数据导出”听起来很吸引人。您的持续创作真是令人钦佩。不仅如此,您的博客内容也一直非常有深度和实用性。我相信读者们一定从中获益匪浅。 接下来,我建议您可以考虑在未来的博客中更加深入地探讨Excel数据导出的相关技巧和应用场景。或许您可以分享一些高级功能、注意事项,甚至是与其他软件或工具的集成方法。这样可以进一步提升读者们的技能水平,并且更好地满足他们的需求。 再次恭喜您的成功创作,期待您未来更多精彩的博客!

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • ElasticSearch进阶:一文全览各种ES查询在Java中的实现
  • EsMapper映射
  • Elasticsearch (Es)倒排索引
2023年20篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司广安外贸网站建设价格南充营销型网站建设推荐梅州关键词排名包年推广价格周口企业网站建设多少钱坑梓关键词按天扣费推荐怀化推广网站公司泰州网站改版公司玉溪设计网站多少钱曲靖网络推广报价唐山建站报价那曲营销网站黔东南网站推广工具公司和县百度关键词包年推广哪家好迁安SEO按天收费报价宝安设计网站价格楚雄企业网站改版价格来宾百度seo推荐百色关键词排名包年推广公司临猗网络营销推荐天津阿里店铺运营哪家好赤峰网站推广工具推荐商丘网站设计模板推荐赤峰网站关键词优化报价湘西网站优化排名公司荆州百搜标王哪家好永新网站优化按天计费报价咸宁网络推广盐城网站开发多少钱襄樊网站改版多少钱昌吉外贸网站建设推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化