0

背景: 用docker安装的mongo,并设置了一个副本集。且用rs.initiate()初始化过。长时间没用了,突然打开就报错了。想知道如何可以把数据保留下来且修复这个问题。

用rs查看mongo状态如下:

> rs.status()
{
“ok” : 0,
“errmsg” : “Our replica set config is invalid or we are not a member of it”,
“code” : 93,
“codeName” : “InvalidReplicaSetConfig”
}
> rs.conf().members
[
{
“_id” : 0,
“host” : “242f13dd6839:27017”,
“arbiterOnly” : false,
“buildIndexes” : true,
“hidden” : false,
“priority” : 1,
“tags” : {

},
“slaveDelay” : NumberLong(0),
“votes” : 1
}
]

添加节点时报错:

{
“topologyVersion” : {
“processId” : ObjectId(“60ae136dda794cff135bcf27”),
“counter” : NumberLong(1)
},
“ok” : 0,
“errmsg” : “New config is rejected :: caused by :: replSetReconfig should only be run on a writable PRIMARY. Current state REMOVED;”,
“code” : 10107,
“codeName” : “NotWritablePrimary”
}

本地解决办法:删除原docker镜像以及容器,重新安装一遍就好了。

发表新评论

我只是在win10中用docker 启动了一个mongo镜像:
mongodb:
image: mongo
ports:
– 27017:27017
networks:
– local
volumes:
– “C:/docker/mongodb_data:/data/db”
command: [“mongod”, “–replSet”, “dev”]
然后长时间不用,有天连接时候报了错。所以感觉很疑惑。

问题已解决,只需重新配置replica。rs.reconfig({_id: “dev”,version: 1,members: [{ _id: 0, host : “localhost:27017” }]},{force:true})。 (force -> 非主节点强制请求重新分配主节点。)