一、方法一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. 下载安装Git,学习笔记

    官方地址为:https://git-scm.com/download/win 2.下载完之后,双击安装,全部选择默认. 3.选择安装目录 4.选择组件 5.开始菜单目录名设置  6.选择使用命令行环境 ...

  2. 1185: 零起点学算法92——单词数(C)

    一.题目 http://acm.wust.edu.cn/problem.php?id=1185&soj=0 二.分析 统计的是不同的单词数,即重复的单词只统计一次: 多组输入: 每行不超过10 ...

  3. C++11<functional>深度剖析:背景、原理、接口与实现

    自C++11以来,C++标准每3年修订一次.C++14/17都可以说是更完整的C++11:即将到来的C++20也已经特性完整了. C++11已经有好几年了,它的年龄比我接触C++的时间要长10倍不止吧 ...

  4. 机器学习-LDA主题模型笔记

    LDA常见的应用方向: 信息提取和搜索(语义分析):文档分类/聚类.文章摘要.社区挖掘:基于内容的图像聚类.目标识别(以及其他计算机视觉应用):生物信息数据的应用; 对于朴素贝叶斯模型来说,可以胜任许 ...

  5. TZOJ1299: 畅通工程

    #include<stdio.h> #include<math.h> #include<string.h> #include<algorithm> #i ...

  6. Linux磁盘管理系列 — 磁盘配额管理

    一.磁盘管理的概念 Linux系统是多用户任务操作系统,在使用系统时,会出现多用户共同使用一个磁盘的情况,如果其中少数几个用户占用了大量的磁盘空间,势必压缩其他用户的磁盘的空间和使用权限.因此,系统管 ...

  7. Java Comparable与Comparator区别

    1,两种接口的展示 下面的程序是两个类各自实现了Comparable接口.Comparator接口 package com.cnblogs.mufasa.Solution; import java.u ...

  8. TODO-依赖注入与控制反转

    交互框架之Actor与Listener的关系 https://www.cnblogs.com/mq0036/p/7473371.html

  9. python之匿名函数、递归与二分法

    一.匿名函数 什么是匿名函数? 顾名思义就是没有名字的函数,在我们声明一个函数时会想起个什么函数名好,这个问题我想有时候会困惑大家的吧?   def func(): #正常函数声明 pass prin ...

  10. ubuntu 使用MySQL Workbench 连接远程云服务器mysql

    前提:我的是腾讯云的服务器,所以需要在安全组开发端口. 配置安全组 1.创建新用户 一般为了安全性,我们不直接使用root用户,而是选择创建一个新用户. 在服务器中,输入  mysql -u root ...