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.分片.配置服务器组成. ●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据, ...
随机推荐
- mktime(将时间结构数据转换成经过的秒数)
mktime(将时间结构数据转换成经过的秒数)表头文件#include<time.h>定义函数time_t mktime(strcut tm * timeptr);函数说明mktime() ...
- 20165301 2017-2018-2 《Java程序设计》第五周学习总结
20165301 2017-2018-2 <Java程序设计>第五周学习总结 教材学习内容总结 第七章:内部类与异常类 内部类 在一个类中定义另一个类 非内部类不可以是static类 匿名 ...
- UI自动化的痛点
解决UI自动化难点痛点: 解决从安装过程中跳出的提示框以及操作过程中任意提示框的操作,来提高用例成功率: 公用用例及业务用例分离,便于维护和多人使用,提高脚本编写效率: 解决用android wind ...
- Delphi idHttpServer接收Http Get请求解码问题
引用 Httpapp单元,使用Httpdecode函数进行解码 procedure TFrmMain.HTTPServerCommandGet(AThread: TIdPeerThread; AReq ...
- 猜数字游戏的提示(UVa340)
题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...
- python生成器 协程
生成器 参考文章: 协程 gevent 生成器进阶 看个例子: def gg(): n='' i=0 while True: n=yield i #通过send传入到n if not n: pa ...
- Python教程(一)Python简介
Python就为我们提供了非常完善的基础代码库,覆盖了网络.文件.GUI.数据库.文本等大量内容,被形象地称作“内置电池(batteries included)”.用Python开发,许多功能不必从零 ...
- java抽象类、多态、接口
抽象类 抽象类的产生 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具体实现方式,那么这些方法都有具体的方法体. 但是有的时候,某个父类只是知道子类应该包含怎么样的方法,但 ...
- MySQL之varchar
MySQL之varchar 0.前言 探究关于MySQL中varchar长度的定义 1.研究MySQL的varchar列类型的背景 1.MySQL5.x 2.InnoDB 2.varchar 对于va ...
- spring配置多数据源——mybatis
这篇文章是配置mybatis多数据源文章,如果是hibernate的话也是没什么影响,配置都是差不多的. 在这家公司上班差不多一星期了,不小心点开配置文件一看这项目配置了两个数据源,蒙了. 之后上网查 ...