mongoDB-复制集成员

MongoDB的一个复制集是一组mongod进程,提供冗余和高可用性。复制集的成员有:

  • 主节点:主节点接收所有写入操作
  • 次节点:次节点复制主节点的操作来维护一个相同的数据集。从服务器可能有特殊用法的额外配置。比如,从服务器可能non-voting或priority 0。

一个复制集的最小推荐配置是一个包含三个数据成员的三成员复制集:一个主成员和两个辅助成员。在某些情况下(例如您有一个主节点和一个次节点,但是成本限制禁止添加另一个次节点),您可以选择包含一个仲裁节点。仲裁节点参与选举但不持有数据(即不提供数据冗余)。

一个复制集最多可以有50个成员,但只有7个投票成员。

主节点

主节点是复制集中接收写操作的唯一成员。MongoDB在主节点上应用写操作,然后在主节点的oplog上记录操作。次节点复制此日志并将操作应用于其数据集。

在下面的三成员复制集中,主节点接受所有的写操作。然后,次节点复制oplog应用到它们的数据集。

mongoDB-复制集成员_第1张图片
复制集的所有成员都可以接受读操作。但是,在默认情况下,应用程序将其读操作定向到主节点。有关更改默认读取行为的详细信息,请参阅Read首选项。

复制集最多可以有一个主节点。如果当前主节点不可用,则由选举决定新的主节点。请参阅复制集选举的更多细节。

次节点

从节点维护主节点数据集的一个副本。为了复制数据,次节点在异步进程中将来自主节点的oplog的操作应用到它自己的数据集。一个复制集可以有一个或多个次节点。

下面的三成员复制集有两个次节点。次节点复制主服务器的oplog并将操作应用到它们的数据集。

mongoDB-复制集成员_第2张图片
虽然客户端不能将数据写入次节点,但客户端可以从次节点读取数据。有关客户端如何将读操作直接读入副本集的详细信息,请参阅“读首选项”。

次节点可以变成主节点。如果当前主节点不可用,则复制集将举行一次选举,以选择哪个次节点成为新的主节点。

请参阅复制集选举的更多细节。

可以为特定目的配置次节点。你可以配置一个次节点来:

  • 防止它成为选举中的主节点,这将允许它驻留在次数据中心或充当冷备用。参见优先级为0的复制集成员。
  • 防止应用程序从它读取数据,这允许它运行需要与正常流量分离的应用程序。参见隐藏复制集成员。
  • 保持运行的“历史”快照,以便在从某些错误(如无意中删除的数据库)恢复时使用。参见延迟复制集成员。

仲裁节点

在某些情况下(例如您有一个主节点和一个次节点,但是成本限制禁止添加另一个次节点),您可以选择向副本集中添加仲裁节点。仲裁节点没有数据集的副本,因此不能成为主节点。然而,仲裁节点会参与主节点的选举。仲裁节点只有1张选票。

版本3.6的变化:在MongoDB 3.6中启动,仲裁节点的优先级为0。当您将一个副本集升级到MongoDB 3.6时,如果现有配置有一个优先级为1的仲裁节点,MongoDB 3.6将仲裁节点的优先级重新配置为0。

不要在部署了复制集的主节点或次节点的系统上运行仲裁节点。

若要添加仲裁节点,请参阅向副本集添加仲裁节点。

有关使用仲裁节点时的注意事项,请参阅复制集仲裁节点。

你可能感兴趣的:(mongo,复制集,mongodb)