MongoDB分片集群容灾方案

news2024/11/17 12:36:17

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.coloradmin.cn/o/1712426.html

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

相关文章

使用vanna实现Text2SQL

这节一起用vanna来实现自然语言转SQL,之前的大模型一直停留在问答阶段,答案基本都是大模型提供的,至多是加点本地知识库,tet,pdf等文档,丰富大模型的内容,但是想要大模型与一些管理系统对接还是…

大白话70个你必须知道的AI重要概念

本文按英文起首字母顺序,整理了70个常用的生成式AI领域常用概念,试图以大白话进行诠释,如果你不求甚解、但也求略解的话,欢迎收藏。第一部分从A到I,第二部分从L到P,第三部分从Q到Z。 A 1 Agents: 代理人。…

如何利用短链接巧妙避开多渠道推广大坑

在当下,推广渠道多样化对企业来说,那可是机遇与大坑并存!多渠道推广的重要性大家都懂,但为啥说有坑呢?一旦企业开启多渠道推广模式,就得面对大量人力物力的投入,可要是区分不了各个渠道的推广效…

[ARM-2D 专题] 1.开始:基本工程搭建,编译和开发环境配置问题解决

要开始使用ARM-2D,前期两个准备工作需要完成: 一块mcu内核为cortex-M的板子,带显示屏(彩色TFT屏,分辨率建议320x240或以上,带TP更佳)。基于这个板子可以正常运行的keil MDK的工程。 好了&#…

面试必备:应对 “为什么离职” 的万能回答

使用PC端的朋友,请将页面缩小到最小比例,阅读最佳! 面试官问到你为什么从上一家公司离职时,你会怎么回答?这个问题我觉得很有意思,也很有必要去探讨一下。 很多专业人士都会建议你,最好不要直接…

怎么看自己电脑的配置?提升电脑的使用效率

了解自己电脑的配置是非常重要的,它可以帮助您了解电脑的性能水平,从而更好地选择适合的软件和游戏,或者进行系统升级和维护。然而,许多用户可能不知道怎么看自己电脑的配置信息。本文将介绍三种简单的方法,帮助您轻松…

TPK系列——2W 3KVDC 隔离单,双输出 DC/DC 电源模块

TPK系列是一款2W并且有高隔离电压要求的理想产品,工业级温度范围–40℃到 105℃,在此温度范围内都可以稳定输出2W,并且效率非常高,高达89%,同时负载调整率非常低,对于有输出电压精度有要求的地方特别合适&a…

Netty SSL双向验证

Netty SSL双向验证 1. 环境说明2. 生成证书2.1. 创建根证书 密钥证书2.2. 生成请求证书密钥2.3. 生成csr请求证书2.4. ca证书对server.csr、client.csr签发生成x509证书2.5. 请求证书PKCS#8编码2.6. 输出文件 3. Java代码3.1. Server端3.2. Client端3.3. 证书存放 4. 运行效果4…

走进数字艺术的世界:一种创新的艺术表达方式

进入数字时代,计算机将我们生活的方方面面都进行了转化。当然艺术领域也不例外。随着数字技术和计算机程序的发展和普及,“数字艺术”的概念应试而生。那么,所谓的数字艺术到底是什么呢?数字艺术的作用是什么?新手如何…

Java基础:异常(三)

Java基础:异常(三) 文章目录 Java基础:异常(三)1. Java异常体系1.1 错误的分类1.2 异常的分类 2. 异常的捕获与处理2.1 try-catch2.2 finally 3. 异常的抛出4. 自定义异常 1. Java异常体系 Java的异常体系是…

醒图及国际版 v9.9.9/v3.9.0 解锁会员(让照片栩栩如生的神奇应用)

介绍 醒图App是一款专业的照片编辑工具,旨在帮助用户高效地处理和优化照片,使其更加引人注目。这款应用程序配备了多样化的功能,包括图像增强、滤镜应用以及色彩调整等,以满足各种编辑需求。其设计了一个直观的用户界面&#xff…

C# yolov8 TensorRT +ByteTrack Demo

C# yolov8 TensorRT ByteTrack Demo 目录 效果 说明 项目 代码 Form2.cs YoloV8.cs ByteTracker.cs 下载 参考 效果 说明 环境 NVIDIA GeForce RTX 4060 Laptop GPU cuda12.1cudnn 8.8.1TensorRT-8.6.1.6 版本和我不一致的需要重新编译TensorRtExtern.dll&…

保姆教程系列:小白也能看懂的 Linux 挂载磁盘实操

!!!是的没错,胖友们,保姆教程系列又更新了!!! 文章目录 前言简介一、磁盘分区二、文件系统三、实际操作1. 使用lsblk命令查看新加入的磁盘信息2. 使用fdisk或者cfdisk分区新磁盘&am…

工业制造企业为什么要进行数字化转型

人人都在谈数字化转型,政府谈数字化策略方针,企业谈数字化转型方案,员工谈数字化提效工具。互联网企业在谈,工业企业也在谈。 在这种大趋势下,作为一个从事TOB行业十年的老兵,今天就来给大家讲讲&#xff…

【RLHF个人笔记】RLHF:Reinforcement Learning from Human Feedback具体过程

【RLHF个人笔记】RLHF:Reinforcement Learning from Human Feedback具体过程 RLHF训练的三个步骤步骤1:收集数据与有监督训练策略步骤2:收集数据训练奖励模型步骤3:结合奖励模型利用强化学习算法如PPO算法来优化策略 参考内容 RLHF训练的三个…

236. 二叉树的最近公共祖先(C++)

文章目录 前言一、题目介绍二、解决方案三、优化总结 前言 在本篇文章中我们将会讲解二叉树中极为经典的题目236. 二叉树的最近公共祖先 一、题目介绍 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的…

BLE蓝牙模块在虚拟车钥匙上的运用—开启无钥匙驾驶新时代

随着科技的不断发展,人们对汽车的智能化需求也日益增长。在这个背景下,BLE蓝牙模块在虚拟车钥匙上的运用应运而生,为消费者带来更加便捷、智能的出行体验。本文将从以下几个方面阐述BLE蓝牙模块在虚拟车钥匙上的应用。   一、什么是BLE蓝牙…

精酿啤酒:品质与口感在啤酒行业竞争中的竞争优势

在啤酒行业中,竞争激烈,品牌众多。要想在竞争中脱颖而出,需要具备与众不同的竞争优势。对于Fendi club啤酒而言,其卓着的品质和与众不同的口感成为了其在竞争中取胜的关键。 品质是啤酒行业竞争中的核心要素。Fendi club啤酒在原料…

Redis中的数据结构与内部编码

本篇文章主要是对 Redis 常见的数据结构进行讲解,同时还对其所对应的不同的内部编码进行讲解。希望本篇文章会对你有所帮助。 文章目录 一、五大数据结构 二、数据结构对应的编码方式 String hash list set zset 🙋‍♂️ 作者:Ggggggtm &…

node.js(express)+MongoDB快速搭建后端---新手教程

前言: Node.js是一个基于 Chrome V8引擎的JavaScript运行环境,是对于前端工程师来说学习成本最小的后端实现方法,本篇文章总结如何从0-1写一个后端的登录接口 一、检查node环境 先检查自己的node是否安装 一般来说前端工程师的电脑环境肯定…