【mongo 系列】mongodb 学习八,MongoDB 主从集群 1

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 说到集群,生产环境中很多服务都会进行集群部署,那么 mongodb 的集群都有哪些知识点需要掌握呢

说到集群,生产环境中很多服务都会进行集群部署,那么 mongodb 的集群都有哪些知识点需要掌握呢

mongodb 集群 分为 主从集群 和分片集群 ,先从主从集群开始

为什么需要集群?

为了保障服务的高可用

我们可以知道,如果我们部署单点 mongodb 服务,那么是非常容易出现单点故障的,若这台 mongodb 服务不可用了,那岂不是整个业务都要 over 了?

当我们部署多个 mongodb 的时候,有相互关系的,这叫集群,根据集群是否有状态分为:

  • 有状态集群

指集群里面的服务都需要存放数据

image.png

无状态的集群,服务自身不存储数据,集群中的服务任意一个被客户端访问得到的结果都是一样的,与实际访问到哪一个服务没有关系

因为这些服务不存储数据,数据都是去找一个公共的组件获取

  • 无状态集群

指集群里面的服务不需要存放数据

image.png

有状态的集群,即自身是存储数据的,那么在集群中,就会出现数据一致性的问题

我们来看看 CAP 原则

指的是在一个分布式系统中的三个特性

  • C (Consistency)

数据一致性

  • A (Availability)

可用性

  • P (Partition tolerance)

分区容忍性

CAP 原则中,最多只能同时实现两点,不可能三者兼顾 , 所有集群都需要考虑上三个特性

主从集群

主从集群是由一组 mongod 维护相同数据集的实例,一个副本集包含如下节点:

  • 多个数据承载节点
  • 一个仲裁器节点,这个仲裁器节点是可选的

当主节点不可用,则选举符合要求的次节点为主节点,如果副本集成员数为偶数,添加仲裁器来进行选举主节点

仲裁器 是 mongod 进程,但不维护数据集,通过响应其他副本集成员的心跳和选举请求来维护集群中的仲裁机制

在数据承载节点中,只有一个成员被视为主要节点,而其他节点则被视为次节点

image.png

主从复制集群提供冗余并提高数据可用性是这样做的:

  • 使用不同数据库服务器上的多个数据副本,复制可提供一定程度的容错能力
    这样做是为了防止丢失单个数据库服务器

那么就会有这样的问题,主从是如何同步数据?

主从集群的同步机制是什么?

mongo db 里面的同步机制有如下几点:

  • oplog
  • 心跳机制
  • 选举机制
  • 副本回滚

oplog 是什么?

oplog 其实就是 mongodb local  数据库里面的一个集合

local.oplog.rs 集合,固定集合的大小默认是硬盘的 5%  ,默认最大也不会超过 50 个 G

oplog 上面会存放整个 mongodb 的所有写操作

oplog 的初始化是如何做的

image.png

若一个集群中,有 1个 primary(mongodb 1) 和 2 个 secondary(mongodb 2,mongodb 3) ,已经存在一段时间了,产生了一些 oplog 信息了,这个时候,又接上来了一个 secondary(mongodb 4)

此时 mongodb 4 会去读取 mongodb 3 和 mongodb 2 的副本,看谁是最新的,就同步谁的 oplog 数据

如果默认的源节点网络故障或者其他原因无法同步数据了,则这个新的 secondary 就会直接找 主节点进行 oplog 的同步

指定 oplog 初始化方式

当然我们在 mongodb 里面也是可以直接设置最新的 secondary 找谁同步数据,通过如下指令

db.adminCommand(replSetSyncFrom:"ip:port")

心跳机制

心跳机制,底层实现一般都是都是 发 TCP 包来检测连通性,当然工作中也有自己应用包来检测业务是否正常的

mongodb 里面,心跳机制默认时间是 2 s,超过这个时间,则会被认为是服务不可用


欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
打赏
0
0
0
0
63
分享
相关文章
客户说|知乎核心业务MongoDB集群的平滑上云迁移实践
客户说|知乎核心业务MongoDB集群的平滑上云迁移实践
|
4月前
|
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
112 15
MongoDB保姆级指南(中):从副本集群、分片集群起航,探索分布式存储的趋势!
本文一起来聊聊MongoDB集群,顺带以MongoDB集群为起点,共同探讨一下分布式存储的发展趋势~
1239 15
MongoDB集群同步
实现 MongoDB Cluster-to-Cluster 即集群同步的工具是:mongosync 详情可参考如下官方文档: https://www.mongodb.com/zh-cn/docs/cluster-to-cluster-sync/current/quickstart/ 以上这个地址的文档一看就是机器翻译的,可能有不恰当的地方,但基本可参考使用。 以下是本次在某项目地配置集群同步的简要步骤,可参考使用。
161 6
轻松上手:逐步搭建你的高可用MongoDB集群(分片)
【8月更文挑战第13天】在数据激增的背景下,传统单机数据库难以胜任。MongoDB作为流行NoSQL数据库,采用分片技术实现水平扩展,有效处理海量数据。分片将数据分散存储,提高并发处理能力和容错性,是高可用架构基石。构建MongoDB集群需理解shard、config server和router三组件协同工作原理。通过具体实例演示集群搭建流程,包括各组件的启动及配置,确保数据高可用性和系统稳定性。合理规划与实践可构建高效稳定的MongoDB集群,满足业务需求并支持未来扩展。
243 0
【Python】已解决:(MongoDB安装报错)‘mongo’ 不是内部或外部命令,也不是可运行的程序
【Python】已解决:(MongoDB安装报错)‘mongo’ 不是内部或外部命令,也不是可运行的程序
872 0
数据库数据恢复——MongoDB数据库服务无法启动的数据恢复案例
MongoDB数据库数据恢复环境: 一台Windows Server操作系统虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 管理员在未关闭MongoDB服务的情况下拷贝数据库文件。将MongoDB数据库文件拷贝到其他分区后,对MongoDB数据库所在原分区进行了格式化操作。格式化完成后将数据库文件拷回原分区,并重新启动MongoDB服务。发现服务无法启动并报错。
微服务——MongoDB常用命令1——数据库操作
本节介绍了 MongoDB 中数据库的选择、创建与删除操作。使用 `use 数据库名称` 可选择或创建数据库,若数据库不存在则自动创建。通过 `show dbs` 或 `show databases` 查看所有可访问的数据库,用 `db` 命令查看当前数据库。注意,集合仅在插入数据后才会真正创建。数据库命名需遵循 UTF-8 格式,避免特殊字符,长度不超过 64 字节,且部分名称如 `admin`、`local` 和 `config` 为系统保留。删除数据库可通过 `db.dropDatabase()` 实现,主要用于移除已持久化的数据库。
75 0
从 MongoDB 到 时序数据库 TDengine,沃太能源实现 18 倍写入性能提升
沃太能源是国内领先储能设备生产厂商,数十万储能终端遍布世界各地。此前使用 MongoDB 存储时序数据,但随着设备测点增加,MongoDB 在存储效率、写入性能、查询性能等方面暴露出短板。经过对比,沃太能源选择了专业时序数据库 TDengine,生产效能显著提升:整体上,数据压缩率超 10 倍、写入性能提升 18 倍,查询在特定场景上也实现了数倍的提升。同时减少了技术架构复杂度,实现了零代码数据接入。本文将对 TDengine 在沃太能源的应用情况进行详解。
62 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等