概述

       副本集是主从复制的一种,是一种自带故障转移功能的主从复制。攻克了上述主从复制的缺点。实现主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. Floyd_Warshall(任意两点之间的最短路)

    /* O(V^3) 案例: 1 2 2 1 3 5 2 3 1 */ #include <cstdio>#include <iostream>using namespace s ...

  2. MVC – 5.MVC设计模式和.NetMVC框架

    MVC模式-设计模式 •控制器(Controller)- 负责转发请求,对请求进行处理. •视图 (View) - 界面设计人员进行图形界面设计. •模型 (Model)-业务逻辑.数据.验证规则.数 ...

  3. IEEEXtreme 10.0 - Full Adder

    这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Full Adder 题目来源 第10届IEEE极限编程大赛 https://www.hackerrank. ...

  4. TCP和UDP发送数据包的大小问题

    用UDP协议发送时,用sendto函数最大能发送数据的长度为:65535-20-8=65507字节,其中20字节为IP包头长度,8字节为UDP包头长度.用sendto函数发送数据时,如果指的的数据长度 ...

  5. Python学习之pillow库入门

    http://python.jobbole.com/84956/ 我还是搬运工......

  6. Django+Nginx+uwsgi搭建自己的博客(三)

    (本来打算在这篇博文中介绍Users App的前端部分的,但写着写着就发现还需要铺垫很多东西才能把整个项目串的比较流畅些,因此这篇就继续介绍了后端的一些东西,前端的部分只好跳票到下一篇了-) 在上一篇 ...

  7. Linux中用户与组相关配置文件(整理)

    用户与组信息存放位置 说明 注释 /etc/passwd 存放用户基本信息 记录了每个用户的一些基本属性,并对所有用户可读,每一行记录对应一个用户,属性之间通过冒号分隔. 每一个行6个冒号,7个属性. ...

  8. EAP-MD5认证暴力破解工具eapmd5pass

    EAP-MD5认证暴力破解工具eapmd5pass   EAP-MD5是一种基于802.1x协议的认证机制.由于该机制存在漏洞,所以并不能保证数据安全.Kali Linux预置一个专用工具eapmd5 ...

  9. dev devfs udev sysfs及关系

        Linux 下对设备的管理方式主要有/dev和sysfs两种,前者是将设备注册为设备节点放入/dev目录下,而后者是在linux2.6内核后引入的新的文件系统. ➤/dev方式 关于/dev的 ...

  10. FastReport.Net使用:[3]简单报表一

    如何设置报表栏 1.右键报表栏相关模块进行删除. 2.使用菜单栏中的报表菜单进行添加/删除相应的栏目,选中栏目的背景会变得高亮. 3.使用报表栏编辑器. 可通过点击报表栏顶部的“设置报表栏”或者菜单栏 ...