2

我正在我的本地主机上设置一个副本集,只是为了练习使用必要的命令。我在家里和工作中都这样做。在家里,该rs.initiate()命令大约需要三秒钟才能运行,大约需要两到三分钟rs.status()才能给我所有状态为PRIMARYSECONDARY。这和我预期的差不多。

但是当我在工作中这样做时,rs.initiate()需要将近 7 分钟才能在 mongo shell 中返回我的提示,然后再过 10 分钟,状态全部为PRIMARYor SECONDARY。同时,我发起连接的那个是 in SECONDARYPRIMARY另外两个是RECOVERING。他们只是坐在那里,,RECOVERING十分钟。

rs.initiate()命令运行时,mongod我连接的(端口 10001)不断吐出有关“分配数据文件”的内容,然后是“完成分配数据文件”,然后是“分配新数据文件”,依此类推,直到它有十几个那些文件。另外两个一直坐在那里,“replSet 无法从自己或任何种子 (EMPTYCONFIG) 获取 local.system.replset 配置”。

当我检查rs.status()时,两个辅助节点继续接受和删除连接,并像第一步中的主节点一样分配数据文件。

那么它应该花这么长时间吗?而且,如果是这样,为什么我家的机器可以在几秒钟内完成?唯一的区别是我在家里运行的是 32 位而不是 64 位。

4

2 回答 2

3

您工作环境的磁盘上有多少可用磁盘空间?MongoDB 默认为其 oplog(“本地”数据库)分配 5% 的可用磁盘空间。根据您提供的信息,我的猜测是您的工作机器上的可用磁盘空间比家用机器大得多。

如果您等到 rs.initiate() 完成(即您看到 PRIMARY),然后再尝试启动其他节点,我想您会看到您期望的结果。

于 2013-01-25T05:11:13.170 回答
0

如果您遇到此问题,请尝试重新启动 mongodb。我用新鲜的数据库遇到了这个问题。我通过重新启动mongodb解决了它。

于 2016-10-09T18:35:12.540 回答