mongodb - 单实例 Mongodb 副本集 - 无法执行查询/插入操作

标签 mongodb replicaset

安装 mongodb 后,我运行 mongod

mongod --dbpath <pathtodb> --logpath <pathtolog> --replSet rs0

然后我连接了 mongo shell 并运行

rs.initiate()

然后我尝试将文档插入集合中,但收到错误:

> db.blah.insert({a:1})
WriteResult({ "writeError" : { "code" : undefined, "errmsg" : "not master" } })

查看rs.status(),我看到状态为已删除:

> rs.status()
{
        "state" : 10,
        "stateStr" : "REMOVED",
        "uptime" : 1041,
        "optime" : Timestamp(1429037007, 1),
        "optimeDate" : ISODate("2015-04-14T18:43:27Z"),
        "ok" : 0,
        "errmsg" : "Our replica set config is invalid or we are not a member of it",
        "code" : 93
}

我不知道我可以做什么来搞砸这件事。我认为这应该有效。我该如何克服这个困难?

最佳答案

正如上面的答案所说,配置设置不正确。

我尝试重新初始化副本,但收到错误消息:

singleNodeRepl:OTHER> rs.initiate({ _id: "rs0", members: [ { _id: 0, host : "localhost:27017" } ] } )
{
    "info" : "try querying local.system.replset to see current configuration",
    "ok" : 0,
    "errmsg" : "already initialized",
    "code" : 23,
    "codeName" : "AlreadyInitialized"
}

解决方案是重新配置 mongo:

singleNodeRepl:OTHER> rsconf = rs.conf()
singleNodeRepl:OTHER> rsconf.members = [{_id: 0, host: "localhost:27017"}]
[ { "_id" : 0, "host" : "localhost:27017" } ]
singleNodeRepl:OTHER> rs.reconfig(rsconf, {force: true})
{ "ok" : 1 }
singleNodeRepl:OTHER>
singleNodeRepl:SECONDARY>
singleNodeRepl:PRIMARY>

关于mongodb - 单实例 Mongodb 副本集 - 无法执行查询/插入操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750611/

相关文章:

java - 嵌套集合字段的Spring Mongodb分页

javascript - Mongo Node js,如何不返回整个对象文档?

node.js - Mongoose 连接到副本集

mongodb - 带有副本集 : how to force on secondary? 的 Mongodump

mongodb - 跨区域创建 StatefulSet 集群

node.js - 更新模型内的模型

java - 有条件地计算聚合中的嵌套项目数

javascript - 更改聚合结果

database - 当某些节点死亡时,mongo 副本集选举如何表现?

kubernetes - Kubernetes pod Name 中的随机字符串是如何决定的