一、方法一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. closed channel

    func Test_chanel(t *testing.T) { c := make(chan int, 1) go func() { time.Sleep(time.Second * 3) clos ...

  2. 『Python基础』第5节:条件控制

    if 语句的使用 单分支 if 条件: 满足条件后要执行的代码 例如: if 2 < 3: print(222) print(333) 每个条件后面都要使用冒号 :, 表示接下来是满足条件后要执 ...

  3. Java常用函数式接口--Supplier接口使用案例

    使用案例:

  4. IDEA/WebStorm使用笔记

    1.使用powershell作为默认终端 #改变powershell策略 Set-ExecutionPolicy Unrestricted -Scope CurrentUser 找到系统的powers ...

  5. 如何升级centos7 内核方法

    关于内核说明: 版本性质:主分支ml(mainline),稳定版(stable),长期维护lt(longterm) 版本命名格式:“A.B.C" A代表内核版本号 B代表内核主版本号 C代表 ...

  6. 【转】Java最常见的200+面试题

    今天看到一份面试题总结,感觉很到位,主要包括以下模块:Java基础.容器.多线程.反射.对象拷贝.Java Web模块,异常.网络.设计模式.Spring/Spring MVC .Spring Boo ...

  7. JavaScript内置一些方法的实现原理--Object.freeze()、instanceof

    const定义的常量,一般是不能修改的. 比如: const TIME_OUT = 10000; 但是当值为引用类型值时,还是可以操作对象,扩展或修改对象属性.方法等等. 以下演示代码的操作是不会报错 ...

  8. 开始Swift学习之路

    Swift出来好几个月了,除了同事分享点知识外,对swift还真没有去关心过.GitHub上整理的学习Swift资料还是很不错的,目前也推出了电子书和PDF格式. Swift的语法和我们平常开发的语言 ...

  9. 小程序npm构建

    npm initnpm install --productionnpm i  第三方组件名称  -S --production //重要

  10. shell 大型脚本工具开发实战

    拆分脚本功能,抽象函数 1.function get_all_group 返回进程组列表字符串 2.function get_all_process 返回进程名列表字符串"nginx htt ...