副本集的概念
副本集是一组服务器,其中有一个是主服务器(primary),用于处理客户端请求;还有多个备份服务器(secondary),用于保存主服务器的数据副本。如果主服务器崩溃了,备份服务器会自动将其中一个成员升级为新的主服务器。
bj1-farm1:PRIMARY> rs.isMaster()
{
"setName": "bj1-farm1",
"setVersion": 4,
"ismaster": true,
"secondary": false,
"hosts": [
"172.16.0.150:27017",
"172.16.0.152:27017",
"172.16.0.151:27017"
],
"primary": "172.16.0.150:27017",
"me": "172.16.0.150:27017",
"maxBsonObjectSize": 16777216,
"maxMessageSizeBytes": 48000000,
"maxWriteBatchSize": 1000,
"localTime": ISODate("2014-12-01T08:20:34.014Z"),
"maxWireVersion": 2,
"minWireVersion": 0,
"ok": 1
}
创建测试副本集
1 启动mongod服务时在每个机子上添加—replSet spock选项,或者写入配置文件,其中spock是标示符
2 创建配置文件
config ={
"_id":"spock",
"members":[
{"_id":0,"host":"10.0.11.243:27017"},
{"_id":1,"host":"10.0.11.244:27017"}
]
}
3 连接到数据库并初始化副本集
db = (newMongo("10.0.11.243:27017")).getDB("test")
rs.initiate(config)
4 master插入数据测试
for(i=0;i<1000;i++){db.coll.insert({count:i})}
db.coll.count()
5 在备份节点上测试,先修改使得备份节点可读
db.setSlaveOk()
db.coll.count()
停止副本集
Rs.stopSet()
Rs辅助函数
Rs是一个全局变量,其中包含与复制相关的辅助函数可用rs.help(),这些函数大多只是数据库命令的包装器,例如
Db.adminCommand({“replSetInitiate”:Config})和之前的是等价的
网络注意事项
需要保证副本集每个成员能够互相到达ÿ