第五章 MongoDB 副本集
- 什么是
MongoDB
副本集 - 副本集有哪几种类型
Oplong
日志有什么用- 副本集读写策略
- 回滚
1. 什么是副本集
简单的来说,MongoDB
副本集就是一组 mongod
的进程。虽然单 mongod
进程就提供了数据的存储和读取,但是一旦该服务器发生网络异常或宕机,导致服务器不可用,严重影响系统功能。而提供一组 mongod
进程可以让故障自动转移,系统仍然被正常使用。
副本集就是多个 mongod
进程实例间保存则同一份数据。这就好比我有一个重要的 word
文档,需要拷贝几份放到目录里。如图1.1所示。
MongoDB
副本集架构图跟上图类似,数据节点都保存相同的数据集。MongoDB
副本集的最低配置是:一主二副、一主一副一仲裁。如图2所示。
2.副本集节点类型
主节点和副节点
:
主节点和副节点都属于数据节点,它们都可以存储数据。一个副本集只有一个主节点。接收到的数据默认写在主节点(可以配置读写策略,改变读写行为),然后通过数据同步把数据复制到其他的节点上。心跳检查来确保节点之间的状态是否正常。
仲裁节点
(arbiter):
仲裁节点(arbiterOnly:true
)不会存储数据并且不能成为主节点
,参与投票,所以对服务器资源要求比较低。当受到资金限制时,可以考虑配置仲裁节点。仲裁节点的优先级priority
为0。
优先级为0的节点
:
优先级为0的节点不能成为主节点
也不能触发选举。但是它和副节点的功能基本一样,具备数据存储、投票、响应写确认操作。
优先级为0的节点可以作为一个备份成员,也可以确保确定的节点成为主节点。例如当一个机房部署一个主节点和副节点,另一个机房部署一个优先级为0的节点。由于这种设置,可以确保选举出来的节点一直在左边机房里。当机器部署在不同的硬件、地理位置时,可以这样考虑。
隐藏节点
: