问题标签 [mongodb-replica-set]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2429 浏览

mongodb - 停止 mongo 上的副本集,主节点进入恢复状态

当我停止副本集的节点并再次启动它们时,主节点进入“正在恢复”状态。

我创建了一个副本集,未经授权运行。为了使用授权,我添加了用户“db.createUser(...)”,并在配置文件中启用了授权:

在停止副本集之前(甚至在不添加安全参数的情况下重新启动集群), rs.status() 显示:

为了开始使用此配置,我已停止每个节点,如下所示:

关闭后,我通过检查ps -ax | grep mongo.

但是当我再次启动节点并使用我的凭据登录时, rs.status() 现在显示:

为什么?也许关闭不是停止 mongod 的好方法;但是我也使用'kill pid'进行了测试,但重新启动最终处于相同的状态。

在这种状态下,我不知道如何修复集群;我又开始了(删除 dbpath 文件并重新配置副本集);我尝试了“--repair”但没有奏效。

关于我的系统的信息:

  • 蒙戈版本:3.2
  • 我以root身份启动该过程,也许它应该以“mongod”用户身份启动?
  • 这是我的启动命令:mongod --conf /etc/mongod.conf
  • keyFile 配置不起作用;如果我添加“--keyFile /path/to/file”显示:
    即将 fork 子进程,等待服务器准备好连接。 ”该文件具有所有权限,但不能使用 keyFile。
  • “net.bindIp”配置的示例,来自一台机器上的 mongod.conf:

    /li>
0 投票
0 回答
148 浏览

mongodb - Parse Server - 无视分片和复制,无法连接到 MongoDB

我们在 AWS 上部署了一个带有 3 个分片的 MongoDB 分片集群。每个分片都有一个包含 3 个成员、1 个配置服务器和 3 个 mongos 的副本集。

以及分片在 3 个 EC2 实例上的分布方式

您可以看到 replicaSet 成员不在同一个实例上。

但是当例如md0宕机时,我们的 API(Parse Server)与集群的连接松散,尽管md1仍然md2存在并且已经选择了一个新的主节点。由于复制,所有 EC2 实例都拥有所有集合的副本,包括分片集合。

连接字符串看起来像这样

您认为这是集群/分片配置的问题,还是与 API 相关的问题,它保持连接而不是尝试连接到其他 mongos?

0 投票
1 回答
727 浏览

mongodb - Mongodb 官方镜像 errno:111 Connection refused when trying to create replicaset

我正在尝试使用官方 MongoDB docker 映像在单个容器内创建一个 3 组复制集群。

按照这个官方指南,我创建了以下 dockerfile:

但是当我运行它时,我收到以下错误:

当我运行原始 mongo 图像并尝试运行相同的 CMD 时,我得到的结果不一样。

我尝试添加USER root到 Dockerfile 中,但这根本没有帮助。

我能做些什么来完成这项工作?

更新

  • 还尝试从 开始创建图像ubuntu,结果相同
  • 好吧,这似乎是某种 docker 文件权限问题。当我将代码移动到 bash 脚本并从那里运行时,一切正常。这不是为什么会发生这种情况的答案,而是您需要的解决方案。
0 投票
1 回答
6506 浏览

mongodb - Meteor 1.4.1.1 上副本集的正确 MONGO_URL 设置是什么

今天早上我去把我更新的 Meteor 项目部署到 Heroku 上。

我正在从升级1.1.0.31.4.1.1.

使用Meteor Buildpack Horse一切安装正确,但应用程序因错误而出错;

MongoError:种子列表不包含 mongos 代理,副本集连接需要在 URI 或选项对象中提供参数副本集,mongodb://server:port/db?replicaSet=name

MONGO_URL的,mongodb://u:p@url1:port,url2:port/db所以我把它改成了;

mongodb://u:p@url1:port,url2:port/db?replicaSet=set-name

如果我在 replicaSet 参数上犯了一个错误,我会得到这个错误;

MongoError:在副本集中找不到主节点

这似乎是明智的,因为副本集不存在,但是当我输入正确的值时,我再次收到原始错误,说种子列表不包含代理。

我的副本集名称中有破折号,我不知道这是否相关。

我试过的

我尝试使用在 Mongo 客户端中引发此错误的 URL,它允许我很好地连接到实例,所以我知道所有细节都是正确的。

我也尝试过转义副本集,所以?replicaSet=set\-name这给了我MongoError: no primary found in replicaset错误。

我的 MongoDB 提供商有一张未结票,但我怀疑这是 Meteor/me 的问题!

0 投票
2 回答
2622 浏览

mongodb - MongoDB Primary 无法返回

我有一个在 Windows 上运行的 MongoDB 3 成员副本集。当主服务器(S1)宕机时,辅助服务器被正确选举。当主服务器恢复时,副本成员保持无效状态:

之后,辅助服务器每隔几秒钟就会在主服务器和辅助服务器之间切换,使我的应用程序不稳定。

恢复主服务器的唯一方法是执行 rs.reconfig(c)。

我找不到配置文件有什么问题。

任何帮助将不胜感激。

更新: 这是当前配置:

我应该使用 IP 地址而不是主机名吗?

更新 2:

这是主服务器 (m3.companyName.com - IP 1.1.1.1) 的日志,从它重新启动到我进入另一台服务器 (m2.companyName.com - IP 2.2.2.2) 并进行了手动 rs .reconfig()。

我注意到的最明显的事情是“没有这样的主机是已知的”错误。也许 Mongo 试图在 Windows 解析名称之前启动?

0 投票
1 回答
1136 浏览

mongodb - 在 Docker 容器中初始化 MongoDB 副本集时出错

我使用以下命令创建了一个带有副本集的 MongoDB docker 容器:

容器开始运行。

然后我尝试使用以下命令启动副本集:

但它给出了错误消息“已经初始化”。

当我使用rs.status()命令检查副本集的运行状况时

它说副本集配置无效。

0 投票
1 回答
3294 浏览

mongodb - mongo 复制设置存储在哪里?

完全重装了mongo后,还记得之前的副本集配置;它存储在哪里?

我使用我们项目的用户帐户在 linux 服务器上将 mongo 安装到该用户拥有的目录中。我设置了复制并让它正常工作。然后,为了测试一些更好的安装点,我删除了整个 mongo 目录并重新安装。进入mongo,发现replication已经和之前一样设置好了;所以看起来mongo将信息存储在某个地方。

我检查了几个可能保存副本集配置的区域:

  1. 首先,在 mongo 目录中,但已删除。
  2. 在一些传统的 linux 结构中,可能由 root 拥有,但项目用户没有 root 访问权限,并且由相同运行的 mongo 也不应该。
  3. 项目用户的主目录。现在这确实有一个包含命令行历史的 .dbshel​​l 文件,但仅此而已。我没有看到任何其他相关的文件。
  4. mongo 配置中指定的某个位置。但是我这里只提到了两个路径,一个用于系统日志(systemLog.path),另一个用于存储(storage.dbPath),并且都指向 mongo 目录,该目录已被删除。

有谁知道 mongo 在哪里存储此配置信息?

0 投票
0 回答
602 浏览

php - PHP MongoClient 连接 Mongodb 副本集,关于连接字符串

删除主节点后,与 MongoDB 副本集的 PHP 连接失败。

我已经建立了一个有五个节点的 mongodb 副本集;mongo1 是主要的,其他都是次要的。

这是我的连接代码:

我发现每当我停止连接字符串中第一台服务器的服务时(这次是mongo1),php驱动程序要么抛出连接异常错误,要么除了连接的“已连接”属性之外不会抛出任何错误对象将是错误的。

似乎 php 驱动程序无法正确连接到副本集。

我尝试了另一个实验,交换服务器的位置。这次我的连接字符串是:

在这种情况下 mongo1 仍然是主要的;当我停止 mongo3 服务时,错误再次发生。只要我不停止列表中第一台服务器的服务,似乎一切都会好起来的。

0 投票
2 回答
914 浏览

mongodb - 我可以使用副本集名称通过 mongo-connector 连接吗

我想知道,有没有一种方法可以通过 mongo-connector 从一个 mongo 副本集复制到另一个?根据 mongo 文档,我们可以使用下面示例中的命令通过 mongo-connector 连接两个 mongo 实例,但我想传递副本集名称或使用配置文件,而不是在命令行中传递server:port名称。

Mongo 连接器可以使用 Mongo DocManager 从一个 MongoDB 副本集或分片集群复制到另一个。最基本的用法如下:

mongo-connector -m localhost:27017 -t localhost:37017 -d mongo_doc_manager

我还通过创建下面的 config.json 文件尝试了 config.json 选项,但它失败了。

0 投票
2 回答
1393 浏览

node.js - mongodb故障转移连接

我有一个连接到 mongodb 的 nodejs 应用程序。

Mongodb 允许副本集客户端连接提供一定程度的弹性。

例如“ mongodb://localhost:50000,localhost:50001/myproject?replicaSet=foo”,客户端首先连接到 localhost@50000,如果连接失败,它会切换到 localhost@50001。

这很好,但是如果当应用程序启动并且如果两个 mongo 之一死了,那么应用程序就死了 - 无法连接错误。

我能想到的唯一解决方案是重新格式化 url,使其排除非活动实例,但希望避免这种情况......

有任何想法吗?

谢谢