有一个复制集由一个primary和三个sencondary组成
primary:10.0.1.32
secondary:10.0.1.31 、10.0.1.33、192.168.1.230
rs.status()显示
rs.status()
{
......
"members" : [
{
"_id" : 0,
"name" : "10.0.1.31:27017",
"health" : 1,
"state" : 1,
"stateStr" : "SECONDARY",
......
},
{
"_id" : 1,
"name" : "10.0.1.32:27017",
"health" : 1,
"state" : 5,
"stateStr" : "PRIMARY",
......
},
{
"_id" : 2,
"name" : "192.168.1.230:27017",
"health" : 1,
"state" : 5,
"stateStr" : "SECONDARY",
......
},
{
"_id" : 3,
"name" : "10.0.1.33:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
......
}
],
"ok" : 1
}
切换目标:31升级为primary,32降级为secondary
primary:10.0.1.31 secondary:10.0.1.32 、10.0.1.33、192.168.1.230 切换步骤(均在mongodb shell上执行)
1、primary上设定各个节点优先级
cfg = rs.conf()
cfg.members[0].priority = 1
cfg.members[1].priority = 0.5
cfg.members[2].priority = 0.5
cfg.members[3].priority = 0.5
rs.reconfig(cfg)
2、33和230节点上执行rs.freeze(120)命令,阻止其在120秒内成为primary节点
rs.freeze(120)
3、primary上执行降级命令,使其120秒内不再成为primary
rs.stepDown(120)
4、观察31节点发现已经成为primary
rs.status()
{
......
"members" : [
{
"_id" : 0,
"name" : "10.0.1.31:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
......
},
{
"_id" : 1,
"name" : "10.0.1.32:27017",
"health" : 1,
"state" : 5,
"stateStr" : "SECONDARY",
......
},
{
"_id" : 2,
"name" : "192.168.1.230:27017",
"health" : 1,
"state" : 5,
"stateStr" : "SECONDARY",
......
},
{
"_id" : 3,
"name" : "10.0.1.33:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
......
}
],
"ok" : 1
}
切换成功