mongodb replicaSet和一些基本概念

mongodb relicaset是mongo的主从高可用架构,它定义了复制集中的数据传输结构和灾难发生时整个复制集的高可用性

1主2从架构

mongodb建议最小架构为1主2从

主节点接收所有写入操作,从节点异步复制和应用主节点oplog。oplog记录数据库上的所有变更操作

1主1从1选举节点

选举节点概念

arbiter为选举节点,仅负责选举,不负责复制存储数据和提供对外服务

1:1架构的弊端

当搭建复制集时采用1主1从的架构,那么当2个节点间的网络不可用时,要不是primary继续提供服务,不要是secondary提升为主节点提供服务,那么到底该选哪一个呢?在mongodb复制集架构中,当故障发生选举时,必须有n/2+1个节点存活时,才可提供对外服务,所以在1:1的架构中只要网络不可用,2个节点都不可以成为主节点。以此类推,偶数个节点的复制集,当他们以55分为2个机房中,当网络不可用,那么这个复制集就不可用,无法提供对外服务

这时如果我们让复制集成为单数个,就可以解决这个问题,单数如果资源不够用,没有办法再加入secondary怎么办?这个时候就可以使用arbiter选举节点。选举节点不会存储数据,没有server进程。它可消除选举过程的偶数隐患。如下当选举节点跟secondary一个机房,网络不可用时,primary节点成为备份节点,secondary和arbier成为新的可用复制集。

应尽可能使用奇数个节点,且全部为数据节点。

选举机制

当n/2+1个节点都同意“独立”,那么几个节点就需要选举出最高领导者primary。每个secondary会发起为自己成为primary的投票,这个时候每个赞成票可能为+1,但是每个反对表为较大的负数,比如-10000,(复制集最多只能有50个节点和7个选举节点)所以只要有1个节点认为这个节点不能成为他的主节点,那么这个节点就不能成为主节点,比如当被选举节点的数据更新慢于其他节点时,那么它就不能被选举成为主节点,其他节点会投反对票。所以,当n/2+1个节点投赞成票时,这个节点就可以成为主节点

优先级priority

priority取值为0-100,默认是1,如果优先级为0,那么这个节点永远不会成为主节点。这样的成员称为被动成员(passive)

优先级最高的成员,一但将数据更新到最新,它就会选举成为新的主节点。如果这个节点数据不够新,那么当前主节点保持不变。优先级不会使复制集选不出主节点,也不会使非最新节点成为主节点。

优先级值仅代表优先级关系,100、1、1和2、1、1是一样的

隐藏成员

客户端不会向隐藏成员发送请求,隐藏成员不会接到读的请求

hidden:true指定为隐藏成员,只有优先级为0的才可以是隐藏成员。

hidden为false或者不设置hidden都是非隐藏

延迟备份节点

设置节点slaveDelay延时(秒),slaveDelay的优先级必须是0。无特殊需求,延时节点最好隐藏掉

参考文档

《mongodb权威指南》

猜你喜欢

转载自blog.csdn.net/qq_40687433/article/details/110992344