MongoDB的简介:

mongodb的集群搭建方式主要有三种,主从(master slave)模式,副本集(分片)模式,三种模式各有优劣,适用于不同的场合,属副本集应用最为广泛,主从模式现在用的较少,sharding模式最为完备,但配置维护较为复杂。本文我们来看下Replica Set模式的搭建方法。

Mongodb的副本集即副本集方式主要有两个目的,一个是数据冗余做故障恢复使用,当发生硬件故障或者其它原因造成的宕机时,可以使用副本进行恢复。另一个是做读写分离,把读的请求分流到副本上,减轻主(主)的读压力。

副本集是mongod的实例集合,它们有着同样的数据内容。包含三类角色: 

(1)主节点(主) 

接收所有的写请求,然后把修改同步到所有Secondary。一个Replica Set只能有一个主要节点,当主要挂掉后,其他次要或者Arbiter(仲裁者)节点会重新选举出来一个主节点。默认读请求也是发到主节点处理的,如需要转发到二级则需要客户端修改一下连接配置。

(2)副本节点(二次) 

与主节点保持同样的数据集。当主节点挂掉的时候,参与选主。

(3)仲裁者(仲裁器) 

不保存数据,不参与选主,只进行选主投票。使用仲裁器可以减轻数据存储的硬件需求,仲裁器跑起来几乎没什么大的硬件资源需求,但重要的一点是,在生产环境下它和其他数据节点不要部署在同一台机器上。 

注意,一个自动故障转移(故障转移)的副本集节点数必须为奇数,目的是选主投票的时候要有一个大多数才能进行选主策

(4)选主过程 

其中二级宕机,不受影响,若主宕机,会进行重新选主: 

用java 程序 实现mongodb副本集 mongodb副本集中的三种角色_副本集

使用Arbiter搭建副本集

偶数个数据节点,加一个Arbiter构成的副本集方式: 

用java 程序 实现mongodb副本集 mongodb副本集中的三种角色_二级_02