MongoDB 副本集初始同步

标签 mongodb

对次级进行初始同步是一个非常耗时的过程,我在 MongoDB 文档中没有找到任何地方表明主可以在初始同步期间接受写操作,或者如果不推荐的话。在此过程中保持主要操作(用于写入)是否安全?

谢谢

最佳答案

为了让主节点接受写入,必须至少有一定数量的投票副本集成员可用于投票并投票给同一个主节点。例如,对于 3 个成员的副本集,您至少需要 2 个。

处于初始同步状态的辅助节点应该处于 Recovering 状态并且根据文档可以投票 http://docs.mongodb.org/manual/reference/replica-states/ :

3 RECOVERING Can vote. Members either perform startup self-checks, or transition from completing a rollback or resync.

现在应该吗?我认为这个问题取决于之前集合中有多少成员。如果您一直在使用 2 个数据节点和 1 个仲裁器运行,那么仅使用 1 个数据节点运行一段时间是您唯一可以回答的问题 - 是的,它的风险更高,但您有什么选择,完全关闭?

如果您有 3 个数据节点,其中 1 个因初始同步而停机,我看不出有什么问题,除非您有非常高的数据冗余需求。

如果您从只有 1 个节点开始,并且正在很好地过渡到副本集,那么您的情况不会比以前更糟。

最重要的是始终确保您的副本集至少有 3 个成员,最好至少有 2 个数据节点,并且通常来说选民数量为奇数。

关于MongoDB 副本集初始同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985700/

相关文章:

json - 通过在golang中检查MongoDB中的多个属性值来检索项目列表

java - MongoDB Java API ISO日期

javascript - MongoDB:如何返回 JSON 中的特定字段和特定子文档

mongodb - 如何使用 MongoDB 或其他文档数据库保存视频文件,可选择添加到现有二进制文件和并行读/写

mongodb - 在 mongodb 中查询和排序动态、非唯一字段时的范围分页

node.js - Mongoose Date.now 时间不准确

javascript - 不要从 js 对象发送数据

MySQL 密码 () 列 : migration to MongoDB

node.js - TypeScript、MongoDB 和引用问题

javascript - MongoDB 对象不更新