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.分片.配置服务器组成. ●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据, ...
随机推荐
- Codeforces 813B The Golden Age(数学+枚举)
题目大意:如果一个数t=x^a+y^b(a,b都是大于等于0的整数)那就是一个unlucky数字.给你x,y,l,r(2 ≤ x, y ≤ 10^18, 1 ≤ l ≤ r ≤ 10^18),求出l到 ...
- [Ext JS 4] MVC 应用程序框架
前言 大型客户端应用程序总是很难编写,很难组织和很难维护.随着功能的增加和更多的开发人员加入项目,对项目的控制也越来越困难了.Ext JS 4 提供了一个新的应用程序框架帮助组织代码. 模型 - 一组 ...
- hdu 5894(组合数取模)
hannnnah_j’s Biological Test Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K ...
- appium---【Mac】Appium-Doctor提示WARN:“applesimutils cannot be found”解决方案
报错提示“ applesimutils cannot be found”截图如下: 解决方案: brew tap wix/brew brew install applesimutils 再次执行app ...
- live555例子程序编译连接时发现函数未定义问题
1 调整连接库的顺序. 2 更新头文件与所用的库一致
- Echarts怎么用后台传来的json数据
Echarts怎么用后台传来的json数据 <!DOCTYPE html> <html> <head> <meta http-equiv="Cont ...
- es6的Map()构造函数
普通的object对象是键值对的集合,但对于它的键却有着严苛的要求,必须是字符串,这给我们平时带来很多的不方便 Map函数类似于对象,但它是一个更加完美的简直对集合,键可以是任意类型 set()方法可 ...
- linux中使用rm命令将文件移到回收站的方法
今天在终端下,看到我的用户目录下有个-的文件夹(maven生成),相要删除收回点空间,习惯性的用命令 rm -rf ~ ,一回车,猛然想起的时候已经来不及了,世界一下子清静了,想死的心都有了! 没错, ...
- PHP视频教程 字符串处理函数(二)
1.字符串输出:echo()输出一个或者多个字符串 2.截取 chunk_split(); 3.
- Linux下解压缩 - 中文解决方案
命令行工具 Unar 以及 Lsar 安装:sudo apt-get install unar: 预览压缩包:lsar example.zip 解压缩:unar example.zip 指定位置解压: ...