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,一经查实,立即删除!

相关文章

Java | String类型使用注意事项

String不支持下标访问! String s1"wgh";中,创建了一个String对象(此语句等效为String s1new String("wgh"))。直接用字符串字面量构造的字符串在常量池里;用new String方法构造的字符串在堆里。 …

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

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

Conda入门教程

Conda是一个强大的开源包和环境管理系统,专为Python设计,但也可以用于其他语言。以下是Conda的入门教程,帮助你开始使用Conda进行Python环境和包的管理。 一、安装Conda 访问Conda的官网(https://conda.io/projects/conda/en/la…

操作系统 - 计算机系统概述

事前提一嘴 室友考完研了,下一年就是我了,真不想和他们一起考,压力太大了,这里分享一点笔记吧 采用王道考研的书以及视频,去掉了一些书上的废话,加上了视频中的重点,最后总结出来的 如有侵权&a…

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

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

SOA 与“微服务”的区别

SOA(面向服务的架构)与微服务之间的区别可以从多个维度进行分析。以下是一些主要的区别点: 服务粒度: SOA:服务粒度相对较粗。在SOA中,服务可能涵盖多个功能或业务领域,例如,在一个大…

机器学习之聚类学习

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

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

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

朗之万动力学(Langevin dynamics)

朗之万动力学(Langevin dynamics) 是一种模拟经典粒子运动的方法,常用于物理、化学和材料科学等领域。它是由法国物理学家保罗朗之万(Paul Langevin)于1908年提出的,用于描述布朗运动,即微小粒…

四、通信和网络安全—局域网|广域网|远程连接和攻击技术(CISSP)

目录 1.局域网和广域网 1.1 WAN技术总结 2.远程连接—无线技术 2.1 VPN 2.2 隧道协议总结

人脸识别——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表格文件,其第一列为…

爬山算法详解

爬山算法详解 背景 爬山算法(Hill Climbing Algorithm)是一种基于启发式搜索的优化算法,用于在搜索空间中寻找局部最优解。该算法的基本思想是从一个初始解出发,通过不断移动到邻域内更优的解来寻找最优解,直至无法找…

Flutter 中的 Flow 小部件:全面指南

Flutter 中的 Flow 小部件:全面指南 Flutter 的 Flow 是一个功能强大的布局小部件,它允许开发者在父组件的任意位置放置子组件。Flow 可以通过使用 FlowDelegate 完全自定义子组件的布局,这为创建复杂的自定义布局提供了极大的灵活性。本文将…

Sqoop的安装与测试

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