MongoDB replSet需要永远启动

时间:2013-01-21 17:36:28

标签: mongodb replication

我正在我的localhost上设置一个副本集,只是为了练习使用必要的命令。我在家里和工作中都这样做。在家中,rs.initiate()命令大约需要三秒钟才能运行,rs.status()需要大约两到三分钟才能为我提供PRIMARY或{{1}的所有状态}。这与我的预期有关。

但是当我在工作时这样做时,SECONDARY只花了将近7分钟让我回到mongo shell中的提示,然后在状态为rs.initiate()或{{1 }}。与此同时,我发起连接的是PRIMARYSECONDARY,其他两个是SECONDARY。他们只是坐在那里PRIMARY,持续十分钟。

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

当我正在检查rs.initiate()时,这两个辅助服务器继续接受和删除连接,并分配数据文件,就像第一步中的主服务器一样。

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

2 个答案:

答案 0 :(得分:3)

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

如果你在尝试启动其他节点之前等到rs.initiate()完成(即你看到PRIMARY),我想你会看到你期望的结果。

答案 1 :(得分:0)

如果您遇到此问题,请尝试重新启动mongodb。我用新的db面对这个问题。我通过重启mongodb解决了这个问题。