type
status
date
slug
summary
tags
category
icon
password
副本集介绍
副本集(replica set)
MongoDB的副本集(Replica Set)是一组MongoDB进程实例的集合,其中的数据相互复制,并自动进行故障转移。
通过MongoDB的数据库复制,系统增加了冗余性,确保了高可用性,简化了管理任务,如备份,并且提升了读取性能。大多数生产部署都会采用复制功能。在MongoDB中,主节点(Primary)负责处理写操作,而其他复制成员则是次要节点(Secondaries)

MongoDB官网关于副本集的文档地址如下:
成员角色
故障切换恢复
副本集能够自动进行故障切换和恢复。如果主节点(Primary)掉线或无响应,并且多数副本集成员能够相互连接,系统将选出一个新的主节点。
通常情况下,当主节点发生故障、不可用或不适合作为主节点时,在几秒内没有管理员干预,副本集会自动进行故障切换。
如果MongoDB部署未按预期进行故障切换,则可能出现以下问题:
- 副本集剩余成员数量少于总数的一半
- 没有适合成为主节点的成员、

回滚
在大多数情况下,回滚操作能够优雅地处理无法进行故障切换恢复的情况。回滚操作发生在主节点(Primary)处理写操作时,但在其他成员尚未成功复制该操作之前主节点掉线。当之前的主节点重新加入副本集并开始进行复制时,会出现回滚操作。如果操作已经成功复制到其他成员,并且这些成员可用且能够连接到大多数副本集成员,则不会发生回滚。回滚操作会删除那些尚未复制到其他成员的操作,以确保数据集的一致性
选举
在任何故障切换发生时,都会触发一次选举,以确定哪个成员将成为主节点。选举提供了一种机制,使得副本集中的成员无需管理员干预,就能自动选出一个新的主节点。选举能够让副本集快速而可靠地从故障中恢复。当主节点变得不可达时,次要成员会发起选举,第一个收到大多数选票的成员将成为新的主节点
成员优先级
在副本集中,每个成员都有优先级,它可以帮助决定选举出primary。默认情况下,所有的成员的优先级都为1
一致性
在MongoDB中,所有针对主节点(Primary)的读操作都保证与最后一次写操作结果一致。如果客户端配置了允许从次要节点(Secondary)读取的读选项,读操作可能会从没有及时复制更新或操作的次要节点返回结果。在这种情况下,查询操作可能会返回之前的状态。
这种行为有时被称为最终一致性,因为次要节点的状态最终会与主节点的状态一致。MongoDB不能保证从次要节点读取的读操作具有强一致性。
除非在配置写操作成功后,确保所有节点上的写操作都成功执行,否则无法保证从次要节点读取的一致性
部署副本集
服务器配置
ip地址 | 主机名 | 规格 | 备注 | 软件版本 |
11.0.1.49 | node1 | 2c4G | PRIMARY | mongodb-4.0.28 |
11.0.1.50 | node2 | 2c4G | SECONDARY | mongodb-4.0.28 |
11.0.1.51 | node3 | 2c4G | SECONDARY | mongodb-4.0.28 |
基础环境配置
配置副本集
启动副本集
初始化副本集
副本集添加成员
查看副本集状态
查看副本集配置
rs.conf()副本集操作
主节点插入数据
从节点读取数据
故障切换
停掉node1节点 mongod 然后发现已经mongo shell连接不上,而通过另外两个成员可以看到副本集的状态将node1 节点启动起来 看看是否变为primary- 作者:NotionNext
- 链接:https://tangly1024.com/article/06679d25-63e5-412b-9cf4-ca3a78de2e4e
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。





