第40章:MongoDB-集群--Replica Sets(副本集)---副本集的管理
由于很多维护的工作需要写入操作,所以不合适在副本集中操作,可以以单机模式启动成员,也就是不要使用副本的选项,就跟以前启动单独的服务器一样。一般使用一个跟副本集配置中不一样的端口号,这样其他成员会认为这个服务器挂了。
副本集的配置以一个文档的形式保存在local.system.replSet集合中,副本集中所有成员的这个文档都是相同的。绝对不要使用update来更新这个文档,应该使用rs或者replSetReconfig命令来修改副本集的配置。
1:创建副本集,这个前面学过,就是启动所有的成员服务器后,使用rs.initiate命令
2:修改副本集成员,前面也学过一些,比如rs.add(),rs.remove()命令,还可以使用
rs.reconfig(config)命令,比如修改第一个成员的host名称,
示例如下:
var config = rs.config();
config.members[0].host="newHost:port";
rs.reconfig(config);
修改其他的也一样,先rs.config()得到当前配置,然后修改数据,再rs.reconfig就OK了,但有如下几个限制:
(1):不能修改成员的"_id"字段
(2):不能将接收rs.reconfig命令的成员的优先级设置为0
(3):不能将仲裁者变成正常成员,反之也不行
(4):不能将buildIndexes为false的成员修改为true
副本集最多只能拥有12个成员,只有7个成员拥有投票权。因此要创建超过7个副本集的话,需要将其他成员的投票权设置为0,例如:
rs.add({"_id":8,"host":"localhost:20008","votes":0});
如果要配置超过12个成员的话,需要使用Master/Slave的方式,不过这个方式已经不建议使用了,如果将来副本集能支持更多成员的话,这个方式可能会立即废除。
如果副本集无法达到"大多数"要求的话,可能会无法选出主节点,这个时候,可以shell连接任意一个成员,然后使用force选项强制重新配置,示例如下:
rs.reconfig(config,{"force":true});
可以使用stepDown函数,可以自己指定退化的持续时间,示例如下:
rs.stepDown(); 或者rs.stepDown(60); //秒为单位
如果对主节点进行维护,但不希望这段时间其他节点选举新的主节点,可以在每个备份节点上执行freeze命令,强制他们始终处于备份状态。例如:
rs.freeze(100); //秒为单位,表示冻结多长时间
如果在主节点上执行rs.freeze(0);,可以将退位的主节点重新变为主节点。
当在副本集的某个成员上执行一个非常耗时的功能的话,可以设置该成员进入维护模式,方式如下:db.adminCommand({"replSetMaintenanceMode":true});
要从维护模式中恢复的话,设置为false就可以了。
第40章:MongoDB-集群--Replica Sets(副本集)---副本集的管理的更多相关文章
- 第36章:MongoDB-集群--Replica Sets(副本集)
①副本集 副本集是一种在多台机器同步数据的进程,副本集体提供了数据冗余,扩展了数据可用性.在多台服务器保存数据可以避免因为一台服务器导致的数据丢失.也可以从硬件故障或服务中断解脱出来,利用额外的数据副 ...
- 第39章:MongoDB-集群--Replica Sets(副本集)---副本集基本原理
①操作日志oplog Oplog是主节点的local数据库中的一个固定集合,按顺序记录了主节点的每一次写操作,MongoDB的复制功能是使用oplog来实现的,备份节点通过查询这个集合就可以知道需要进 ...
- 第38章:MongoDB-集群--Replica Sets(副本集)---多机的搭建
①机器环境 182.48.115.236 master-node(主节点) 182.48.115.237 slave-node1(从节点) 182.48.115.238 slave- ...
- 第37章:MongoDB-集群--Replica Sets(副本集)---单机的搭建
①创建副本集 1:先创建几个存放数据的文件夹,比如在前面的dbs下面创建db1,db2,db3: 同理在前面的logs下面创建logs1,logs2,logs3 2:在启动MongoDB服务器的时候, ...
- MongoDB 集群搭建(主从复制、副本及)(五)
六:架构管理 mongodb的主从集群分为两种: 1:master-Slave 复制(主从) --从server不会主动变成主server,须要设置才行 2:replica Sets 复制(副本 ...
- 搭建高可用mongodb集群(三)—— 深入副本集内部机制
在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...
- 搭建高可用mongodb集群(三)—— 深入副本集内部机制
在上一篇文章<搭建高可用mongodb集群(二)-- 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...
- Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- Apache shiro集群实现 (七)分布式集群系统下---cache共享
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
随机推荐
- U3D学习12-黑暗之光实例
1.static勾选后,在scene场景操作后,导致不断烘焙,cpu占用高? 取消自动烘焙 2.UI操作事件 //监听事件增加 mainInputField.onValueChange ...
- Vue todolist练习 知识点
1.localStorage的用法总结 (1).这儿是什么:局部存储器.它是html5新增的一个本地存储API,所谓localStorage就是一个小仓库的意思,它有5M的大小空间,存储在浏览器中,我 ...
- getColor问题
getResource.getColor(R.color.color_name) 过时了,可以使用新加入的方法 ContextCompat.getColor(context, R.color.colo ...
- 判断是否某App
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta name= ...
- JSONObject.fromObject--JSON与对象的转换
1. List集合转换成json代码 List list = new ArrayList(); list.add( "first" ); list.add( "secon ...
- SpringMvc 使用Thumbnails压缩图片
```java @PostMapping(value = "/upLoadFile") @ApiOperation(value = "上传文件") public ...
- Android应用开发中,第三方集成新浪微博(sinaWeiboSDK)的过程记录
作为一个android开发人员,不可避免的要学会使用和集成第三方API的能力 而新浪微博作为现在最主要的新闻速递媒体,使用十分普遍,并且提供了较为详细的API接入方法,故此选择集成sinaWeibiS ...
- 使用Powershell实现计算机名称及IP地址修改
我的第一篇博客分享,写这个代码的用途是在公司Ghost完系统之后去修改本地计算机名称及IP 地址,用Powershell实现. 1. 代码第一部分,检查Powershell是否已管理员权限执行,如果不 ...
- Node.js 初识1
测试:让Node.js运行脚本 1.创建一个脚本 js1.js console.log('测试'); 2.cmd界面 运行脚本
- 学了 Python 能用来做这些!
来源商业新知网,原标题:学了 Python 能用来做什么? 说起编程语言,Python 也许不是使用最广的,但一定是现在被谈论最多的.随着近年大数据.人工智能的兴起,Python 越来越多的出现在人们 ...