本文分享自天翼云开发者社区《一种Mysql和Mongodb数据同步到Elasticsearch的实现办法和系统》,作者:l****n

核心流程如下:

核心逻辑说明:

MySQL Binlog解析:

首先,从MySQL的二进制日志(Binlog)中解析出表名。这一步骤非常关键,因为我们只关注特定表的数据变更。

进一步,我们检查Binlog中的操作类型,如INSERT、UPDATE和DELETE,以确定是否是表数据的变动操作。这是因为我们只需要捕获数据的变更,而不关心查询操作。

如果操作是INSERT或DELETE,我们只需要关注受影响的数据行。对于UPDATE操作,我们需要记录新旧值的变化。

内存中数据组装:

从解析过的Binlog数据中,我们构建一个内存数据结构,通常是一个数据对象,其中包括表名、字段名、新旧值等信息。这允许我们在内存中轻松管理和处理数据。

数据序列化:

接下来,我们将内存中的数据对象序列化为特定的格式,通常为JSON或XML。这是为了将数据转化为一种可传输的结构,其中包含了表名、字段名和相应的新旧值。序列化的过程使数据适合通过网络传输。

数据传输到消息队列:

完成序列化后,数据通过TCP协议发送到消息队列,通常是Apache Kafka。消息队列用于持久性存储和传递数据,以确保数据不会丢失。

数据在消息队列中等待被消费者处理,这可以是其他系统、应用程序或服务,根据需要对数据进行进一步的分析或存储。

MongoDB Oplog解析:

MongoDB的日志解析过程类似于MySQL,但我们使用的是MongoDB的操作日志(Oplog)来捕获数据变更。

同样,我们从Oplog中解析出表名,确定操作类型(INSERT、UPDATE、DELETE),并提取新旧值。

数据消费和存储:

消费者通过TCP协议从Kafka队列中拉取数据。消费者可以是各种类型的应用程序或服务,例如数据仓库、实时监控系统等。

数据可以通过HTTP协议将其写入Elasticsearch,以进行搜索、分析和可视化。Elasticsearch是一个强大的搜索引擎和分析工具,适用于处理大量数据。

以上流程描述了如何从MySQL和MongoDB中的日志解析数据,将其序列化为可传输的格式,并通过消息队列传递到其他系统或存储库中,以便进行后续处理、分析和查询。这种数据管道允许实时捕获和利用数据库中的变更,以满足各种用例和需求。

一种Mysql和Mongodb数据同步到Elasticsearch的实现办法和系统的更多相关文章

  1. 几篇关于MySQL数据同步到Elasticsearch的文章---第一篇:Debezium实现Mysql到Elasticsearch高效实时同步

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484358&idx=1&sn=3a78347 ...

  2. MySQL Replication(数据同步技术)

                          MySQL Replication(数据同步技术) A 到 B 完成主从复制,意思是数据同步技术 从读取主的二进制日志文件,按照日志中记录对从库进行同样的操 ...

  3. MongoDB副本集配置系列十一:MongoDB 数据同步原理和自动故障转移的原理

    1:数据同步的原理: 当Primary节点完成数据操作后,Secondary会做出一系列的动作保证数据的同步: 1:检查自己local库的oplog.rs集合找出最近的时间戳. 2:检查Primary ...

  4. Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。

    Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步. ogg要实现的功能: 同步可以细化到单个表,满足特定的where条件rows同步,称号column同步. ...

  5. HBase数据同步到ElasticSearch的方案

    ElasticSearch的River机制 ElasticSearch自身提供了一个River机制,用于同步数据. 这里能够找到官方眼下推荐的River: http://www.elasticsear ...

  6. SQL数据同步到ElasticSearch(三)- 使用Logstash+LastModifyTime同步数据

    在系列开篇,我提到了四种将SQL SERVER数据同步到ES中的方案,本文将采用最简单的一种方案,即使用LastModifyTime来追踪DB中在最近一段时间发生了变更的数据. 安装Java 安装部分 ...

  7. mysql 集群 数据同步

    mysql集群配置在网站负载均衡中是必不可少的: 首先说下我个人准备的负载均衡方式: 1.通过nginx方向代理来将服务器压力分散到各个服务器上: 2.每个服务器中代码逻辑一样: 3.通过使用redi ...

  8. Mysql和Redis数据同步策略

    为什么对缓存只删除不更新 不更新缓存是防止并发更新导致的数据不一致. 所以为了降低数据不一致的概率,不应该更新缓存,而是直接将其删除, 然后等待下次发生cache miss时再把数据库中的数据同步到缓 ...

  9. canal+mysql+kafka实时数据同步安装、配置

    canal+mysql+kafka安装配置 概述 简介 canal译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费. 基于日志增量订阅和消费的业务包括 数 ...

  10. 几篇关于MySQL数据同步到Elasticsearch的文章---第三篇:logstash_output_kafka:Mysql同步Kafka深入详解

    文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484411&idx=1&sn=1f5a371 ...

随机推荐

  1. 曲线救国--访问dockerhub仓库

    前言 由于dockerhub也被墙了,导致基础镜像没法拉取.后面解封了,又被墙了... 在这次被墙之前,访问国外的速度也是堪忧,甚至访问不了k8s的镜像,基于此,分享一下笔者经验 使用Daocloud ...

  2. viper读取配置文件

    //方法一 func readConfig1(path, filename, filetype string) interface{} { viper.AddConfigPath(path) vipe ...

  3. equals与”==”的区别

    本文由 ImportNew - 刘志军 翻译自 Javarevisited.如需转载本文,请先参见文章末尾处的转载要求. equals()和"=="操作用于对象的比较,检查俩对象的 ...

  4. Django之项目部署

    1.线上部署一般会使用https的方式进行部署,本身django框架是不支持的,所以需要... 1)安装扩展 pip install django-extensions django-werkzeug ...

  5. Java日志手机号脱敏工具类

    背景 在开发过程中,很容易将用户敏感信息,例如手机号码.身份证等,打印在日志平台.为了保护用户数据,又不影响日志的打印,需要将日志中的敏感信息进行脱敏. 效果 没看明白,强烈建议 pull项目,执行一 ...

  6. uniapp 使用pinpa 持续化更新

    安装依赖 npm i pinia npm i pinia-plugin-persistedstate 新建 index.ts import { createPinia } from 'pinia' i ...

  7. 【分块】LibreOJ 6279 数列分块入门3

    题目 https://loj.ac/p/6279 题解 将 \(n\) 个元素的数组 \(a\) 按块长 \(\sqrt{n}\) 进行分块处理.为每个块设置一个懒添加标记 \(add[i]\),代表 ...

  8. 中电金信成为开源风险评估与治理技术实验室软件物料清单(SBOM)工作组成员单位

    近期,中电金信成功加入国家工业信息安全发展研究中心开源风险评估与治理技术实验室软件物料清单(SBOM)工作组,成为其成员单位,并同步加入"筑链计划"之中. SBOM是Softwar ...

  9. Nginx make报错处理

    https://blog.csdn.net/zhengdong12345/article/details/130669711 make报错:fatal error:sys/sysctl.h:No su ...

  10. Qt/C++监控推流设备推流/延迟极低/实时性极高/rtsp/rtmp推流/hls/flv/webrtc拉流/调整分辨率降低带宽

    一.前言 算下来这个推流的项目作品写了有四年多了,最初第一个版本只有文件点播的功能,用的纯QTcpSocket通信实现,属于比较简单的功能.由于文件点播只支持文件形式的推流,不支持网络流或者本地设备采 ...