设为首页 加入收藏

TOP

mongo实践-通过js shell操作mongo(二)
2014-11-24 03:16:03 来源: 作者: 【 】 浏览:2
Tags:mongo 实践 通过 shell 操作
.initiate(config);
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
我们需要配置config这个对象,指明set的名称和这个set下的成员。然后将config传递给rs.initiate().
如果到这里一切都顺利的话,我们会得要一个信息说:这个set会在1分钟内启动完成。在这个时间段内,有一个
节点会被选择为主控节点(master节点)。
如果想查看这个set的当前状态的话,使用rs.status这个命令:
> rs.status()
{
"set" : "foo",
"date" : "Mon Aug 02 2010 11:39:08 GMT-0400 (EDT)",
"myState" : 1,
"members" : [
{
"name" : "arete.local:27017",
"self" : true,
},
{
"name" : "localhost:27019",
"health" : 1,
"uptime" : 101,
"lastHeartbeat" : "Mon Aug 02 2010 11:39:07 GMT-0400",
},
{
"name" : "localhost:27018",
"health" : 1,
"uptime" : 107,
"lastHeartbeat" : "Mon Aug 02 2010 11:39:07 GMT-0400",
}
],
"ok" : 1
}
这里有个值"myState",如果这个值为1,说明是主控节点(master);如果是 2 ,说明是从属节点(slave).
在同一时刻,每组 Replica Sets 只有一个 Primary,用于接受写操作。而后会异步复制到其他成员 数据库中。一旦 primary 死掉,会自动投票选出接任的 primary 来,原服务器恢复后成为普通成员。如果数据尚未从先前的 primary 复制到成员服务器,有可能会丢失数据。
PRIMARY> db.test.insert({“name”:”foobar”,”age”:25})
PRIMARY> db.test.find()
{ “_id” : ObjectId(“4f4f38fc47db2bfa5ceb2aee”), “name” : “foobar”, “age” : 25 }
SECONDARY> db.test.find()
error: { “$err” : “not master and slaveok=false”, “code” : 13435 }
SECONDARY> db.test.insert({“name”:”foobar”,”age”:25})
not master
在主库上设置slaveok=ok (经过试验,发现需要在从库上设置ok)
PRIMARY> db.getMongo().setSlaveOk()
SECONDARY> use test
switched to db test
SECONDARY> db.test.find()
{ “_id” : ObjectId(“4f4f38fc47db2bfa5ceb2aee”), “name” : “foobar”, “age” : 25 }
然后kill掉主库,会候选出一个作为主库,当修复后,就变成从库了
插入数据时生成的id分为四个段 时间戳、主机号、进程号、计数器
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇为过程或函数指定了过多的参数 下一篇通过DBMS_RANDOM得到随机

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)
·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)