问题标签 [replicaset]

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 投票
0 回答
1297 浏览

mongodb - MongoDB 和缺失索引

将副本集迁移到独立后,生成的 MongoDB 设置存在一些奇怪的问题。例如,缺少集合上的索引。但是尝试reIndex()收集也会失败,并出现以下错误消息:

问题是如何重新索引错过其索引的集合:)

非常感谢,克里斯

0 投票
0 回答
1606 浏览

mongodb - 如何判断访问我的数据库的 readPreference MongoDB 查询正在使用什么?

我有一个 MongoDB 2.4 副本集和一个 node.js 应用程序,该应用程序被编码为readPreference: 'secondaryPreferred'在大多数(但不是所有)情况下使用。

我想在服务器上验证读取首选项是否符合各种查询的预期。在查看当前操作或分析时,有没有办法可以查看运行查询的读取首选项?

0 投票
1 回答
968 浏览

.net - 无法连接到副本集 .net 驱动程序 - MongoDB

我正在使用这段代码:

在 vb.net 中,我使用 .net 的 1.7 mongo 驱动程序并更新到最新版本以确保它不是版本问题。

当我使用副本集连接字符串时:

我收到以下错误:

如果您像这样连接(仅连接到一台服务器):

代码运行良好

另外 - 我使用 python 来验证我的副本集正在使用相同的连接字符串,但它在这里和那里都不起作用

我也尝试了这些选项:

我也尝试使用以下代码执行此操作:

并得到这个错误:

当登录到服务器(ssh)并使用 rs.status() 命令时,我得到了预期的结果,一切似乎都运行良好(正如我在 python 驱动程序中提到的那样......)

有任何想法吗 ?

编辑:

我认为这可能是同一个问题:

https://jira.mongodb.org/browse/CSHARP-826

我还尝试降级到 1.8.3 驱动程序,但没有成功。

0 投票
0 回答
354 浏览

mongodb - 尝试了一些 MapReduce 后,ReplSet 中的 MongoD 无法启动

当我的 Primary 的 mongo shell 突然变成 Secondary 时,我正在练习一些 MapReduce。我与其他辅助服务器通过 SSH 连接到另外两个虚拟机,发现 mongod 已无法运行。我杀了他们,我发出了mongod --config /etc/mongod.conf把他们踢开的命令,然后我进入了mongo外壳。几秒钟后,他们被打断了:

这是来自他们的(副本集中的两个原始辅助节点)日志:

我可以mongo --host ... --port ...从两个无法启动 mongo 的 VM 向原始主 mongo 发出问题,但我确实在错误日志中看到了上面的一些连接被拒绝注释。

我原来的主mongod仍然可以在mongoshell中连接,但它是一个主。我可以杀死它并重新启动它,它将在二级启动。

如何回滚到最后一个已知状态并重新启动我的副本集?

0 投票
1 回答
2386 浏览

mongodb - mongodb分片用户认证

我已经建立了一个全新的分片 MongoDb(3 个配置服务器,3 个节点副本集)。按照网上的文档,真的没有任何问题。分片一个数据库和一个集合;mongos 连接到系统;一切正常。

我不了解的一件事是在分片系统中身份验证如何工作。我为所有 6 个节点设置了密钥文件。当我想添加一个用户时,我是从 mongos 做的吗?我是否必须登录到副本集中的每个节点并添加用户?我必须将用户添加到配置服务器吗?

特别是,我通过 mongos 创建了一个 MMS 用户,这允许 mms-monitoring-agent 连接到足以了解各种服务器的信息。但它实际上不能从其中任何一个中读取数据;我收到如下错误:

当我通过 mongos 连接并使用管理员时;显示我看到的用户:

我想我只是不了解用户需要添加到哪些实例。

0 投票
1 回答
807 浏览

mongodb - 仅使用 2 个服务器在 MongoDB 中处理副本集的最佳方式

我将为使用 MongoDB 的生产环境使用 2 台服务器解决方案。

如果我理解正确,我可以有 1 个带有 2 个节点的副本集,每个服务器中都有一个。现在为了容错重新分配一个新的主节点,我需要一个仲裁节点。

由于我仍然想使用 2 台服务器,如果持有仲裁节点的服务器出现故障,将无法设置新的主节点。

我想出的一个解决方案是拥有 3 个仲裁节点。一台服务器中的 1 个,另一台服务器中的其他 2 个。这样,如果任何服务器出现故障,其他服务器的非仲裁节点将成为主节点。

这个对吗?我应该使用其他解决方案吗?

谢谢!伊格纳西奥。

0 投票
0 回答
137 浏览

mongodb - MongoDB 副本集和数据复制

我是 MongoDB 新手,并试图了解副本集。具体来说,我试图了解 MongoDB 如何处理以下情况:

  1. 一条记录被写入到具有唯一索引的表中,该索引在主要 Mongo 成员 (Mongo 1) 上。
  2. Mongo #1 在新记录传播到辅助 Mongo 成员 (Mongo 2) 之前崩溃。
  3. Mongo 2 和仲裁者选举 Mongo 2 为主。
  4. 应用程序尝试在表中创建重复记录。因为 Mongo 2 不知道写入 Mongo 1 的记录,所以不强制执行唯一约束。
  5. Mongo 1 再次可用并恢复复制。

接下来发生什么?Mongo 1 是否尝试将记录复制到 Mongo 2?还是从 Mongo 2 到 Mongo 1?还是两者同时?冲突如何解决?

0 投票
3 回答
2990 浏览

mongodb - 如何在 Mongodb 副本集配置中更新 _id?

我在副本集中有 5 个 mongo 成员。在我从中删除 3 之后。

如何将其他成员中的“_id”更改为值“0”、“1”和“2”?

0 投票
1 回答
741 浏览

node.js - MongoDB——如何让 Replica set Step down 真正无缝

问题是——当你的 Replica Set 在你的应用程序运行时被迫下线时,所有主流的 Mongo 客户端都会在每个连接中抛出至少一个异常。发生这种情况是因为他们的数据库连接硬连线到曾经是主服务器的物理服务器,并且不再接受查询。因此,虽然 MongoDB 架构师可能认为 StepDown 过程不会造成任何停机,但实际上,如果您根据他们的文档处理连接,每一步都会导致至少一个用户完全崩溃,甚至可能创建数据完整性问题。我希望,可以通过一个简单的包装器来避免这种情况,该包装器捕获一些特定的 Mongo 异常并通过自动重新连接到副本集并重新运行失败的查询来处理它们。如果您已经有解决方案,请分享!

0 投票
1 回答
517 浏览

mongodb - mongo replicaSet 的成员在 +100 CPU 时仍然健康

我有一个标准的 mongoDB 副本集,有 3 个成员(在 EC2 中)一切正常,但有时主节点的 CPU > 100。在我看来,这个实例不健康,所以副本集应该选择另一个主节点。但是不会发生。

我想 mongo 仅在无法通过网络访问时才考虑不健康,因为如果我关闭实例,则选举工作正常。

使用 Cloudwatch,我可以在触发 CPU 警报时设置一个事件(停止/重启实例),但我认为这更像是一种解决方法而不是解决方案。

那么,当 mongodb 考虑成员不健康时呢?