问题标签 [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 投票
0 回答
645 浏览

node.js - 节点 Mongodb 错误:找不到有效的副本集实例服务器

我们有多个 API 在不同端口上的 AWS 实例上运行。API 之一给出错误“未找到有效的副本集实例服务器”。其他 API 工作正常。mongodb 日志中没有消息。尝试了 stackoverflow 中提到的所有其他选项,例如增加超时等。但是没有帮助。

在本地服务器上运行时,相同的 API 可以正常工作。重新启动 AWS 实例,它开始正常工作。

无法复制问题。检查根本原因的任何方向。想避免再次发生。希望有任何领域可以进一步调查以找到根本原因。

0 投票
2 回答
261 浏览

mongodb - 故障转移和恢复后的副本集数据库状态

我的 mongodb 版本是 3.2.4。我有一个具有 2 个数据库节点和 1 个仲裁器的副本集。在我的客户站点上,所有数据库都运行良好很长时间。有一天,主数据库因维护而停机。大约 2 小时后,the-was-primary 重新启动,并再次变为 primary,并且辅助 db 处于 Rollback 状态。关于上述场景,我有几个问题:当第一次关闭主数据库时,如果有数据库条目没有同步到辅助数据库,会发生什么?当失败的主节点再次恢复时,它是否会成为主节点?在再次成为主数据库之前,它是否与 now-primary-was-secondary 数据库同步?鉴于我最新的主数据库和辅助数据库状态,如何恢复回滚文件夹中丢失的数据?谢谢并恭祝安康。

0 投票
1 回答
172 浏览

mongodb - 在 Mongo 主要降级和选举期间,对 Mongo 集群的写入请求会发生什么

我有一个应用程序不断写入 MongoDB 副本集(例如 1 个主副本,2 个辅助副本)。

我想知道:如果我强制当前的初选下台,那么新初选的选举可能需要几秒钟才能完成。

但是在这个选举过程中,如果还有对MongoDB的写请求,那么写请求会发生什么?

据我了解,任何读取请求都应该没问题,但所有写入都必须通过主请求;但是如果集群没有,那么写入请求将被排队或丢弃?

https://docs.mongodb.com/manual/reference/method/rs.stepDown/ https://docs.mongodb.com/manual/core/replica-set-elections/

0 投票
1 回答
2083 浏览

node.js - 如何设置有效的 mongo 副本集

我想研究一个场景,即副本模式下有多个 MongoDB,但在特殊情况下,只有一个工作。我的配置如下。

我在 EC2 实例上有一个 MongoDB 容器,我的命令是

然后我有 2 个由 Nodejs 开发的应用程序使用这个数据库。他们用这个连接字符串连接:

uri: 'mongodb://192.168.0.100:27018/testmongo?replicaSet=rs0'

不幸的是,我的一个应用程序运行良好,但其他应用程序却不行。尝试连接数据库时的错误消息是

MongoDB 连接错误:MongoError: no valid replicaset members found

我通过运行此命令检查状态rs.slaveOk()rs.status()然后我有这个

我的场景的这个设置是否正确?如果不正确,如何解决?

0 投票
1 回答
4776 浏览

node.js - Mongo 副本集找不到主副本

我找到了一个使用 docker 设置 mongo 副本集的教程,我的命令是

创建网络集群

创建一个名为 的特定容器mongo1,将 27018 映射到 27017 内部并设置名称为rs0

我的配置,

最终,我创建了 3 个容器

结果sudo docker exec -it mongo1 mongo

看起来我现在有一个主要的,并试图在容器上插入一些东西(比如 mongo1),MongoDB 可以很好地同步。

现在我尝试使用命令连接到bryan数据库上的集合(注意10.145.168.151是我的 IP)

我的结果是

如果我使用 Nodejs(猫鼬),我会得到MongoError: no primary found in replicaset

我认为问题出在getaddrinfo("mongo2") failed: Name or service not known所以我的问题是如何解决这个问题。谢谢

0 投票
1 回答
43 浏览

php - 在mongo中添加新成员并防止应用程序中的错误异常

我在 EC2 上有三个实例,每个实例都有服务 mongo,设置有副本集,即主 (192.168.1.1)、辅助 (192.168.1.2) 和仲裁器 (192.168.1.3)。

我有几个与 mongo 连接的应用程序。

我的问题如下:

如果我在副本中添加另一个成员,我必须更改连接设置中的所有应用程序以包含新成员吗?

因为我问它。

假设最终 .1 的 ip 是主要的,.2 是次要的,然后将一个新成员添加到末尾 ip .4。而且我没有在应用程序数据库设置中包含这个新成员。并且主节点下降了,仲裁器选择 0.4 的 ip 作为新的主节点。所有应用程序都将开始抛出异常。

我怎样才能“修复”它,我总是必须添加一个新成员而不需要更改应用程序数据库的配置。想象一下,如果我必须添加“n”个成员。

你有什么方法可以配置应用程序,知道我的应用程序是在 PHP 中的,无需添加主机配置即可单独识别主节点?

0 投票
0 回答
17 浏览

php - 为什么 php MongoClient::getHosts 显示的主机多于存在的节点?

我们有一个 mongodb 副本集,其中 3 个节点(db01-03)作为副本集“rs0”运行。

通过 获取主机信息时MongoClient::getHosts(),主服务器有时会被报告两次,一次作为 rs0 的一部分,一次是独立的(看起来如此?):

为什么会发生这种情况,这是有意/无意还是我们应该关注的事情?

问题是,我们的监控会定期比较“报告的主机”和“预期的主机”,并且自4 !== 3.

PS:当然我们可以通过比较来修复警报$actual<$expected;这不是问题,而是:

为什么有时会显示两次主要内容?

0 投票
2 回答
5324 浏览

node.js - 通过 javascript 从 mongodb 中的辅助副本集读取

我有 2 个 mongo 实例在 2 个不同的服务器(一个主服务器和另一个辅助服务器)上运行;我可以使用此连接代码从主服务器检索文档:

但是当我尝试从辅助服务器检索文档时,我收到以下错误:

{ [MongoError: not master and slaveOk=false]
name: 'MongoError',
message: 'not master and slaveOk=false',
ok: 0,
errmsg: 'not master and slaveOk=false',
code: 13435 }

我也尝试使用代码:

我错过了什么?

0 投票
1 回答
388 浏览

mongodb - 什么角色提供对 MongoDB 的 Replica-Set 状态方法 (rs.status()) 的访问?

我想创建一个只有权检索我们的副本集状态的用户。是否有允许这样做的内置角色或其他角色?文档似乎没有指出调用任何rs.方法甚至需要什么角色。

0 投票
1 回答
92 浏览

node.js - 从副本集中检索文档时的 Mongo 复制性能问题

我有一个主副本集和两个辅助副本集,当我从节点服务器检索文档时出现性能问题。那么有没有办法提高性能呢?