问题标签 [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 副本集和 URL 服务器排序
我正在使用 nodejs,并且我有一个连接 URL:
如果 test-mongodb-2 不是主节点,则连接失败并显示:
我正在使用最新版本的驱动程序:2.1.21
有没有我错过的选项?
mongodb - system.user 数据库中的 Mongo 复制问题
当我从主节点注册时,我可以将用户添加到 systems.users 集合,但是当我从辅助节点添加用户时,主节点中的值没有更新,因此复制失败,主节点在美国,辅助节点是在欧洲。
我错过了什么吗?
mongodb - MongoError:找不到有效的副本集成员
谁能解释在什么情况下会发生以下错误?
这是我连接到副本集的方式:
node.js - mongo 副本连接导致节点服务器崩溃
我正在使用代码集连接我的 mongo 副本集
不经常,但有时我会收到此错误并且我的节点崩溃,我什至不明白为什么会弹出此错误
谁能告诉我在什么情况下会弹出这个错误???
mongodb - 禁用对 mongodb 副本集的从属成员的读取操作
rs.slaveOk()
在 MongoDB 副本集中的从属成员上启用读取操作。
用什么功能来禁用它?
mongodb - 为什么mongodb oplog是幂等的?即使是插入操作?
我正在学习mongodb的副本集功能,当我阅读这篇文章时: 副本集oplog
它说:
oplog 中的每个操作都是幂等的。也就是说,oplog 操作无论对目标数据集应用一次还是多次都会产生相同的结果。
这是什么意思?插入或删除操作肯定会产生不同的结果,应用一次而不是两次。
所以也许我错了或者有人解释一下?谢谢!
mongodb - 由于 MongoDB 副本集的意外故障转移导致数据丢失
所以我最近遇到了以下问题:
我有一个 5 成员集副本集(优先级)
- 1 x 初级 (2)
- 2 x 二级 (0.5)
- 1 x 隐藏备份 (0)
- 1 x 仲裁器 (0)
具有 0.5 优先级的辅助副本之一(我们称之为B)遇到了一些网络问题,并且与副本集的其余部分存在间歇性连接。然而,尽管拥有比现有主节点(我们称之为A)更旧的数据和更低的优先级,但它承担了主节点角色:
[ReplicationExecutor] VoteRequester:没有从 xxx 获得投票,因为:候选人的数据比我的更旧,resp:{ term: 29, voteGranted: false, reason: "candidate's data is staler than mine", ok: 1.0 }
[ReplicationExecutor] 选举成功,在第 29 学期担任主要角色
[ReplicationExecutor] 过渡到 PRIMARY
对于A,尽管与副本集的其余部分没有任何连接问题:
[ReplicationExecutor] 从 primary 下台,因为一个新的任期已经开始:29
所以问题 1是,在这种情况下,这怎么可能?
继续前进,A(现在是次要的)开始回滚数据:
[rsBackgroundSync] 由于 OplogStartMissing 开始回滚:我们最后一次获取的操作时间:(术语:28,时间戳:xxx)。来源的 GTE: (term: 29, timestamp: xxx) hashes: (xxx/xxx)
[rsBackgroundSync] 开始回滚
[rsBackgroundSync] 回滚 0
[ReplicationExecutor] 过渡到 ROLLBACK
这导致被写入的数据被删除。所以问题 2 是: OplogStart 是如何丢失的?
最后但同样重要的是,问题 3,如何防止这种情况发生?
先感谢您!
mongodb - 防止从次要读取到主要
我有一个两机 MongoDB 副本集。主节点是私有的(内部使用),它保持平稳运行至关重要。次要是我们的主要公共副本,没有投票权。二级崩溃(例如,如果机器上的读取负载过多)并不重要。
我希望辅助服务器承担来自公共互联网的所有读取负载。我已使用rs.slaveOk()
. 但是,仍然可以将读取首选项设置primary
为从主数据库读取。
如何防止辅助节点将读取转发到主节点,从而导致主节点超载?
node.js - 无法在 MongoDB 中添加分片
我正在尝试部署 mongodb 分片。我已经在三台机器上部署了一个副本集。sh.addShard("test/mongodb1.example.net:27017")
但是,当我尝试到所有三个节点时,我似乎仍然无法使其工作。显示的错误是:
另一个错误:
1)为每个节点设置初始副本集(这工作正常)
a) 为所有 3 个节点运行这些:
b) 主节点运行:
2)为三副本集群设置配置服务器和查询路由器(这工作正常)
主节点运行:
3)添加分片(添加分片的问题)
主节点运行:
mongodb - MongoDB Replicaset Primary 失败
我正在探索 MongoDB 副本集,我想知道如何处理应用程序的故障转移。
以下是我的场景:
假设我有一个包含三个节点的副本集,比如 A(主要)、B(次要)和 C(次要)。
1.从我的应用程序中,我应该连接到哪个主机?一种?
2.主机A出现故障会怎样?一个辅助(比如 B)将接管为主。我的应用程序是否应该设计为处理这种转换并现在连接到 B?
提前致谢。我一直对如何设计应用程序同时保持副本集的高可用性感到困惑。