mongodb的分布式集群(2、副本集)
概述
副本集是主从复制的一种,是一种自带故障转移功能的主从复制。攻克了上述主从复制的缺点。实现主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操作
<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、副本集)的更多相关文章
- 搭建mongodb集群(副本集+分片)
搭建mongodb集群(副本集+分片) 转载自:http://blog.csdn.net/bluejoe2000/article/details/41323051 完整的搭建mongodb集群(副本集 ...
- MongoDB集群搭建-副本集
MongoDB集群搭建-副本集 概念性的知识,可以参考本人博客地址: 一.Master-Slave方案: 主从: 二.Replica Set方案: 副本集: 步骤:(只要按步骤操作,100%成功) 1 ...
- centos7下安装部署mongodb集群(副本集模式)
环境需求:Mongodb集群有三种模式: Replica Set, Sharding,Master-Slaver. 这里部署的是Replica Set模式. 测试环境: 这里副本集(Replica ...
- mongodb集群配置副本集
测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...
- MongoDB健壮集群——用副本集做分片
1. MongoDB分片+副本集 健壮的集群方案 多个配置服务器 多个mongos服务器 每个片都是副本集 正确设置w 架构图 说明: 1. 此实验环境在一台机器上通过不同port和dbp ...
- Mongodb集群之副本集
上篇咱们遗留了几个问题 1主节点是否能自己主动切换连接? 眼下须要手动切换 2主节点读写压力过大怎样解决 3从节点每一个上面的数据都是对数据库全量拷贝,从节点压力会不会过大 4数据压力达到机器支撑不了 ...
- MongoDB学习笔记~Mongo集群和副本集
回到目录 一些概念 对于Mongo在数据容灾上,推荐的模式是使用副本集模式,它有一个对外的主服务器Primary,还有N个副本服务器Secondary(N>=1,当N=1时,需要有一台仲裁服务器 ...
- MongoDB集群-主从复制(副本集)、failover
1.概念 主从复制的目的:数据冗余.备份.读写分离 主从方式:一主一从(不推荐,只能实现复制,主节点挂掉且未重新启动的时候,无法提升从节点为master),一主一从一裁判,一主多从 复制方式:主节点记 ...
- mongodb集群配置分片集群
测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...
- MongoDB之分片集群与复制集
分片集群 1.1.概念 分片集群是将数据存储在多台机器上的操作,主要由查询路由mongos.分片.配置服务器组成. ●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据, ...
随机推荐
- 以太坊go-ethereum客户端(三)两种全节点启动模式
这篇博客介绍一下go-ethereum全节点的两种启动模式:主网络快速启动和测试网络快速启动.这也是客户端所提供的两种启动方式,直接拿来使用即可.下面具体介绍一下使用方法. 主网络快速启动 其实,我们 ...
- Linux 基础——文件搜索命令find
一.find命令的好处 有时会经常在目录下找文件或目录的具体存放在哪,但是该目录下的文件又很多不好找出.这时并不需要手动查看所有的文件,用find命令来帮助查找就行了.所以文件或目录一定归好类,存放有 ...
- c++ primer 2 变量和基本类型
2.1 基本内置类型 基本内置类型是C++“自带”的类型,区别于标准库定义的类型.使用时不需要应用标准库就可以使用,我们可以理解为数字型有下面这些 整形:就是整数或者是没有小数位的数.它包括bool( ...
- ASP.NET Zero--4.不使用谷歌字体,提升加载速度
jtable控件样式中会使用到谷歌字体,每次访问都特别慢 1.打开jtable.css文件 [..\MyCompanyName.AbpZeroTemplate.Web\libs\jquery-jtab ...
- vue配置二级目录&vue-axios跨域办法&谷歌浏览器设置跨域
一.根据官方建议,dist打包的项目文件放在服务器根目录下,但是很多时候,我们并不能这样做,当涉及到二级目录设置多层深埋的时候,就需要在webpack配置文件里去设置一下了. 在webpack.con ...
- LoadRunner项目结合抓包工具
LoadRunner项目结合抓包工具 常见的抓包工具包括: 1. Http协议 报文分为"请求","应答"两大类. 请求: 方法-URL-协议/版本 ...
- CentOS 7 kibana安装配置
Kibana 是为Elasticsearch设计的开源分析和可视化平台,你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互.你可以很容易实现高级的数据分析 ...
- SPOJ GSS3-Can you answer these queries III-分治+线段树区间合并
Can you answer these queries III SPOJ - GSS3 这道题和洛谷的小白逛公园一样的题目. 传送门: 洛谷 P4513 小白逛公园-区间最大子段和-分治+线段树区间 ...
- 《java虚拟机》----垃圾收集、内存分配
No1: 程序计数器.虚拟机栈.本地方法栈3个区域随线程而生,随线程而灭:栈中的栈帧随着方法的进入和退出而有条不紊的执行着出栈和入栈操作.每一个栈帧中分配多少内存基本上市在类结构确定下来时就已知的,因 ...
- Python画一朵花
from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm from matplotlib.ticker import Line ...