ersion" : 1
},
{
"_id" : 3,
"name" : "192.168.66.89:60144",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 15,
"optime" : Timestamp(1431047920, 1),
"optimeDate" : ISODate("2015-05-08T01:18:40Z"),
"lastHeartbeat" : ISODate("2015-05-08T01:18:53.650Z"),
"lastHeartbeatRecv" : ISODate("2015-05-08T01:18:53.649Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "could not find member to sync from",
"configVersion" : 1
}
],
"ok" : 1
}
二、测试
1、主节点写入数据,其他节点查询
repl:PRIMARY> use mtdamai;
switched to db mtdamai
repl:PRIMARY> db.user.insert({name:"wangxiuli"});
WriteResult({ "nInserted" : 1 })
repl:PRIMARY> db.user.find();
{ "_id" : ObjectId("554c237123db30ab1a233e4b"), "name" : "wangxiuli" }
#备节点查询发现已有数据
repl:SECONDARY> use mtdamai;
switched to db mtdamai
repl:SECONDARY> db.user.find();
{ "_id" : ObjectId("554c237123db30ab1a233e4b"), "name" : "wangxiuli" }
2、停止主节点
repl:SECONDARY> rs.status();
{
"set" : "repl",
"date" : ISODate("2015-05-08T02:51:25.273Z"),
"myState" : 2,
"members" : [
{
"_id" : 1,
"name" : "192.168.66.89:40144",
"health" : 0,
"state" : 8,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2015-05-08T02:51:23.984Z"),
"lastHeartbeatRecv" : ISODate("2015-05-08T02:50:55.975Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "Failed attempt to connect to 192.168.66.89:40144; couldn't connect to server 192.168.66.89:40144 (192.168.66.89), connection attempt failed",
"configVersion" : -1
},
{
"_id" : 2,
"name" : "192.168.66.89:50144",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 5563,
"optime" : Timestamp(1431053169, 2),
"optimeDate" : ISODate("2015-05-08T02:46:09Z"),
"lastHeartbeat" : ISODate("2015-05-08T02:51:24.227Z"),
"lastHeartbeatRecv" : ISODate("2015-05-08T02:51:24.120Z"),
"pingMs" : 0,
"electionTime" : Timestamp(1431053458, 1),
"electionDate" : ISODate("2015-05-08T02:50:58Z"),
"configVersion" : 1
},
{
"_id" : 3,
"name" : "192.168.66.89:60144",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 5733,
"optime" : Timestamp(1431053169, 2),
"optimeDate" : ISODate("2015-05-08T02:46:09Z"),
"configVersion" : 1,
"self" : true
}
],
"ok" : 1
}
#发现主节点已经重新被选出
再来插入数据验证
repl:PRIMARY> db.user.insert({name:"chenglong"});
WriteResult({ "nInserted" : 1 })
repl:PRIMARY> db.user.find();
{ "_id" : ObjectId("554c237123db30ab1a233e4b"), "name" : "wangxiuli" }
{ "_id" : ObjectId("554c25202dcdffb154643e56"), "name" : "chenglong" }
#验证备节点不可写
repl:SECONDARY> db.user.insert({name:"liudehua"});
WriteResult({ "writeError" : { "code" : undefined, "errmsg" : "not master" } })
#查询数据已存在,说明数据已同步到其他节点
repl:SECONDARY> use mtdamai;
switched to db mtdamai
repl:SECONDARY> db.user.find();
Error: error: { "$err" : "not master and slaveOk=false", "code" : 13435 }
repl:SECONDARY> rs.slaveOk();
repl:SECONDARY> db.user.find();
{ "_id" : ObjectId("554c237123db30ab1a233e4b"), "name" : "wangxiuli" }
{ "_id" : ObjectId("554c25202dcdffb154643e56"), "name" : "chenglong" }
#再次启动被关闭的节点,该节点变为secondary
repl:SECONDARY> rs.status();
{
"set" : "repl",
"date" : ISODate("2015-05-08T07:54:20.607Z"),