首页 > 数据库 >MYSQL 同步到ES 如何设计架构保持一致性

MYSQL 同步到ES 如何设计架构保持一致性

时间:2024-03-21 16:15:07浏览次数:27  
标签:canal 同步 拉取 消息 MYSQL 一致性 ES 客户端

简单使用某个组件很容易,但是一旦要搬到生产上就要考虑各种各样的异常,保证你方案的可靠性,可恢复性就是我们需要思考的问题。今天来聊聊我们部门在 MYSQL 同步到ES的方案设计。

在面对复杂条件查询时,MYSQL往往显得力不从心,一般公司的做法会通过将mysql中的数据同步到ES,之后的查询就通过ES进行查询,ES在面对多条件复杂查询时,能较快的查询出结果集。

在MYSQL数据 到ES中的数据同步 方案设计上,就有多种选择,

1,最简单的便是直接在业务代码中对数据库进行修改,插入,删除时,同步修改ES中的数据。 但这种方案也是最不可靠的一种设计。在写入MYSQL后,业务服务宕机了,ES数据就会丢失。如果写入ES失败,重试逻辑将会嵌套在业务代码中,业务代码复杂性增加了,并且如果一直失败,要一直重试吗?

所以,对于这种方案,直接pass掉了。

2,第二种同步方案则是业界用的比较多的同步方案,通过binlog进行同步,目前业界已经有比较成熟的模拟mysql从库,拉取binlog的组件,例如阿里开源的canal。整个同步架构如下所示,canal组件充当mysql从库的角色,将mysql的binlog拉取下来,由客户端从canal拉取消息进行消费,再由客户端主动插入或者更新ES中的数据。

标签:canal,同步,拉取,消息,MYSQL,一致性,ES,客户端
From: https://www.cnblogs.com/hobbybear/p/18087591

相关文章

  • Ubuntu 设置mysql 自动备份
    1、创建备份文件以及备份脚本所在的目录在根目录下面设置cd/mkdirbackup2、修改mysql备份配置文件这种相比于在将用户名和密码写在bash脚本里面,会更加安全一些。sudovim/etc/mysql/conf.d/mysqldump.cnfmysqldump.cnf文件添加以下内容:host=127.0.0.1user=****#mysq......
  • TypeScript之Symbol和迭代器
    Symbols介绍自ECMAScript2015起,symbol成为了一种新的原生类型,就像number和string一样。symbol类型的值是通过Symbol构造函数创建的。letsym1=Symbol();letsym2=Symbol("key");//可选的字符串keySymbols是不可改变且唯一的。letsym2=Symbol("key");let......
  • mysql的my.cnf解释说明
    这个关乎配置文件,需要了解后,对数据库管理有很大的帮助。#***clientoptions相关选项***##以下选项会被MySQL客户端应用读取。注意只有MySQL附带的客户端应用程序保证可以读取这段内容。如果你想你自己的MySQL应用程序获取这些值。需要在MySQL客户端库初始化的时候指定这些选......
  • m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
    1.算法仿真效果本系统进行Vivado2019.2平台的开发,测试结果如下所示:   2.算法涉及理论知识概要       电子钟是现代生活中常见的计时工具,其准确性和功能性不断提高。基于FPGA的电子钟设计不仅具有灵活的可定制性,还能通过集成其他功能(如闹钟)来增强实用性。Verilog......
  • mysql语句优化心得
    一、常用SQL优化处理1.1like查询优化方案like模糊查询形如'%AAA%'和'%AAA'将不会使用索引,但是业务上不可避免可能又需要使用到这种形式查询方式:优化方案一:使用覆盖索引,即查询出的列只是用索引就可以获取,而无须查询表记录,这样也走了索引;优化方案二:使用locate函数或者positio......
  • 【大语言视觉助手+LLaVA1.5】23.10.LLaVA-1.5改善后视觉语言大模型: Improved Baselin
    LLaVa家族官方资源汇总:项目主页||https://huggingface.co/liuhaotian23.04.LLaVA1.0论文:LargeLanguageandVisionAssistant(VisualInstructionTuning)23.06LLaVA-Med(医学图片视觉助手):TrainingaLargeLanguage-and-VisionAssistantforBiomedicineinOne......
  • react router v6报错 useRoutes() may be used only in the context of a <Router> comp
    在使用reactrouterv6版本的时候,按照之前的方法使用src/main.tsx是这样的,几乎不动import*asReactfrom"react";import*asReactDOMfrom"react-dom/client";import"~/assets/index.css";importAppfrom"~/App.tsx";ReactDOM.createRoot(......
  • ES9200端口漏洞添加授权:es集群添加用户安全认证功能(Set up basic security for the E
    hR0wZPaaSHmi-slI0GAVMw文章目录引言I设置访问密码1.1每个集群节点都需要编辑elasticsearch.yml文件1.2生成elastic-certificates.p121.3重启ES集群1.4创建Elasticsearch集群密码1.5访问验证1.6kibana设置elasticsearch帐号密码1.7logstash......
  • ESP32上传失败,ESP32: No serial data received,Failed uploading: uploading error: ex
    ESP32:Noserialdatareceived解决方案给ESP32烧录的时候,报错Afatalerroroccurred:FailedtoconnecttoESP32:Noserialdatareceived.Fortroubleshootingstepsvisit:https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.htmlFa......
  • Educational Codeforces Round 163 (Rated for Div. 2)
    Preface这周很奇怪,连着计网、数据库、组合数学的课都莫名其妙不上了,突然变得很空闲了的说正好有空赶紧补补题,不然接下来有很多造题/比赛的任务搁置着就忘记了A.SpecialCharacters签到,\(n\)是偶数才有解,构造的话注意到一个AAB可以产生\(2\)的贡献,把\(\frac{n}{2}\)个AAB拼起......