今天被问到mongodb副本集主从切换的问题,然后发现没有相关命令的中文文档,这里翻译记录一下

rs.stepDown()

rs.stepDown(stepDownSecs, secondaryCatchUpPeriodSecs)

指示副本集的主节点(primary node)成为从节点(secondary)。在主节点结束后,合格的从节点将会举行选举。

该方法不会立即结束主节点。如果从节点中没有与主节点保持同步的节点,则主节点会等待secondaryCatchUpPeriodSecs(默认为10秒)以便从节点赶上。一旦出现可选择的从节点,该方法就会降级主节点。

一旦降级,原来的主节点成为从节点的,并且不再有资格在stepDownSecs指定的剩余时间内再次成为主节点。

注意

该方法仅对主节点有效,如果在非主节点上运行,则会引发错误。

执行过程:

rs.stepDown()方法尝试终止长时间运行的用户操作,因为这些操作会阻止主服务器降级,如索引构建,写入操作或map-reduce作业。

然后该方法启动一个追赶期,在此期间会等待SecondaryCatchUpPeriodSeconds所指定的时间(默认为10秒),使从节点追上主节点,变为最新。主节点只有在从节点追上主节点的时候才会进行降级操作,以此来防止回滚。

如果在等待期结束时没有从节点符合此标准,则主节点不会降级,并且抛出方法错误。

一旦主节点降级成功,该节点就不能在stepDownSecs所指定的时间内再次成为主节点,这个时间从节点开始接收到方法开始。 rs.stepDown()方法强制当前连接到数据库的所有客户端断开连接。这有助于确保客户端与副本集维持一个的准确视图(view)。

由于断开连接包括用于运行方法的连接,因此如果方法成功完成,则无法检索方法的返回状态。如果错误发生,您只能检索方法的返回状态。在脚本中运行该方法时,脚本应考虑此行为。

注意

在接收到rs.stepDown()方法开始的时间段内,所有写入主节点的写入操作都会失败,直到选出新的主节点或者没有可用的从节点为止,原来的主节点才会恢复正常操作。写入失败的时间最长:

secondaryCatchUpPeriodSecs(默认为10秒)+ electionTimeoutMillis(默认为10秒)。

原文地址:https://docs.mongodb.com/manual/reference/method/rs.stepDown/

mongodb replication set 主从切换的更多相关文章

  1. MySQL Replication之主从切换

    在生产环境中,我们的架构很多都是一主多从.比如一个主数据库服务器M,两个从数据库服务器S1,S2同时指向主数据库服务器M.当主服务器M因为意外情况宕机,需要将其中的一个从数据库服务器(假设选择S1)切 ...

  2. mongodb主从备份 和 手动主从切换

    环境: 主机A:172.16.160.91 主机B:172.16.160.92 配置主机A [root@master zhxf]# cat docker-compose.yml version: '3 ...

  3. Mycat读写分离、主从切换、分库分表的操作记录

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  4. redis 主从配置,主从切换

    只需修改从配置文件 # slaveof <masterip> <masterport> slaveof 127.0.0.1 6379 # masterauth <mast ...

  5. Redis哨兵模式(sentinel)部署记录(主从复制、读写分离、主从切换)

    部署环境: CentOS7.5  192.168.94.11 (master) 192.168.94.22 (slave0) 192.168.94.33 (slave1) 192.168.94.44 ...

  6. Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

    Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍Sentinel ...

  7. PostgreSQL手动主从切换

    主从切换操作: 1>主库宕机或者测试主备切换情况下停掉主库:systemctl stop postgres 从库会报日志错误信息:[root@db02 /]# cd /var/postgresq ...

  8. Redis集群的主从切换研究

    目录 目录 1 1. 前言 1 2. slave发起选举 2 3. master响应选举 5 4. 选举示例 5 5. 哈希槽传播方式 6 6. 一次主从切换记录1 6 6.1. 相关参数 6 6.2 ...

  9. Mycat读写分离、主从切换学习(转)

    http://blog.csdn.net/zhanglei_16/article/details/50707487 Mycat读写分离.主从切换学习问题一:分表.分库的优缺点,以及分表无法成为主流分表 ...

随机推荐

  1. 解决Eclipse Debug 断点调试的source not found问题

    写完代码进行调试的时候,经常会用到断点调试,一步步检测问题,但有时候eclipse有时候无法进入断点,这样就失去了断点的意义,原因是debug无法找到该项目的源代码,解决方法如下 1,打开debug ...

  2. 安装oracle客户端后,怎样设置电脑的环境变量?

    安装配置参考: http://www.haodaima.net/art/2854001 设置环境变量(修改PATH和TNS_ADMIN环境变量): 对于NLS_LANG环境变量, 最好设置成和数据库端 ...

  3. C# 创建Windows Service(Windows服务)程序

    本文介绍了如何用C#创建.安装.启动.监控.卸载简单的Windows Service 的内容步骤和注意事项. 一.创建一个Windows Service 1)创建Windows Service项目 2 ...

  4. python绑定调用和非绑定调用

    绑定调用和非绑定调用 在python中,绑定调用和非绑定调用其实是相对于类和实例来说的.抽象点说就是:在类实例化过程中,类的方法会绑定在实例之中,此时,这个实例会拥有这个类的具体属性和方法,这些属性和 ...

  5. 2017 青岛网络赛 Chenchen, Tangtang and ZengZeng

    Chenchen, Tangtang and ZengZeng are starting a game of tic-tac-toe, played on a 3 × 3 board. Initial ...

  6. 数据库建表并返回给前端 - (mysql-thinkphp) (3)

    1.先建一个表,你可以用mysql代码建,也可以用thinkphp建,也可以视图建,我用不到太复杂的,就用视图建了. 2.配置id为自增,唯一的值,不可重复.主键.要输入中文的选择utf8_gener ...

  7. Kubernetes 各版本镜像列表

    以下镜像列表由 kubeadm v1.11.1 导出,若使用预下载镜像离线部署的方式部署,请使用 kubeadm v1.11.1 版本 导出各版本镜像列表: kubeadm config images ...

  8. c语言查漏补缺

    getchar:执行getchar()函数时,首先从输入缓存区读取字符,直到输入缓存区为空时才等待从键盘继续输入.scanf()之间不要有printf操作. 逗号表达式 a= (++a,1,2),只取 ...

  9. Day8 - B - Non-Secret Cypher CodeForces - 190D

    Berland starts to seize the initiative on the war with Flatland. To drive the enemy from their nativ ...

  10. 047、Java中使用if…else if…else判断

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...