cd红丸 发表于 2012-09-27 21:39

[原创] 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]
查看完整版本: [原创] MongoDB管理与开发精要《红丸出品》21.4.2 管理维护Replica Sets之故障转移