MongoDB添加删除节点及主节点切换
方法:
添加节点命令
>rs.add({_id:3,host:’127.0.0.1:27020’})
>rs.add({_id:4,host:’127.0.0.1:27021’,arbiterOnly:true})
 
另外一种添加节点:
primary>config=rs.conf()
primary>config.members=[{_id:5,host:"127.0.0.1:27023"},config.members[5],{priority:5}] #增加新节点,并使成为主节点。
primary>rs.reconfig(config)
 
删除节点
>rs.remove(“127.0.0.1:27020”)
删除节点:
必须在主节点上操作:
PRIMARY>rs.remove(“127.0.0.1:27020”)
操作完毕后登陆27020
Mongo 127.0.0.1:27020
STARTUP2>use admin
STARTUP2>db.shutdownServer()
删除节点的令外一种办法:
primary>config=rs.conf()
primary>config.members=[config.members[0],config.members[2],config.members[3]]
primary>rs.reconfig(config,{force:ture})  使配置强制生效。
 
mongodb replica强制切换primary有2种办法:
1.
primary>config = {_id:'myset',members: [
{_id:0,host:"127.0.0.1:27017",priority:1},
{_id:1,host:"127.0.0.1:27018",priority:2},
{_id:2,host:"127.0.0.1:27019",priority:1,arbiterOnly:true}]}
primary>rs.reconfig(config)
secondary>(显示为secondary,则证明切换成功。)
more:
http://docs.mongodb.org/manual/administration/replica-sets/#replica-set-admin-procedure-add-member
2.
 
primary>config=rs.conf()
primary>config.members[1].priority=2
primary>rs.reconfig(config)
secondary> 切换成功。
 
操作:
 
User2:PRIMARY> config=rs.conf()
{
"_id" : "User2",
"version" : 2,
"members" : [
{
"_id" : 0,
"host" : "User21:20011"
},
{
"_id" : 1,
"host" : "User22:20011"
},
{
"_id" : 2,
"host" : "arbiter2:20012",
"arbiterOnly" : true
},
{
"_id" : 3,
"host" : "User22:20013"
}
]
}
User2:PRIMARY> config.members[0].priority=1
1
User2:PRIMARY> rs.reconfig(config)
{ "ok" : 1 }
User2:PRIMARY> config.members[0].priority=2
2
User2:PRIMARY> rs.reconfig(config)
Fri Nov 16 10:46:04 DBClientCursor::init call() failed
Fri Nov 16 10:46:04 query failed : admin.$cmd { replSetReconfig: { _id: "User2", version: 4, members: [ { _id: 0, host: "User21:20011", priority: 2.0 }, { _id: 1, host: "User22:20011" }, { _id: 2, host: "arbiter2:20012", arbiterOnly: true }, { _id: 3, host: "User22:20013" } ] } } to: 127.0.0.1:20011
Fri Nov 16 10:46:04 trying reconnect to 127.0.0.1:20011
Fri Nov 16 10:46:04 reconnect 127.0.0.1:20011 ok
reconnected to server after rs command (which is normal)
 
 
日志:
arbiter:
Fri Nov 16 10:46:06 [rsMgr] replset msgReceivedNewConfig version: version: 4
Fri Nov 16 10:46:06 [rsMgr] replSet info saving a newer config version to local.system.replset
Fri Nov 16 10:46:06 [rsMgr] replSet saveConfigLocally done
Fri Nov 16 10:46:06 [rsMgr] replSet replSetReconfig new config saved locally
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member User22:20011 is up
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member User22:20013 is up
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member User22:20011 is now in state PRIMARY
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member User22:20013 is now in state SECONDARY
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member User21:20011 is up
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member User21:20011 is now in state SECONDARY
Fri Nov 16 10:46:07 [rsHealthPoll] ERROR: Client::shutdown not called: rsHealthPoll
Fri Nov 16 10:46:08 [rsHealthPoll] ERROR: Client::shutdown not called: rsHealthPoll
Fri Nov 16 10:46:08 [rsHealthPoll] ERROR: Client::shutdown not called: rsHealthPoll
Fri Nov 16 10:46:18 [rsMgr] stepping down User22:20011 (priority 1), User21:20011 is priority 2 and 0 seconds behind
Fri Nov 16 10:46:20 [rsHealthPoll] replSet member User22:20011 is now in state SECONDARY
Fri Nov 16 10:46:20 [rsMgr] stepping down User22:20011 (priority 1), User21:20011 is priority 2 and 0 seconds behind
Fri Nov 16 10:46:20 [rsMgr] stepping down User22:20011 failed: { errmsg: "not primary so can't step down", ok: 0.0 }
Fri Nov 16 10:46:25 [conn4197] replSet info voting yea for User21:20011 (0)
Fri Nov 16 10:46:26 [rsHealthPoll] replSet member User21:20011 is now in state PRIMARY
 
 
mongod
Fri Nov 16 10:46:04 [rsBackgroundSync] Socket recv() errno:104 Connection reset by peer 172.17.13.28:20011
Fri Nov 16 10:46:04 [rsBackgroundSync] SocketException: remote: 172.17.13.28:20011 error: 9001 socket exception [1] server [172.17.13.28:20011]
Fri Nov 16 10:46:04 [rsBackgroundSync] Socket flush send() errno:32 Broken pipe 172.17.13.28:20011
Fri Nov 16 10:46:04 [rsBackgroundSync]   caught exception (socket exception [SEND_ERROR] for 172.17.13.28:20011) in destructor (~PiggyBackData)
Fri Nov 16 10:46:04 [rsSyncNotifier] Socket recv() errno:104 Connection reset by peer 172.17.13.28:20011
Fri Nov 16 10:46:04 [rsBackgroundSync] replSet db exception in producer: 10278 dbclient error communicating with server: User22:20011
Fri Nov 16 10:46:04 [rsSyncNotifier] SocketException: remote: 172.17.13.28:20011 error: 9001 socket exception [1] server [172.17.13.28:20011]
Fri Nov 16 10:46:04 [rsSyncNotifier] replset tracking exception: exception: 10278 dbclient error communicating with server: User22:20011
Fri Nov 16 10:46:05 [rsSyncNotifier] replset setting oplog notifier to User22:20011
Fri Nov 16 10:46:05 [rsSyncNotifier] Socket flush send() errno:32 Broken pipe 172.17.13.28:20011
Fri Nov 16 10:46:05 [rsSyncNotifier]   caught exception (socket exception [SEND_ERROR] for 172.17.13.28:20011) in destructor (~PiggyBackData)
Fri Nov 16 10:46:06 [rsMgr] replset msgReceivedNewConfig version: version: 4
Fri Nov 16 10:46:06 [rsMgr] replSet info saving a newer config version to local.system.replset
Fri Nov 16 10:46:06 [rsMgr] replSet saveConfigLocally done
Fri Nov 16 10:46:06 [rsMgr] replSet replSetReconfig new config saved locally
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member User22:20011 is up
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member User22:20011 is now in state PRIMARY
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member arbiter2:20012 is up
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member arbiter2:20012 is now in state ARBITER
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member User21:20011 is up
Fri Nov 16 10:46:06 [rsHealthPoll] replSet member User21:20011 is now in state SECONDARY
Fri Nov 16 10:46:06 [rsHealthPoll] ERROR: Client::shutdown not called: rsHealthPoll
Fri Nov 16 10:46:06 [rsHealthPoll] ERROR: Client::shutdown not called: rsHealthPoll
Fri Nov 16 10:46:08 [rsHealthPoll] ERROR: Client::shutdown not called: rsHealthPoll
Fri Nov 16 10:46:14 [rsBackgroundSync] replSet syncing to: User22:20011
Fri Nov 16 10:46:18 [rsBackgroundSync] replSet db exception in producer: 10278 dbclient error communicating with server: User22:20011
Fri Nov 16 10:46:18 [rsHealthPoll] replSet member User22:20011 is now in state SECONDARY
Fri Nov 16 10:46:18 [rsMgr] not electing self, arbiter2:20012 would veto
Fri Nov 16 10:46:24 [rsMgr] not electing self, arbiter2:20012 would veto
Fri Nov 16 10:46:25 [conn503] replSet info voting yea for User21:20011 (0)
Fri Nov 16 10:46:26 [rsHealthPoll] replSet member User21:20011 is now in state PRIMARY
Fri Nov 16 10:46:28 [rsBackgroundSync] replSet syncing to: User21:20011

One Response


    还没有评论!
1  

Leave your comment

请留下您的姓名(*)

请输入正确的邮箱地址(*)

请输入你的评论(*)


感谢开源 © 2016. All rights reserved.&3Q Open Source&^_^赣ICP备15012863号-1^_^
乐于分享共同进步 KreativeThemes