一、方法一rs.setpDown()

将Primary节点降级为Secondary节点

myapp:PRIMARY> rs.stepDown()

这个命令会让primary降级为Secondary节点,并维持60s,如果这段时间内没有新的primary被选举出来,这个节点可以要求重新进行选举。

也可手动指定时间

myapp:PRIMARY> rs.stepDown(30)

在执行完该命令后,原Secondary node3:27017升级为Primary。

二、方法二优先级设置

思路:
1.为了保证数据的一致性,必须先关闭应用的写服务。
2.提升要升级为Primary节点的Secondary节点的优先级。

操作如下:

点击(此处)折叠或打开

  1. arps:PRIMARY> config=rs.conf()                //查看当前配置,存入config变量中。
  2. arps:PRIMARY> config.members[2].priority = 3  //修改config变量,第三组成员的优先级为3.
  3. arps:PRIMARY> rs.reconfig(config)             //配置生效
  4. ......
  5. ......
  6. 2017-12-22T15:19:56.596+0800 I NETWORK trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
  7. 2017-12-22T15:19:56.597+0800 I NETWORK reconnect 127.0.0.1:27017 (127.0.0.1) ok
  8. arps:SECONDARY> rs.conf()                    //查看当前配置
  9. {
  10. "_id" : "arps",
  11. "version" : 4,
  12. "members" : [
  13. {
  14. "_id" : 0,
  15. "host" : "172.17.4.37:27017",
  16. "arbiterOnly" : false,
  17. "buildIndexes" : true,
  18. "hidden" : false,
  19. "priority" : 1,
  20. "tags" : {
  21. },
  22. "slaveDelay" : 0,
  23. "votes" : 1
  24. },
  25. {
  26. "_id" : 1,
  27. "host" : "172.17.4.38:27017",
  28. "arbiterOnly" : false,
  29. "buildIndexes" : true,
  30. "hidden" : false,
  31. "priority" : 1,
  32. "tags" : {
  33. },
  34. "slaveDelay" : 0,
  35. "votes" : 1
  36. },
  37. {
  38. "_id" : 2,
  39. "host" : "172.17.4.39:27017",
  40. "arbiterOnly" : false,
  41. "buildIndexes" : true,
  42. "hidden" : false,
  43. "priority" : 3,             //优先级变为3
  44. "tags" : {
  45. },
  46. "slaveDelay" : 0,
  47. "votes" : 1
  48. }
  49. ],
  50. "settings" : {
  51. "chainingAllowed" : true,
  52. "heartbeatTimeoutSecs" : 10,
  53. "getLastErrorModes" : {
  54. },
  55. "getLastErrorDefaults" : {
  56. "w" : 1,
  57. "wtimeout" : 0
  58. }
  59. }
  60. }
  61. arps:SECONDARY> rs.status()
  62. {
  63. "set" : "arps",
  64. "date" : ISODate("2017-12-22T07:25:04.641Z"),
  65. "myState" : 2,
  66. "syncingTo" : "172.17.4.39:27017",
  67. "members" : [
  68. {
  69. "_id" : 0,
  70. "name" : "172.17.4.37:27017",
  71. "health" : 1,
  72. "state" : 2,
  73. "stateStr" : "SECONDARY",
  74. "uptime" : 7597536,
  75. "optime" : Timestamp(1513927481, 3),
  76. "optimeDate" : ISODate("2017-12-22T07:24:41Z"),
  77. "syncingTo" : "172.17.4.39:27017",
  78. "configVersion" : 4,
  79. "self" : true
  80. },
  81. {
  82. "_id" : 1,
  83. "name" : "172.17.4.38:27017",
  84. "health" : 1,
  85. "state" : 2,
  86. "stateStr" : "SECONDARY",
  87. "uptime" : 7597426,
  88. "optime" : Timestamp(1513927481, 3),
  89. "optimeDate" : ISODate("2017-12-22T07:24:41Z"),
  90. "lastHeartbeat" : ISODate("2017-12-22T07:25:02.961Z"),
  91. "lastHeartbeatRecv" : ISODate("2017-12-22T07:25:04.091Z"),
  92. "pingMs" : 0,
  93. "syncingTo" : "172.17.4.39:27017",
  94. "configVersion" : 4
  95. },
  96. {
  97. "_id" : 2,
  98. "name" : "172.17.4.39:27017",
  99. "health" : 1,
  100. "state" : 1,
  101. "stateStr" : "PRIMARY",    //最后一个节点升级为PRIMARY
  102. "uptime" : 3202,
  103. "optime" : Timestamp(1513927481, 3),
  104. "optimeDate" : ISODate("2017-12-22T07:24:41Z"),
  105. "lastHeartbeat" : ISODate("2017-12-22T07:25:02.951Z"),
  106. "lastHeartbeatRecv" : ISODate("2017-12-22T07:25:04.344Z"),
  107. "pingMs" : 0,
  108. "electionTime" : Timestamp(1513927190, 2),
  109. "electionDate" : ISODate("2017-12-22T07:19:50Z"),
  110. "configVersion" : 4
  111. }
  112. ],
  113. "ok" : 1
  114. }
 
整理自:
https://www.cnblogs.com/ivictor/p/6804408.html
http://blog.chinaunix.net/uid-26446098-id-5781440.html

MongoDB 副本集主从切换方法的更多相关文章

  1. mongodb副本集自动切换修复节点解决方案

    副本集部署 1.启动mongod 在每台运行mongod服务的机器上增加配置文件/etc/mongodb-rs.conf,内容为: [root@MongodbF-A etc]# vi /etc/mon ...

  2. mongodb replication set 主从切换

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

  3. mongodb副本集高可用架构

    一.简介 Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点. Mongodb Driver(客户端)的所有数据都写入Primary,Sec ...

  4. mongodb副本集实现

    目录 1. 简单介绍 primary: secondary: arbiter: 2.系统环境设置: 3.安装mongodb 安装mongodb 增加配置文件: 添加启动脚本 3. 副本集实现: 1. ...

  5. MongoDB 副本集的原理、搭建、应用

    概念: 在了解了这篇文章之后,可以进行该篇文章的说明和测试.MongoDB 副本集(Replica Set)是有自动故障恢复功能的主从集群,有一个Primary节点和一个或多个Secondary节点组 ...

  6. 创建mongodb副本集操作实例

    一:概念 相关概念及图片引用自这里 mongodb副本集: 副本集是一组服务器,其中一个是主服务器,用于处理客户请求:还有多个备份服务器,用于保存主服务器的数据副本.如果主服务器崩溃了,备份服务器自动 ...

  7. nodejs+mongoose操作mongodb副本集实例

    继上一篇设置mongodb副本集之后,开始使用nodejs访问mongodb副本集: 1:创建项目     express 项目名称 2:npm install mongoose    安装mongo ...

  8. linux上安装MongoDB副本集(带keyfile安全认证以及用户权限)

    搭建前准备 MongoDB版本:4.0 主要参考搭建MongoDB副本集网站:https://www.jianshu.com/p/f021f1f3c60b 安装之前最好先确定一下几点: 防火墙关闭 M ...

  9. MongoDB副本集(一主两从)读写分离、故障转移功能环境部署记录

    Mongodb是一种非关系数据库(NoSQL),非关系型数据库的产生就是为了解决大数据量.高扩展性.高性能.灵活数据模型.高可用性.MongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模 ...

随机推荐

  1. 机器学习之softmax回归笔记

    本次笔记绝大部分转自https://www.cnblogs.com/Luv-GEM/p/10674719.html softmax回归 Logistic回归是用来解决二类分类问题的,如果要解决的问题是 ...

  2. Linux查询命令帮助信息(知道)

    方法一 command --help 方法二 man command 操作涉及到的按键: 空格键:显示手册的下一屏 Enter键:一次滚动手册的一行 b:回滚一屏 f:前滚一屏 q:退出 结果基本上全 ...

  3. 基于socketserver实现并发的socket套接字编程

    一.基于TCP协议 基于tcp的套接字,关键就是两个循环,一个链接循环,一个通信循环 socketserver模块中分两大类:server类(解决链接问题)和request类(解决通信问题) 1.1 ...

  4. SRID (空间引用识别号, 坐标系)【转】

    SRID (空间引用识别号, 坐标系)-云栖社区-阿里云 Spatial Reference List -- Spatial Reference Chapter 8. PostGIS Referenc ...

  5. [Luogu5324][BJOI2019]删数(线段树)

    CF风格题,先猜结论,记数列中i这个数共出现了cnt[i]次,那么所有区间[i-cnt[i]+1,i]的并集的补集大小就是答案. 于是我们只需要线段树维护每个位置是否被某个区间覆盖到即可,对于整体加减 ...

  6. js基本用法

    1. 在HTML里面加入JavaScript 方法非常简单,就是通过一对<script></script>标签,然后在标签里面书写代码即可 2. 标签位置 按照以前传统的方法, ...

  7. JacksonJson的使用

    JacksonJson是SpringMVC内置的json处理工具,其中有一个ObjectMapper类,可以方便的实现对json的处理: //对象转字符串 // json处理工具 private Ob ...

  8. weblogic jdbc 相关概念介绍

    weblogic jdbc 是什么? 如何配置? 常见问题? 如何监控?

  9. IO模型之BIO代码详解及其优化演进

    一.BIO简介 BIO是java1.4之前唯一的IO逻辑,在客户端通过socket向服务端传输数据,服务端监听端口.由于传统IO读数据的时候如果数据没有传达,IO会一直等待输入传入,所以当有请求过来的 ...

  10. C#为什么要装箱和拆箱

    来自论坛4楼的回答非常棒,地址:https://bbs.csdn.net/topics/390624164?page=1 内容如下: 道理很简单,按理说C#被设计成一种完全面向对象的语言.因此,包括数 ...