问题标签 [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.
node.js - 与主节点没有连接时从 mongodb 辅助节点读取
我们有 3 个实例的 mongodb 副本集,其中主节点位于数据中心 D1,辅助节点位于数据中心 D2。我们的设置中不需要任何故障转移选项,并按照https://docs.mongodb.com/manual/tutorial/configure-secondary-only-replica-set-member/中的描述进行配置。
在同一数据中心 D2 内的辅助节点上运行的应用程序“A”正在使用 mongoose,我们指定(使用“最近”或“辅助”选项)从辅助节点读取数据。
我们面临着这些问题:
1)是否可以使“A”从特定的辅助节点读取,而无需在连接配置中指定主 mongoDB 节点在哪里?
2)如果数据中心 D1 和 D2 之间的连接丢失,那么我们如何使“A”应用程序仍然从辅助节点读取,因此 mongoDB 主节点不再可访问/可见?据我了解,它不起作用,因为即使“A”被配置为从辅助读取,mongoDB 仍然需要在主要和辅助之间执行一种 ping/套利,然后才能执行实际的读取操作。
3)是否可能/建议在数据中心 D2 中有一个应用程序,它将直接作为独立实例而不是作为副本集的一部分对 mongodb 副本集主实例执行写入操作?
版本:mongodb 3.2.9、mongoose 4.5.9
mongodb - MongoDB 二级完全跟不上
我们在 MongoDB 版本 3.4 上设置了一个包含以下内容的三成员副本集:
- 基本的。物理本地服务器,Windows Server 2012,64 GB RAM,6 核。在斯堪的纳维亚举办。
- 次要的。Amazon EC2、Windows Server 2016、m4.2xlarge、32 GB RAM、8 个 vCPU。在德国举办。
- 仲裁者。微型基于云的 Linux 实例。
我们看到的问题是辅助节点无法跟上主节点。当我们用数据播种它(从主节点复制)并将其添加到副本集时,它通常会设法保持同步,但一个小时后它可能会滞后 10 分钟;几个小时后,它落后了一个小时,依此类推,直到一两天后,它就变得陈旧了。
我们正试图弄清楚为什么会这样。主节点始终使用 0-1% 的 CPU,而辅助节点始终处于 20-80% 的 CPU 的重负载下。这似乎是唯一潜在的资源限制。磁盘和网络负载似乎不是问题。辅助节点上似乎有一些锁定,因为 mongo shell(例如 db.getReplicationInfo())中的操作通常需要 5 分钟或更长时间才能完成,而 mongostat 很少工作(它只是说 i/o 超时)。以下是 mongostat 在报告辅助统计信息的罕见情况下的输出:
我在辅助服务器上运行了 db.serverStatus(),并与主服务器进行了比较,其中一个突出的数字如下:
"locks" : {"Global" : {"timeAcquiringMicros" : {"r" : NumberLong("21188001783")
辅助服务器当时的正常运行时间为 14000 秒。
将不胜感激有关这可能是什么或如何调试此问题的任何想法!我们可以将 Amazon 实例升级到更强大的东西,但我们已经这样做了 3 次,此时我们认为肯定有其他问题。
我将在下面的辅助文件中包含来自 db.currentOp() 的输出,以防万一。(该命令运行了 5 分钟,之后记录了以下内容:由于错误而重新启动 oplog 查询:CursorNotFound:未找到光标,光标 id:15728290121。上次获取的 optime(带哈希):{ ts:时间戳 1490613628000|756, t: 48 }[-5363878314895774690]. 剩余重启次数:3 )
node.js - nodejs驱动程序-当PRIMARY GOES DOWN时重新连接很慢
我想知道当 PRIMARY GOES DOWN 时 nodejs 驱动程序的行为如何。
将主节点“SECONDARY”上的 db.shutdownServer() 立即变为主节点。但是驱动程序在再次发出另一个写入命令之前需要至少 11 秒挂起。
我用各种数字测试 connectTimeoutMS & socketTimeoutMS & haInterval 但它没有帮助。
连接字符串:
mongodb - 需要简单解释仲裁者在给定 mongoDB 副本集中的角色
我遇到了 MongoDB 官方网站,解释了设置奇数个成员副本。我还从同一个站点听说过 Arbiter 这个词,根据我的理解,它不会被选为主要的,它会参与选举(来自https://docs.mongodb.com/manual/core/replica-set -仲裁者/)。
在为什么我们在 MongoDB 复制中需要一个“仲裁者”中也有一篇与仲裁者相关的帖子?然后与 CAP 定理有关,这进一步使事情变得更加复杂。
首先,为什么我们需要使成员数为奇数?另外,有人可以用简单的外行英语向我解释这个仲裁器是什么以及它在给定副本集中的作用是什么?
提前致谢。
mongodb - Mongo readpreference Secondarypreferred
我们在 EC2 上使用 r3.8xlarge 和 10000 IOPS 部署了 MongoDB。我们正在运行一个具有 1 个主节点、1 个辅助节点和 1 个仲裁节点的副本集。在我们的应用程序中,我们将 readPreference 设置为 secondaryPreferred。
现在,我正在关注 Mongo 实例的 EBS 上的 EBS 读取吞吐量指标。我可以看到它在 Mongo 主节点上达到了 10k IOP,这让我很惊讶;我看到辅助节点上的尖峰很明显,但主节点上的尖峰让我感到困惑?
为什么我在主 mongo 节点 EBS 上看到峰值,即使我将 readPreference 设置为 secondaryPreferred?
php - Node.js MongoClient 在主要关闭后无法连接到副本集
使用 node.js mongodb 版本。2.2.25,我使用以下连接字符串连接到主节点关闭但失败的副本集:
但是,我可以将相同的连接字符串与 PHP mongo 客户端一起使用并成功读取数据。那么 node.js 驱动程序有问题吗?我也尝试添加
到连接字符串,但也失败了。
mongodb - 副本的自动状态更改
我们在三个节点上设置了一个 MongoDb 副本集,我们在两个错误日志中都有这个。这是一个例子。所有这些都同时在不同的节点上。
3月27日 10:31:49
节点 1:
3 月 27 日 10:31:49 ulpmon01 mongod.27017[1464]:[rsHealthPoll] replSet info ulpmon03.osasunet:27017 已关闭(或响应缓慢):
3 月 27 日 10:31:49 ulpmon01 mongod.27017[1464]:[ rsHealthPoll] replSet 成员 ulpmon03.osasunet:27017 现在处于 DOWN 状态
3 月 27 日 10:31:53 ulpmon01 mongod.27017[1464]: [rsHealthPoll] replSet 成员 ulpmon03.osasunet:27017 is up
Mar 27 10:31:53 ulpmon01 mongod .27017[1464]: [rsHealthPoll] replSet 成员 ulpmon03.osasunet:27017 现在处于 SECONDARY 状态
节点 2:
3 月 27 日 10:31:43 ulpmon02 mongod.27017[1438]:[rsHealthPoll] DBClientCursor::init call() 失败
3 月 27 日 10:31:43 ulpmon02 mongod.27017[1438]:[rsHealthPoll] replSet info ulpmon03.osasunet: 27017 已关闭(或响应缓慢):
3 月 27 日 10:31:43 ulpmon02 mongod.27017[1438]:[rsHealthPoll] replSet 成员 ulpmon03.osasunet:27017 现在处于 DOWN 状态
3 月 27 日 10:31:50 ulpmon02 mongod。 27017[1438]: [rsHealthPoll] replset info ulpmon03.osasunet:27017 heartbeat failed,
retrying Mar 27 10:31:53 ulpmon02 mongod.27017[1438]: [rsHealthPoll] replSet member ulpmon03.osasunet:27017 is up
Mar 27 10: 31:53 ulpmon02 mongod.27017[1438]: [rsHealthPoll] replSet 成员 ulpmon03.osasunet:27017 现在处于 SECONDARY 状态
节点 3:
3 月 27 日 10:31:53 ulpmon03 mongod.27017[1442]: [rsHealthPoll] replset info ulpmon01.osasunet:27017 认为我们失败了
3 月 27 日 10:31:53 ulpmon03 mongod.27017[1442]: [rsHealthPoll] replset info ulpmon02.osasunet:27017 认为我们失败了
任何人都可以帮忙吗?
mongodb - 副本集架构 - 仲裁器要求
有效处理灾难恢复 (DR) 情况所需的副本集成员数量应该是多少。目前我们正在使用 3 个节点副本集(1 个主副本集,同一区域中的 1 个辅助副本和 DR 区域中的 1 个辅助副本)。
我们计划为其添加 2 个仲裁器以提高其容错能力。
使用多个仲裁实例是一种好习惯吗?
在 DR zone 中创建仲裁实例会更好吗?
mongodb - 分片 MongoDB
我有 6 个虚拟机(Master、3 个 configsvr 和两个分片);我想将副本集添加到我的分片中。
是否可以将一个分片设置为另一个分片的复制,反之亦然?或者我应该添加其他虚拟机作为分片的副本吗?
mongodb-replica-set - MongoDB:向副本集添加成员会触发 3.2.11 中的选举?
导致 mongodb 触发选举的场景有哪些rs.add()
?
在 3.2.11 版本中,我多次看到向副本集添加/删除成员不会触发选举。
相反,在 2.6 版本中,大多数时候rs.add()/rs.remove()
通话都会触发选举。
在某些情况下,可以从docsrs.add()
触发选举。
可能触发选举的可能情况有哪些?我怎样才能完全避免选举期间rs.add()
?
PS:在某些情况下,我们不希望触发选举。