概述

       副本集是主从复制的一种,是一种自带故障转移功能的主从复制。攻克了上述主从复制的缺点。实现主server发生问题后。不需人为介入。系统自己主动从新选举一个新的主server的功能。

部署图

       

       图是copy别人的,有兴趣的能够查看该人的博客,写的很的棒

副本集配置

<strong>   </strong> //启动server(登录每台server)
mongod --dbpath d:/data/ --replSet repset //初始化副本集(登录随意一台server)
config = { _id:"repset", members:[ //_id值 == replSet參数
{_id:0, host:"192.168.1.136:27017"},
{_id:1, host:"192.168.1.137:27017", priority:10},
{_id:2, host:"192.168.1.138:27017", priority:20},
//仲裁节点:仅用于投票。防止选不出主节点,仲裁和非仲裁(仅能在初始化设置)
{_id:3, host:"192.168.1.139:27017", arbiterOnly:true}]
} rs.initiate(config);

       副本集的配置也是非常的简单,如上面的配置就能够实现。在副本集中涉及到非常多不同类型的节点。大家能够看对应的凝视。有不明的能够再查一下。以下是一些关于副本集的其他方面的操作。大家能够尝试一下

节点操作
rs.status(); //查看集群节点状态(登录随意一台server)
rs.add("192.168.1.140:27017"); //加入副本节点
rs.remove("192.168.1.140:27017"); //删除节点
节点属性操作(登录主节点server)
cfg=rs.conf();
//隐藏节点:可投票,可备份数据,不可被client使用(不作主节点)
cfg.members[1].priority=0;
cfg.members[1].hidden=1;
//延迟复制节点:用于备份,延迟从主节点同步数据,避免用户错误
cfg.members[2].priority=0;
cfg.members[2].slaveDelay=3600;
//永副本节点:防止性能不高的节点成为主节点
cfg.members[3].priority=0;
//纯备份副本节点:无投票
cfg.members[4].votes=0;
rs.reconfig(cfg);
读写分离
//设置副本节点可读(副本节点server)
db.getMongo().setSlaveOk();

       配置好副本集后,我们是无法读取副本节点server的内容,须要我们进行例如以下设置。才干够实现读写分离,当然,上篇的主从server不须要进行这个设置就能够实现主从复制

    读写分离
//设置副本节点可读(副本节点server)
db.getMongo().setSlaveOk();<strong>
</strong>

Javaclient操作

       要想实现副本集的读写分离,我们须要在java的client上进行对应的设置。以下是javaclient的核心代码,当然。首先,我们须要做的是下载对应的mongodb的java驱动
<span style="font-size:18px;">    //分布式集群(配置多个服务器。仅仅要有一个可执行即可)
List<ServerAddress> serverAddressList = new ArrayList<ServerAddress>();
serverAddressList.add(new ServerAddress("192.168.24.1", 10000));
serverAddressList.add(new ServerAddress("192.168.24.2", 10000));
MongoClient mongoClient = new MongoClient(serverAddressList);
</span>
<span style="font-size:18px;">    //设置读写分离
ReadPreference readPreference = ReadPreference.secondaryPreferred();
database.setReadPreference(readPreference); primary:默认參数。仅仅从主节点上进行读取操作
primaryPreferred:大部分从主节点上读取数据,仅仅有主节点不可用时从secondary节点读取数据
secondary:仅仅从secondary节点上进行读取操作,存在的问题是secondary节点的数据会比primary节点数据“旧”
secondaryPreferred:优先从secondary节点进行读取操作。secondary节点不可用时从主节点读取数据
nearest:无论是主节点、secondary节点,从网络延迟最低的节点上读取数据。
</span>

上面的代码不是完整的代码,是一些比較核心的代码,假设大家想要实现这个,能够先从单个server读写操作的写起。以下给出一个但server的简单的javaclient的实现样例,大家有兴趣的能够下载下来看一下。实例代码。该实例代码实现了对mongodb的固定集合和文件的操作。

副本集的优缺点

       长处

              读写分离:主节点数据读写,默认副本节点无法直接读写(可设置仅仅读)

              数据备份:副本节点读取主节点的oplog(操作日志),运行

              故障转移:主节点宕机。系统会自己主动重选主节点(优先级0—100越大,备选机会越大)

       缺点

       仅仅有集群,没有分布式

说明

副本集节点数

最好为奇数:避免选举不了主节点

最多12个:复制成本高

最多7个參与选举:添加选举时间

mongodb的分布式集群(2、副本集)的更多相关文章

  1. 搭建mongodb集群(副本集+分片)

    搭建mongodb集群(副本集+分片) 转载自:http://blog.csdn.net/bluejoe2000/article/details/41323051 完整的搭建mongodb集群(副本集 ...

  2. MongoDB集群搭建-副本集

    MongoDB集群搭建-副本集 概念性的知识,可以参考本人博客地址: 一.Master-Slave方案: 主从: 二.Replica Set方案: 副本集: 步骤:(只要按步骤操作,100%成功) 1 ...

  3. centos7下安装部署mongodb集群(副本集模式)

    环境需求:Mongodb集群有三种模式:  Replica Set, Sharding,Master-Slaver.  这里部署的是Replica Set模式. 测试环境: 这里副本集(Replica ...

  4. mongodb集群配置副本集

    测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...

  5. MongoDB健壮集群——用副本集做分片

    1.    MongoDB分片+副本集 健壮的集群方案 多个配置服务器 多个mongos服务器  每个片都是副本集 正确设置w 架构图 说明: 1.   此实验环境在一台机器上通过不同port和dbp ...

  6. Mongodb集群之副本集

    上篇咱们遗留了几个问题 1主节点是否能自己主动切换连接? 眼下须要手动切换 2主节点读写压力过大怎样解决 3从节点每一个上面的数据都是对数据库全量拷贝,从节点压力会不会过大 4数据压力达到机器支撑不了 ...

  7. MongoDB学习笔记~Mongo集群和副本集

    回到目录 一些概念 对于Mongo在数据容灾上,推荐的模式是使用副本集模式,它有一个对外的主服务器Primary,还有N个副本服务器Secondary(N>=1,当N=1时,需要有一台仲裁服务器 ...

  8. MongoDB集群-主从复制(副本集)、failover

    1.概念 主从复制的目的:数据冗余.备份.读写分离 主从方式:一主一从(不推荐,只能实现复制,主节点挂掉且未重新启动的时候,无法提升从节点为master),一主一从一裁判,一主多从 复制方式:主节点记 ...

  9. mongodb集群配置分片集群

    测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...

  10. MongoDB之分片集群与复制集

    分片集群 1.1.概念 分片集群是将数据存储在多台机器上的操作,主要由查询路由mongos.分片.配置服务器组成. ●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据, ...

随机推荐

  1. C++如何取得int型的最大最小值

    转:http://www.cnblogs.com/alex4814/archive/2011/09/12/2174173.html 當題目涉及到求最大最小值時,最初的比較數字就應當設置爲INT_MAX ...

  2. python存取数据进阶技巧-pickle,array模块

    我们在存/取数据时,没有必要存成文本形式,多试试二进制形式,文本只是骗骗眼睛的,要更快和更高效 1.数组形式 如果我们需要一个之包含数字的列表,那就试试array.array,注意,不是numpy模块 ...

  3. 小学生都能理解的原生js——call

    关于 js 作用域和执行上下文就不过多介绍了,本人也是在网上搜集了各种教程才逐渐理解,以下简单理解并说下call 的作用 首先简单理解下执行上下文有关概念,this 的指向就代表当前执行环境的上下文 ...

  4. 【fastadmin】 _id 功能失效解决办法

    在add.html模版中修改对应的input标签的各种属性

  5. HDU 6030 Happy Necklace

    矩阵快速幂. 因为任意素数长度都要满足,所以$3$必须满足,$3$一旦满足,其余的肯定满足,也就是说只要考虑字符串末尾两位即可,$dp$一下就可以算方案数了.$n$较大,可以矩阵加速. #includ ...

  6. 从Mybatis的视角去看Bean的初始化流程

    不涉及Spring完整的启动流程,仅仅从Mybatis的视角去分析几个关键的方法,找到Mybatis是如何通过这几个扩展点植入进去的,反过来看Spring是如何设计,埋下这些伏笔,实现其可扩展性. s ...

  7. Codeforces Round #436 (Div. 2) E. Fire(dp 记录路径)

    E. Fire time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

  8. Linux check whether hyperthreading is enabled or not

    There parameters need to be obained: no. of physical CPU; no. of cores on each CPU; no. of all threa ...

  9. 连接LilyPad之Linux平台的驱动

    连接LilyPad之Linux平台的驱动 常用的Linux发行版都自带了FTDI驱动,因此在绝大多数Linux发行版中不需要用户进行额外的操作. 在LilyPad编程器被正确驱动后,就可以将LilyP ...

  10. dp 加搜索 百练1088 滑雪

    描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长的 ...