首页 > 编程笔记 > MongoDB 阅读:1

什么是副本集,MongoDB副本集简介(新手必看)

MongoDB 数据库中的副本集可提供冗余并提高数据可用性,是一组维护相同数据集的 mongod 实例。通过在不同的数据库服务器上设置数据副本,副本集为单个数据库服务器丢失的情况提供了一定程度的容错能力。

副本集包含多个数据承载节点和一个可选的仲裁节点。在数据承载节点中,只有一个主节点,其余的称为从节点。需要注意的是,每个副本集节点必须属于且只属于一个副本集。副本集节点不能属于多个副本集。

主节点会接收所有写入操作。副本集只能有一个可以使用 {w: "majority"} 写关注级别对写入请求进行确认的主节点,具体如下图所示:


图 1 主从节点复制操作

尽管在某些情况下,另一个 mongod 实例可能会暂时将自身视为主节点。主节点在其操作日志(oplog)中记录对其数据集的所有更改。

从节点复制主节点的操作日志(oplog),并将这些操作应用于其数据集,以便从节点的数据集反映主节点的数据集状态。如果主节点为不可用,则符合条件的从节点之间将进行选举,以便选举出新的主节点,具体如下图所示:


图 2 从节点选举操作

而在某些情况下(例如,当存在一个主节点和一个从节点时,由于成本有限,无法再添加另一个从节点),设计人员可以选择将一个 mongod 实例作为仲裁节点添加到副本集中。仲裁节点参与选举但不能持有数据,即不提供数据冗余,具体如下图所示。


图 3 仲裁节点操作

需要注意,仲裁节点将永远是仲裁节点。而在选举期间,主节点可能被降级成为从节点,从节点可能变为主节点。

相关文章