Mysql数据实时同步到Es上

打印 上一主题 下一主题

主题 867|帖子 867|积分 2611

同步方案 

① 同步双写

同步双写实一种数据同步策略,它指的是在主数据库(如mysql) 上举行数据修改操作,同时将这些修改同步写入到ES 中,这种策略旨在确保两个数据库之间的数据一致性,并且优化系统的读写性能。

目标

    同步双写是指在举行数据写入操作的时候,同时向两个或者多个数据库写入类似的数据,在mysql 与Ed 的同步场景中,其重要目的是将mysql 的业务数据实时同步到es 中,以便利用ES 的高效查询能力来应对复杂的查询需求,同时减轻mysql的查询压力。
实现方式

  直接同步

在业务代码中,每次对mysql 数据库举行写入操作的时候,同时实行对ES的写入操作,这种方式简单直接,但可能增加代码的复杂性和出错的风险。
利用中间件

 利用消息队列(如 kafka) 、数据变更捕获工具(如 Debezium) 或者ETL 工具(如Logstash) 等中间件来捕获Mysql 的数据变更事件,并将这些事件转发到ES 举行同步。这种方式可以解耦业务代码与数据同步逻辑,提高系统的可扩展性和可维护性。
触发器与存储过程

 在mysql 中设置触发器或者编写存储过程,在数据发生变更的时候自动触发ES的写入操作,这种方式可以减少业务代码的侵入性,但可能会增加Mysql的负担并影响性能。
优缺点

  优点:

① 业务逻辑编写简单
② 业务查询实时性高
缺点

① 业务硬编码,有必要写入mysql 的地方都必要添加写入Es 的代码
② 业务代码强耦合度很高
③ 存在双写失败丢数据的风险。

应用场景

  同步双写策略适用于对数据一致性要求较高且必要优化查询性能非场景,比方,在电商系统中,可以将商品信息、订单数据等存储在mysql 中,同时将这些数据同步到ES 中用于以支持复杂的搜索和分析需求。

② Logstash 同步

Logstash 是一个开源的服务端数据处理管道,可以同时从多个来源采集数据,转化数据,然后将数据发送到您指定的存储库中,在实现mysql 数据库和Elasticsearch 之间的数据同步是,Logstash 可以发布重要作用
 优缺点


优点:

 ① 不改变原有代码,没有侵入性、没有硬编码。
② 没有业务强耦合,不改变原来程序的性能。
缺点

① 时效性差,由于是接纳定时器根据固定频率查询表来同步数据,尽管将同步周期设置到秒级,也照旧会存在一定时间的耽误。
② 对数据库有一定的轮询压力,一种改进方法是将轮询放到压力不大的从库上。
③ 无法实现同步删除,必要在Elasticsearch 中实行相关命令手动删除
④ Elasticsearch 中的_id 字段必须与Mysql 中的id 字段类似。

canal 数据同步(最优)

使用canal模仿成Mysql 的slave, 实时接收Mysql 的增量数据binlog, 然后通过Restful API 将数据写入到阿里云ES 实例或者Es Serverless 应用中,适用于对数据同步的实时性要求较高的场景。

同步原理:

  canal 原理抢救室伪装成Mysql 的从节点,从而订阅master 的节点binlog 日记,通过订阅binlog 方式实现数据实时同步,在不影响源数据库的情况下,同步耽误可降低至毫秒级别。

同步流程

① Canal 服务端向mysql 的master 节点传输dump 协议。
② mysql 的master 节点接收到dump 哀求后推送binlog 日记给canal服务端,解析binlog对象(原始为byte 流) 转成json 格式。
③ canal 客户端通过TCP 协议或者MQ 形式监听Canal 服务端,同步数据到ES





 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

泉缘泉

金牌会员
这个人很懒什么都没写!

标签云

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