cfg=rs.config() #获取当前的配置
cfg.members[2].priority=0 #让_id为2的节点优先级降为0
cfg.members[2].hidden=1 #设置此节点隐藏,仅当其优先级为0时有效
rs.reconfig(cfg) #应用配置将_id为2的节点设为隐藏,使得其状态不被rs.isMaster看到,但它可以被rs.status()看到。
接着,在mongo shell插入一个文档:
for(i=0;i<1000;i++){test.coll.insert({count:i})}
db.coll.count() #测试插入文档是否成功
1000
然后检查备份节点上的情况:
new Mongo("host2:27017")
db.coll.count()
1000
说明在host2上的数据库也更新了。
然后,尝试将host1上的mongod进程宕掉,这种情况在实际生产中可能出现,查看host2和host3的情况:
在host1的bash上:
sudo bin/mongod --shutdown
killing process with pid: 15910
然后登陆host2上的mongo shell,发现提示符已经变为:setname>primary 表示host2已经变为主节点,在host2上db.coll.count()得到1000,表示备份的数据还在。
重新使用之前的集群配置文件来启动mongod -f mongo.conf ,发现提示符为setname:SECONDARY>表示其变为备份节点,在host2上用rs.isMaster()测试显示:
"setName" : "clover",
"setVersion" : 9,
"ismaster" : true,
"secondary" : false,
"hosts" : [
"host1:27017",
"host2:27017"
],
"passives" : [
"host3:27017"
],
"primary" : "host2:27017",
"me" : "zookeeper2:27017",<
副本集重新变为3台主机。host2仍为主节点,host3因为设置优先级为0变为消极(passives)状态,它不会被选为主节点。
更多MongoDB相关教程见以下内容:
CentOS 编译安装 MongoDB与mongoDB的php扩展
CentOS 6 使用 yum 安装MongoDB及服务器端配置
Ubuntu 13.04下安装MongoDB2.4.3
《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]
基于CentOS 6.5操作系统搭建MongoDB服务 uxidc.com/Linux/2014-11/108900.htm