mongodb 副本集主从手动切换

IT技术札记 - Smite 的个人博客 记录人生点滴 本文由博客端 https://smite.site 主动推送
本贴最后更新于 525 天前,其中的信息可能已经事过景迁

一、方法一 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[0].priority = 3 //修改 config 变量,第三组成员的优先级为 3.优先级 1-100,数字越大,优先级越高
  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. }
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    82 引用 • 53 回帖 • 1 关注

广告 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...