Primary 节点要接收所有写入操作

Secondary 点会从 Primary 节点复制操作,它们之间的数据是相同的。

Arbiter(投票节点)

// 一个副本集最多可以有 50个成员,但只有 7个有投票权的成员。

replSetGetStatus.votingMembersCount:从 4.4版本开始,有投票权的⻆色包括仲裁节点。

replSetGetStatus.writableVotingMembersCount: 从 4.4版本开始,该统计只包括包含数据的投票节点数量,也就是说,该统计不包括仲裁者。

一、Primary

Primary节点是副本中接收写入操作的唯一成员。 MongoDB Primary 服务器上应用写操作, 然后在 Primary 节点上使用 oplog 记录操作。 Secondary 成员复制 oplog 并将操作应用于 Secondary上。

二、Secondaries

Seconda可上保存的 Primary 节点的数据副本。 Secondary 节点将 Primary 节点的 oplog日志中的操作异步应用到自己的节点上。副本集可以有一个或多个 Secondary 节点。

三、Arbiter

仲裁节点不会像其他 Secondary 节点一样保存数据副本,仲裁节点不会被选举为主节点。 MongoDB 3.6 起,仲裁节点的 Priority 会默认配置为 0

四、复制集成员类型

复制集节点有以下常⻅的选配项:

  • 是否具有投票权( v 参数):有则参与投票;
  • 优先级( priority 参数):优先级越高的节点越优先成为主节点。优先级为 0的节点无法成为主节点;
  • 隐藏( hidden 参数):复制数据,但对应用不可⻅。隐藏节点可以具有投票仅,但优先级必须为 0;
  • 延迟( slaveDelay 参数):复制 n 秒之前的数据,保持与主节点的时间差。