[原创] MongoDB管理与开发精要《红丸出品》21.4.2 管理维护Replica Sets之故障转移
本帖最后由 cd红丸 于 2012-09-27 21:40 编辑http://blog.chinaunix.net/attachment/201205/26/26785103_1338009683Kvjx.jpg21.4.2故障转移复制集比传统的Master-Slave有改进的地方就是他可以进行故障的自动转移,如果我们停掉复制集中的一个成员,那么剩余成员会再自动选举出一个成员,做为主库,例如:我们将28010这个主库停掉,然后再看一下复制集的状态
1、杀掉28010端口的MongoDB
bin]# ps aux|grep mongodroot 67061.66.9 4633046168 Sl 21:49 0:26 /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r0 --fork --port 28010root 67330.46.7 4305286044 ? Sl 21:50 0:06 /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r1 --fork --port 28011root 67470.44.7 4315484260 ? Sl 21:50 0:06 /Apps/mongo/bin/mongod --replSet rs1 --keyFile /data/key/r2 --fork --port 28012root 70190.00.7 5064 684 pts/2 S+ 22:16 0:00 grep mongod# kill -9 6706
1、查看复制集状态
# ./mongo --port 28011MongoDB shell version: 1.8.1connecting to: 127.0.0.1:28011/testrs1:SECONDARY> rs.status(){ "set" : "rs1", "date" : ISODate("2012-05-31T14:17:03Z"), "myState" : 2, "members" : [ { "_id" : 0, "name" : "localhost:28010", "health" : 0, "state" : 1, "stateStr" : "(not reachable/healthy)", "uptime" : 0, "optime" : { "t" : 1338472279000, "i" : 1 }, "optimeDate" : ISODate("2012-05-31T13:51:19Z"), "lastHeartbeat" : ISODate("2012-05-31T14:16:42Z"), "errmsg" : "socket exception" }, { "_id" : 1, "name" : "localhost:28011", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "optime" : { "t" : 1338472279000, "i" : 1 }, "optimeDate" : ISODate("2012-05-31T13:51:19Z"), "self" : true }, { "_id" : 2, "name" : "localhost:28012", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 1528, "optime" : { "t" : 1338472279000, "i" : 1 }, "optimeDate" : ISODate("2012-05-31T13:51:19Z"), "lastHeartbeat" : ISODate("2012-05-31T14:17:02Z") } ], "ok" : 1}rs1:SECONDARY>
可以看到28010这个端口的MongoDB出现了异常,而系统自动选举了28012这个端口为主,所以这样的故障处理机制,能将系统的稳定性大大提高。
免费IT培训(ChinaDBA.net)实践者!学费1元,全捐公益
http://service.t.sina.com.cn/widget/qmd/2446082491/9e768382/1.png
页:
[1]