①以单机模式启动成员

由于很多维护的工作需要写入操作,所以不合适在副本集中操作,可以以单机模式启动成员,也就是不要使用副本的选项,就跟以前启动单独的服务器一样。一般使用一个跟副本集配置中不一样的端口号,这样其他成员会认为这个服务器挂了。

②副本集的配置

副本集的配置以一个文档的形式保存在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就可以了。

⑧不作为复制源
如果希望都从主节点复制数据,可以把所有的备份成员的allowChaining设置为false
 
 
 
 
 
 
 
 
 
 
 

第40章:MongoDB-集群--Replica Sets(副本集)---副本集的管理的更多相关文章

  1. 第36章:MongoDB-集群--Replica Sets(副本集)

    ①副本集 副本集是一种在多台机器同步数据的进程,副本集体提供了数据冗余,扩展了数据可用性.在多台服务器保存数据可以避免因为一台服务器导致的数据丢失.也可以从硬件故障或服务中断解脱出来,利用额外的数据副 ...

  2. 第39章:MongoDB-集群--Replica Sets(副本集)---副本集基本原理

    ①操作日志oplog Oplog是主节点的local数据库中的一个固定集合,按顺序记录了主节点的每一次写操作,MongoDB的复制功能是使用oplog来实现的,备份节点通过查询这个集合就可以知道需要进 ...

  3. 第38章:MongoDB-集群--Replica Sets(副本集)---多机的搭建

    ①机器环境 182.48.115.236    master-node(主节点) 182.48.115.237    slave-node1(从节点) 182.48.115.238    slave- ...

  4. 第37章:MongoDB-集群--Replica Sets(副本集)---单机的搭建

    ①创建副本集 1:先创建几个存放数据的文件夹,比如在前面的dbs下面创建db1,db2,db3: 同理在前面的logs下面创建logs1,logs2,logs3 2:在启动MongoDB服务器的时候, ...

  5. MongoDB 集群搭建(主从复制、副本及)(五)

    六:架构管理 mongodb的主从集群分为两种: 1:master-Slave 复制(主从)    --从server不会主动变成主server,须要设置才行 2:replica Sets 复制(副本 ...

  6. 搭建高可用mongodb集群(三)—— 深入副本集内部机制

    在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...

  7. 搭建高可用mongodb集群(三)—— 深入副本集内部机制

    在上一篇文章<搭建高可用mongodb集群(二)-- 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...

  8. Apache shiro集群实现 (六)分布式集群系统下的高可用session解决方案---Session共享

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  9. Apache shiro集群实现 (七)分布式集群系统下---cache共享

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

随机推荐

  1. matplotlib绘图总结《转》

    本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 类MATLAB API 最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数. from p ...

  2. linux服务之apache篇(一)

    1.apache介绍:使用率最高的网站服务器: URL:统一资源定位符: 端口:http:80   https:443 2.apache三种工作模式: prefork:一个线程处理一个请求(占用内存多 ...

  3. JOSN转列格式(csv文件)

    推荐网站 https://json-csv.com/ 限制1M大小

  4. 6-安装hbase

    1.前提条件 ①安装zookeeper ②安装hdfs ③由于Hbase对时间的要求比较苛刻,所以3台节点时间必须同步,否则会报错 s10 zookeeper RegionServer HMaster ...

  5. JS数据类型的判断

    在 ECMAScript 规范中,共定义了 7 种数据类型,分为 基本类型 和 引用类型 两大类,如下所示:    基本类型:String.Number.Boolean.Symbol.Undefine ...

  6. centos svn强制要求提交代码时写注释

    1. 重命名svn主目录中hooks的pre-commit.tmpl文件为pre-commit,并添加可执行权限 mv pre-commit.tmpl pre-commit chmod u+x pre ...

  7. python基础数据篇

    1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ? 1 names = ['Alex',"Tenglan",' ...

  8. oracle 创建表,删除表,修改表,查询表

    1,获取当前用户下的所有表信息 =>  SELECT * FROM user_tables 1.1,查询某一张表的字段信息:SELECT  *  FROM user_tab_columns  w ...

  9. C# 调用程序集方法

    加载程序集 (Assembly类) 使用 Assembly 类可以加载程序集.浏览程序集的元数据和构成部分.发现程序集中包含的类型以及创建这些类型的实例 // 加载该路径的程序集 Assembly a ...

  10. String和StringBuilder、StringBuffer的区别

    String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的. String:适用于少量的字符串操作的情况 StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情 ...