mongodb replica sets 测试

单机完成了 replica sets 的部署测试
过程与单机差不多,比较简单

10.239

cd /data/mongodb/mongodb
mkdir data_17 data_18 data_19

bin/mongod --rest --replSet myset --dbpath /data/mongodb/mongodb/data_17 --port 27017 --fork --logpath /data/mongodb/mongodb/data_17/std.log

bin/mongod --rest --replSet myset --dbpath /data/mongodb/mongodb/data_18 --port 27018 --fork --logpath /data/mongodb/mongodb/data_18/std.log

bin/mongod --rest --replSet myset --dbpath /data/mongodb/mongodb/data_19 --port 27019 --fork --logpath /data/mongodb/mongodb/data_19/std.log

cfg={

"_id" : "myset",
"version" : 1,
"members" : [

{

"_id" : 0,
"host" : "192.168.10.239:27018"

},
{

"_id" : 1,
"host" : "192.168.10.239:27019"

},
{

"_id" : 2,
"host" : "192.168.10.239:27017"

},

]

}

bin/mongo

use admin

rs.initiate(cfg)

等待一会,系统紫铜同步完成。 系统会自动仲裁一个master

对其中一个库做
use admin

db.runCommand({fsync:1})

然后另一个开始备份数据文件

mkdir data_20
cp ../data_17/* .

完成后

向集群中追加一个节点

bin/mongod --rest --replSet myset --dbpath /data/mongodb/mongodb/data_20 --fastsync --port 27020 --fork --logpath /data/mongodb/mongodb/data_20/std.log

主意参数加了 --fastsync 选项

master 执行

rs.add("192.168.10.239:27020")

过一会 新节点加入集群。

rs.status()

rs.status()

{

"set" : "myset",
"date" : ISODate("2011-05-31T09:18:29Z"),
"myState" : 2,
"members" : [

{

"_id" : 0,
"name" : "192.168.10.239:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 290,
"optime" : {

"t" : 1306818572000,
"i" : 47

},
"optimeDate" : ISODate("2011-05-31T05:09:32Z"),
"lastHeartbeat" : ISODate("2011-05-31T09:18:29Z")

},
{

"_id" : 1,
"name" : "192.168.10.239:27019",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 2,
"optime" : {

"t" : 1306818572000,
"i" : 47

},
"optimeDate" : ISODate("2011-05-31T05:09:32Z"),
"lastHeartbeat" : ISODate("2011-05-31T09:18:29Z")

},
{

"_id" : 2,
"name" : "192.168.10.239:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"optime" : {

"t" : 1306818572000,
"i" : 47

},
"optimeDate" : ISODate("2011-05-31T05:09:32Z"),
"self" : true

},
{

"_id" : 3,
"name" : "192.168.10.239:27020",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 290,
"optime" : {

"t" : 1306818572000,
"i" : 47

},
"optimeDate" : ISODate("2011-05-31T05:09:32Z"),
"lastHeartbeat" : ISODate("2011-05-31T09:18:29Z")

}

],
"ok" : 1

}

手工关闭master 会自动的重新选出一个master 。

重新启动后,会自动加入到集群中,追加完日志后,状态变为secondery

客户端代码,如果要查询slave 需要指定slaveok()

rs.slaveok()

请使用浏览器的分享功能分享到微信等