mongodb--副本集1

1.介绍

副本集是一组服务器,其中有一个主服务器,用来处理客户端的请求。还有多个备份服务器,用于保存主服务器的数据副本。如果主服务器崩溃了,备份服务器会自动将其中一个升级为主服务器。

  1. 客户端在单个节点上可以执行的请求,都可以发送到主节点上进行执行。
  2. 客户端在备份节点上不能执行写操作
  3. 默认情况下,客户端不能从备份节点读取数据。在备份节点显示执行了setSlaveOk后,客户端就可以从备份节点读取数据了。

2.设计副本集

选择主节点时需要大多数成员支持,写操作被复制到大多数成员时 写操作才算安全的。

如果成员总数是偶数,成员平均分配到不同的网络中。任何一边都无法满足大多数的条件。

3. 选举机制

当一个备份节点无法与主节点连通时,它就会联系并请求其他的副本集成员将自己选举为主节点。
其他成员会做几项理性的检查:

  1. 自身是否能够与主节点连通
  2. 希望选举为主节点的备份节点的数据是否是最新的。
  3. 有没由其他优先级更高的成员选举为主节点。

如果被要求选举为主节点的成员得到了 大多数成员的投票,那么它会成为主节点。即使大多数成员中只有一个 否决了 本次选择。那么选举就会取消。一个否决票=10000张赞成票。

希望成为候选人的节点必须通过复制操作将自己的数据更新为最新。副本集中的其他成员会对此进行检查。

假定候选人执行的最后一次的操作是123,它连接的其他成员的有一个最后操作是124,那么这个成员会否决候选人的选举。这是候选人会继续同步,等到他同步道124时,它会重新进行选举(如果整个副本集中没有主节点的话)。在新一轮的选择中,如果候选人没有其他不合格之处,那么之前否决它的候选人会投赞成票。

每个成员只能要求自己被选举为主节点。不能推荐其他成员为主节点

4.选举仲裁者

仲裁者唯一的作用就是参与选举。仲裁者不保存数据,也不会为客户端提供服务。它只是为了帮助具有两个副本集的成员能够满足“大多数”条件。

如果有可能,尽量在副本集中使用奇数个数据成员,而不要使用仲裁者

5.优先级

优先级表示一个节点渴望成为主节点的程度。优先级的取值都是0~100. 默认是1,优先级=0的节点永远不能成为主节点。

猜你喜欢

转载自blog.csdn.net/ai_xiangjuan/article/details/82724956