我在mongodb中配置副本集时犯了一个错误.我认为我做错的是,我在两个 node 上都做了rs.initialize(),这在某种程度上使它们混淆了.我不确定.

现在我想做的就是重新开始,但我找不到一种方法go 初始化一个 node .因此,我按照建议删除了本地*db文件,从而重置了配置.我这么做了,现在什么都没用了.

> rs.initiate()
{
    "info2" : "no configuration explicitly specified -- making one",
    "me" : "0.0.0.0:27017",
    "errmsg" : "couldn't initiate : can't find self in the replset config",
    "ok" : 0
}
> rs.conf()
null

我试图删除并重新安装这个包(我在Ubuntu服务器上这么做),这意味着我的mongodb.conf消失了,我的init脚本停止工作.这当然很容易解决.

那我该如何重新开始呢?

注意:我确实看了this answer,但由于rs.conf()不起作用,这也不起作用.

推荐答案

如果您使用生成的配置强制重新配置,是否解决了问题?

您可以从{{mongo}}shell中执行类似的操作:

> cfg = {
...     "_id" : "rs0",
...     "version" : 1,
...     "members" : [
...         {
...             "_id" : 0,
...             "host" : "0.0.0.0:27017"
...         }
...     ]
... }

>rs.reconfig(cfg, {force:true})

您可能需要调整cfg变量以获得您的主机名和端口名,因为如果repl集在配置中找不到运行它的 node ,can't find self in new replset config错误将返回到shell.

Mongodb相关问答推荐

MongoDB—基于数组中同一文档中的另一个字段更新字段

映射数组值并查找每个匹配的集合

查找/查找单个深度嵌套文档的多个集合

Mongoose 聚合和多级组

DB 中的引用对象在 GraphQL 查询中返回 null

通过 docker 运行的 MongoDB 服务器无法互相看到(名称解析中的临时故障)

MongoDB 到 Snowflake 连续加载

更新 Mongodb 中的多嵌套数组

无法提取地理键,经度/纬度超出范围

MongoDB .NET 未在 upsert 上生成 _id

在 mongodb 的一次更新调用中推送到两个单独的数组

如何获取 Mongoid 文档的所有字段名称?

C# mongodb driver 2.0 - 如何在批量操作中更新插入?

具有 AWS 云形成和自动zoom 的 Mongodb 集群

MongoDB:如何在 100 个集合中找到 10 个随机文档?

mongoose字符串到 ObjectID

MongoDB - Permission denied for socket: /tmp/mongodb-27017.sock

如何使用 Pymongo 在 MongoDB 中 Select 单个字段?

如何从mongoose中的对象 ID 获取创建日期?

MongoDb - 利用多 CPU 服务器进行写入繁重的应用程序