MongoDB分片集群容灾方案

MongoDB分片集群容灾方案

  • 1. 集群同步工具介绍
    • 1.1 第三方数据同步工具mongoshake
    • 1.2 官方同步工具mongosync
  • 2. 工具对比
    • 2.1 数据一致性
    • 2.2 稳定性和可靠性
    • 2.3 维护成本
  • 3. 总结

1. 集群同步工具介绍

最近客户咨询MongoDB分片集群市面上主流的容灾方案,所以抽空整理了这篇文章。

1.1 第三方数据同步工具mongoshake

第三方的数据同步工具采用双集群同步的方式来打造 MongoDB 容灾系统,
MongoShake 是阿里云以 golang 语言编写的通用平台型服务工具,它通过读取 MongoDB的 Oplog 操作日志来复制 MongoDB 的数据以实现特定需求。
MongoShake 还提供了日志数据的订阅和消费功能,可通过 SDK、Kafka、MetaQ 等方式的灵活对接,适用于日志订阅、数据中心同步、Cache 异步淘汰等场景。

MongoShake 可以用于数据分析、灾备和多活等业务场景。
MongoShake 是一个基于MongoDB 的跨数据中心的数据复制平台,可以实现 MongoDB 数据库间的数据同步。
在容灾方面,MongoShake 可以通过阿里云自研的 MongoShake 开源工具实现 MongoDB 数据库间的数据同步,该功能可用于数据分析、灾备和多活等业务场景。

MongoShake 可以跨数据中心进行数据同步。MongoShake 从源库抓取 oplog 数据,然后发送到各个不同的 tunnel 通道。
源库支持:eplicaSet,Sharding,Mongod,
目的库支持:Mongos,Mongod。现有通道类型如下:

  1. Direct:直接写入目的 MongoDB
  2. RPC:通过 net/rpc 方式连接
  3. TCP:通过 tcp 方式连接
  4. File:通过文件方式对接
  5. Kafka:通过 Kafka 方式对接
  6. Mock:用于测试,不写入 tunnel,抛弃所有数据

消费者可以通过对接 tunnel 通道获取关注的数据,例如对接 Direct 通道直接写入目的MongoDB,或者对接 RPC 进行同步数据传输等。此外,用户还可以自己创建自己的 API进行灵活接入。

下面 2 张图给出了基本的架构和数据流:

在这里插入图片描述
在这里插入图片描述

1.2 官方同步工具mongosync

MongoDB 集群到集群同步(mongosync 实用程序)为您提供在相同或不同环境(Atlas、私有云、内部部署和边缘集群)中的 MongoDB 集群的连续、单向数据同步。
MongoDB 集群到集群同步允许您轻松地将数据迁移到云,启动开发/测试环境,创建专用分析环境,并支持审计和数据驻留要求。

mongosync 包含单不仅限于一些典型的限制条件:

  1. 版本限制,目前只支持 6.0.x 版本,最低版本要求为 6.0.8
  2. 源集群和目标集群必须具有相同的主要和次要版本,但可以有不同的补丁版本。
    例如 mongosync 支持从 MongoDB 6.0.8 源集群同步到 MongoDB 6.0.9 目标集群,因为这些是同一主要版本的补丁版本。
    mongosync 不支持从 MongoDB 6.0.9 源集群同步到 MongoDB 7.0.0 目标集群,因为它们有不同的主要版本。
  3. 在 mongosync 运行时,其他客户端不得写入目标集群,即无法再目标库集群中进行写操作,避免一致性问题 。
  4. 无法复制系统表 。
  5. 不支持加密数据 。
  6. 无法同步具有同一字段上定义的唯一索引和非唯一索引的集合 。
  7. 无法同步时间序列集合和固定生命周期的集合。

2. 工具对比

2.1 数据一致性

MongoShake 中,通过订阅消费,可以灵活对接以适应不同场景,每个 shard 都将对接到 MongoShake 并进行并行抓取。对于目标库来说,可以对接多个 mongos,不同的数据将会哈希后写入不同的 mongos 的方式同步两个集群,保证数据一致性。

mongosync 可以通过读取 mongos 对 mongos 点对点的方式,也可以通过分片对分片多对多的方式同步集群数据,理论上只要保证 oplog 的连续性就能保持数据一致性。

2.2 稳定性和可靠性

MongoShake 是阿里云自研的容灾和多活解决方案平台,可以跨数据中心进行数据同步,作为主流的集群同步方案之一。

mongosync 是 MongoDB 官方提供的集群同步解决方案,具有较高的稳定性和可靠性。

2.3 维护成本

MongoShake 和 mongosync 都需要监控和管理其运行状态,需要投入更多的成本来维护其正常运行。

3. 总结

类似 MongoShake 这样的第三方工具,在数据同步方面配置简单,同样也有着安全可靠的技术水准,但可能会由于开源技术的弊端,无法做到与官方数据库版本的完美兼容,存在着未知风险的可能。
而 MongoDB 官方的集群同步工具,能够较好地保证数据一致性、可靠性等问题,而且对于性能损耗较小,并且在意外发生时,能够获得官方技术手册的支持,自主可控,但受限于目前支持的版本较少。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/17942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓六种页面加载优化方案对比总结

根据工作经验,笔者提炼了六种页面加载优化方式,按照业务与非业务,将六种加载方式分为两类: 业务类 控制业务与UI的执行顺序、控制多业务之间的执行顺序 ①预加载:是指在进入页面之前,提前获得页面所需得数据…

直播预告|中服云第5代`工业物联产品线上发布会

我国作为全球制造业的领军者,拥有世界上最完整且健全的制造业产业链。但随着各企业规模的扩大和设备的增加,企业设备管理面临的难点和挑战也越来越多。 为了满足企业不断提高的设备管理需求,中服云即将推出全新的“设备全生命周期管理系统5.…

机器学习之聚类学习

聚类算法 概念 根据样本之间相似性,将样本划分到不同类别种,不同相似度计算方法,会得到不同聚类结果,常用相似度计算方法为:欧氏距离 目的是在没有先验知识情况下,自动发现数据集种内在结构和模式 无监督…

告别裸奔,聊聊主流消息队列的认证和鉴权!

大家好,我是君哥。 我们在使用消息队列时,经常关注的是消息队列收发消息的功能。但好多时候需要对客户端有一定的限制,比如只有持有令牌的客户端才能访问集权,不允许 Producer 发送消息到某一个 Topic,或者某一个 Top…

人脸识别——Webface-OCC遮挡人脸识别算法解析

1. 概述 自2019年被誉为人脸识别技术的元年,各地纷纷引入这项技术。然而,自2020年起,为了抵御冠状病毒(COVID-19)的全球传播,人们普遍开始佩戴口罩。众所周知,现有人脸识别模型在面对遮挡物&am…

Dalle2学习

Dalle2 mini有GitHub库并且有网页可以直接测试

网络之再谈体系结构

大家都知道的是网络的体系结构,现代软件常用的体系结构无非是TCP/IP协议栈,OSI因为实现复杂并且效率没有TCP/IP协议栈好,所以不用OSI,但是,最近在复习网络知识的时候,发现了一些奇怪的地方,那就…

C/C++连接MySQL

本章Gitee仓库地址:mysql连接基本操作 文章目录 1. mysql connect库2. mysql相关接口2.1 mysql_init()2.2 mysql_real_connect()2.3 mysql_query()2.4 mysql_store_result()2.41 mysql_num_rows2.42 mysql_num_fields2.43 mysql_fetch_row2.44 mysql_fetch_fields 2…

中国上市企业行业异质性数据分析

数据简介:企业行业异质性数据是指不同行业的企业在运营、管理、财务等方面的差异性数据。这些数据可以反映不同行业企业的特点、优势和劣势,以及行业间的异质性对企业经营和投资的影响。通过对企业行业异质性数据的分析,投资者可以更好地了解…

STM32系列-STM32介绍

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” STM32介绍 STM32介绍 ST:指的是意法半导体 M:指定微处理器 32:表示计算机处理器位数 ARM分成三个系列: Cortex-A&#xff1…

Python读取Excel表格文件并绘制多列数据的曲线图

本文介绍基于Python语言,读取Excel表格数据,并基于给定的行数范围内的指定列数据,绘制多条曲线图,并动态调整图片长度的方法。 首先,我们来明确一下本文的需求。现有一个.csv格式的Excel表格文件,其第一列为…

Sqoop的安装与测试

这里写目录标题 什么是Sqoop?Sqoop的安装与配置安装测试 什么是Sqoop? Sqoop就是hadoop和mysql的一个中间介质 , 作用就是可以将hadoop中的数据传到mysql中 , 或将mysql中的数据导入到hadoop中 Sqoop的安装与配置 安装 详细代码 //解压安装 [roothadoop soft]# tar -zxv…

【漏洞复现】用友NC registerServlet JNDI 远程代码执行漏洞(XVE-2024-10248)

0x01 产品简介 用友NC是 用友软件股份有限公司开发的一套企业级管理软件系统。它是一个基于互联网的多层应用系统,旨在为中大型企业提供全面、集成的管理解决方案。是一种商业级的企业资源规划云平台,为企业提供全面的管理解决方案,包括财务…

SwiftUI中EnvironmentObject的使用(多界面共享数据)

SwiftUI的EnvironmentObject是一个强大的工具,它允许你在多个视图之间共享数据(使用一个可观察对象)。当你有一个复杂的视图层次结构,并且需要在没有直接连接的视图之间共享相同的可观察对象时,它特别有用。 我们之前传递数据主要是通过init…

SOLIDWORKS正版一年多少钱 2024版报价

SOLIDWORKS软件作为一款优秀的三维设计工具,以其强大的功能和优质的设计工具,为设计师们提供了前所未有的便利。SOLIDWORKS三维设计软件是一款多科学集成软件,它在产品开发和制造方面发挥着重要作用。 作为整个SOLIDWORKS产品开发解决方案套件…

SQL使用函数给多个分表添加同一字段

数据库中分表时,往往需要向多个分表中添加同一个字段,可以定义一个函数,每次调用这个函数向多个份表中添加同意字段。 1、创建函数示例: 在PostgreSQL中创建一个简单的函数 以下是一个在PostgreSQL中创建函数的简单示例&#x…

SEO之核心关键词(二)

初创企业或者需要建站的朋友看以下两篇文章,谢谢支持: 我给不会敲代码又想搭建网站的人建议新手上云 (接上一篇。。。。) 4、查询搜索次数 经过自己及朋友、同事的头脑风暴和检查竞争对手网站之后,再到Google 关键词…

用天工AI写文章,节约了8个人的成本

关注卢松松,会经常给你分享一些我的经验和观点。 当下AI工具最大的问题是什么? 是写的文章没有灵魂、没有感情、像机器人! 生成的文章官话连篇,人们一眼就看出是AI写的,这种文章怎么能给客户交差呢?自己这关都过不去,是吧? …

33 mid 55. 跳跃游戏

贪心算法&#xff1a; class Solution {public boolean canJump(int[] nums) {int leftBorder 0;for (int i 0; i <nums.length; i) {if(i<leftBorder){leftBorderMath.max(leftBorder,inums[i]);}if(leftBorder>nums.length-1){return true;}}return false;} }

欢乐钓鱼大师攻略大全,游戏自动辅助,钓鱼大全!

欢迎来到《欢乐钓鱼大师》的攻略大全&#xff01;本文将为你详细介绍游戏中的各类玩法、技巧和注意事项&#xff0c;帮助你快速掌握游戏精髓&#xff0c;成为一名真正的钓鱼大师。攻略内容包括新手鱼竿选择、锦标赛攻略、实用技巧、藏宝图玩法、箱子开法等多个方面。让我们一起…