MySQL与ES数据同步的四种方案及实践演示

文章目录

一、同步双写

也就是同步调用,这是一种最为简单的方式,在将数据写到mysql时,同时将数据写到ES。

优点

1.业务逻辑简单

2实时性高

缺点

1.硬编码,有需要写入mysql的地方都需要添加写入ES的代码

2.业务强耦合

3.存在双写失败丢数据风险

4.性能较差:本来mysql的性能不是很高,再加一个ES,系统的性能必然会下降。

双写失败风险

ES系统不可用;

程序和ES之间的网络故障;

程序重启,导致系统来不及写入ES等。

针对这种情况,有数据强一致性要求的,就必须双写放到事务中来处理,而一旦用上事物,则性能下降更加明显。

项目演示

请移步:MySQL与ES数据同步之同步调用

二、异步双写(MQ方式)

针对多数据源写入的场景,可以借助MQ实现异步的多源写入,这种情况下各个源的写入逻辑互不干扰,不会由于单个数据源写入异常或缓慢影响其他数据源的写入,虽然整体写入的吞吐量增大了,但是由于MQ消费是异步消费,所以不适合实时业务场景。

优点

性能高

不易出现数据丢失问题,主要基于MQ消息的消费保障机制,比如ES宕机或者写入失败,还能重新消费MQ消息。

多源写入之间相互隔离,便于扩展更多的数据源写入

缺点

硬编码问题,接入新的数据源需要实现新的消费者代码

系统复杂度增加:引入了消息中间件

可能出现延时问题:MQ是异步消费模型,用户写入的数据不一定可以马上看到,造成延时。

项目演示

请移步:MySQL与ES数据同步之异步调用

三、基于Datax同步

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。

核心组件

Reader:数据采集模块,负责从源采集数据

Writer:数据写入模块,负责写入目标库

Framework:数据传输通道,负责处理数据缓冲等

以上只需要重写Reader与Writer插件,即可实现新数据源支持

从一个JOB来理解datax的核心模块组件:

datax完成单个数据同步的作业,称为Job,job会负责数据清理、任务切分等工作;

任务启动后,Job会根据不同源的切分策略,切分成多个Task并发执行,Task就是执行作业的最小单元

切分完成后,根据Scheduler模块,将Task组合成TaskGroup,每个group负责一定的并发和分配Task

架构图

支持的数据源及操作



项目演示

请移步:DataX实现Mysql与ElasticSearch(ES)数据同步

四、基于Binlog实时同步

实现原理

具体步骤如下:

读取mysql的binlog日志,获取指定表的日志信息;

将读取的信息转为MQ;

编写一个MQ消费程序;

不断消费MQ,每消费完一条消息,将消息写入到ES中。

优点

没有代码侵入、没有硬编码;

原有系统不需要任何变化,没有感知;

性能高;

业务解耦,不需要关注原来系统的业务逻辑。

缺点

构建Binlog系统复杂;

如果采用MQ消费解析的binlog信息,也会像方案二一样存在MQ延时的风险。

业界目前较为流行的方案:使用canal监听binlog同步数据到es

项目演示

请移步:
Docker部署Canal监听MySQL binlog
SpringBoot整合Canal实现MySQL与ES数据同步


结束~

相关推荐
@LetsTGBot搜索引擎机器人21 小时前
2025 Telegram 最新免费社工库机器人(LetsTG可[特殊字符])搭建指南(含 Python 脚本)
数据库·搜索引擎·机器人·开源·全文检索·facebook·twitter
l***217821 小时前
SpringBoot Maven快速上手
spring boot·后端·maven
好大哥呀1 天前
Java Web的学习路径
java·前端·学习
f***14771 天前
SpringBoot实战:高效实现API限流策略
java·spring boot·后端
计算机毕设VX:Fegn08951 天前
计算机毕业设计|基于springboot + vue动物园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
on the way 1231 天前
day06-SpringDI 依赖注入
java·spring
潇潇云起1 天前
【elastic-start-local 本地docker 30天后需要重新试用处理】
elasticsearch
冉冰学姐1 天前
SSM校园排球联赛管理系统y513u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架应用·开题报告、
C***11501 天前
Spring aop 五种通知类型
java·前端·spring