【赵渝强老师】MongoDB复制集中的成员

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: MongoDB复制集通常由一个主库和两个从库组成,可选添加仲裁者。主库负责所有写操作并记录Oplog日志,从库异步同步主库的Oplog日志并应用操作。仲裁者不存储数据,主要用于保证复制集中成员数量为奇数,参与选举投票。视频讲解详见B站链接。

b073.png

MongoDB的复制集中主要包括三个成员,即:主库、从库和仲裁者。一般情况下,MongoDB复制集集群中是一个主库和两个从库。数据库管理员也可以在复制集中添加一个MongoDB的实例,作为复制集的仲裁者。但仲裁者不是必须的。视频讲解如下:


  • 主库

   

在一个MongoDB复制集中,只能存在一个主库用于接收所有写操作请求。MongoDB应用写操作到数据文件中并记录操作的Oplog日志。从库复制主库上的Oplog日志并应用操作到从库中。MongoDB复制集中所有成员都能接收读操作请求。当主库出现了不可用的情况,MongoDB复制集会触发了选举,会从剩下的从库中选择一个新主库。


  • 从库

   

MongoDB复制集中的从库采用了异步方式从主库上同步Oplog日志信息,并应用日志中操作到从库的数据集中。MongoDB复制集环境中可以存在多个从库。尽管客户端不能往从库上写入数据,但是可以从从库上读取数据。在往MongoDB复制集中添加从库时,可以为从库设置不同的优先级别。当主库出现问题的时候,优先级别越高的从库将会被优先选举会主库。

提示:优先级为0的从库不能被选举为主库。

   

在某些情景下,在选举过程中可能有某个瞬间存在多个主库的情况,例如当网络出现问题时。当这种情况出现时,MongoDB复制集会将其中一个主库降级为从库,而对于客户端应用程序来说会察觉到主库降级所造成的数据过期以进行回滚操作。当前从库出现问题的时候,MongoDB复制集还可以对客户端应用程序隐藏从库,从而使得客户端无法访问该从库。


  • 仲裁者

   

MongoDB复制集中的仲裁者不存储任何数据集合,并且不能被选举成为主库。仲裁者不是必须的,它的存在可以保证MongoDB复制集中成员的个数为奇数,因为它总有一个投票权。作为仲裁者的节点对服务器硬件要求不高,仲裁者还可以用于接收复制集中其他成员发送的心跳检测信息。


相关实践学习
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
179
分享
相关文章
【赵渝强老师】MongoDB写入数据的过程
在MongoDB数据更新时,WiredTiger存储引擎通过预写日志(Journal)机制先将更新写入日志文件,再通过检查点操作将日志中的操作刷新到数据文件,确保数据持久化和一致性。检查点定期创建,缩短恢复时间,并保证异常终止后可从上一个有效检查点恢复数据。视频讲解及图示详细说明了这一过程。
100 23
【赵渝强老师】MongoDB写入数据的过程
【赵渝强老师】管理MongoDB的运行
MongoDB使用`mongod`命令启动服务器。实战中,创建目录`/data/db2`存放数据文件,并通过命令`mongod --dbpath /data/db2/ --port 1234 --fork --logpath /data/db2/db2.log --directoryperdb`启动服务。登录MongoDB后可创建数据库和集合。停止MongoDB服务器有三种方式:1) 使用`db.shutdownServer()`;2) 使用`db.adminCommand({shutdown:1, force:true})`强制关闭;3) 使用操作系统的`kill -2 PID`命令。
69 22
【赵渝强老师】MongoDB的MMAPv1存储引擎
在MongoDB 3.2版本之前,默认使用MMAPv1存储引擎。MMAPv1包括Database、Namespace、数据文件、Extent和Record等组件。每个Database由名称空间文件和数据文件组成,数据文件按编号递增,大小从64MB到2GB。每个数据文件被划分为多个Extent,每个Extent包含多个Record,对应MongoDB中的文档。通过一个示例展示了如何配置和使用MMAPv1存储引擎。
【赵渝强老师】MongoDB文档级别的并发控制
MongoDB使用WiredTiger存储引擎在文档级别进行并发控制,允许多个写操作同时修改不同文档,但对同一文档的修改需序列化执行。引擎采用乐观锁和意向锁机制处理冲突。通过视频讲解、插入大量文档示例及使用`mongotop`和`db.serverStatus()`命令,演示了如何监控MongoDB的锁信息和读写统计,展示了数据库和集合级别的写锁情况。
109 29
【赵渝强老师】MongoDB的Journal日志
MongoDB通过Journal日志保证数据安全,记录检查点后的更新,确保数据库从异常中恢复到有效状态。每个Journal文件100M,存于--dbpath指定的journal子目录。默认已启用Journal日志,可通过--journal参数手动启用。WiredTiger存储引擎使用128KB内存缓冲区,异常关机时可能丢失最多128KB的数据。视频讲解和详细步骤参见附录。
96 17
【赵渝强老师】MongoDB逻辑存储结构
MongoDB的逻辑存储结构由数据库(Database)、集合(Collection)和文档(Document)组成,形成层次化数据模型。用户通过mongoshell或应用程序操作这些结构。视频讲解及结构图详见下文。
139 3
【赵渝强老师】MongoDB的存储结构
MongoDB 是一个可移植的 NoSQL 数据库,支持跨平台运行。其逻辑存储结构包括数据库、集合和文档,而物理存储结构则由命名空间文件、数据文件和日志文件组成。视频讲解和示意图进一步解释了这些概念。
167 5
【赵渝强老师】MongoDB的WiredTiger存储引擎
MongoDB WiredTiger存储引擎自3.2版本起成为默认选择,提供文档级别的并发控制、检查点、数据压缩和本地加密等功能。本文详细介绍了WiredTiger的并发控制机制、预写日志与检查点、内存使用、数据压缩及磁盘空间回收等特性。
225 0
【赵渝强老师】MongoDB的In-Memory存储引擎
MongoDB的In-Memory存储引擎将数据存储在内存中,显著减少查询延迟,提高性能。该引擎不会将数据持久化到硬盘,仅在内存中存储,因此重启后数据会丢失。本文通过创建目录、配置文件、启动服务、插入数据和查询等步骤,详细演示了如何使用In-Memory存储引擎。
【赵渝强老师】MongoDB的存储引擎
存储引擎是MongoDB的核心组件,负责管理数据在硬盘和内存中的存储方式。从3.2版本起,MongoDB支持WiredTiger、MMAPv1和In-Memory三种存储引擎。WiredTiger为默认引擎,提供文档级并发控制和数据压缩;MMAPv1在3.2版本前为默认引擎,4.x版本后不再支持;In-Memory引擎将数据存储在内存中,减少查询延迟。
121 0

相关产品

  • 云数据库 MongoDB 版
  • AI助理

    你好,我是AI助理

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