我正在我的localhost上设置一个副本集,只是为了练习使用必要的命令。我在家里和工作中都这样做。在家中,rs.initiate()
命令大约需要三秒钟才能运行,rs.status()
需要大约两到三分钟才能为我提供PRIMARY
或{{1}的所有状态}。这与我的预期有关。
但是当我在工作时这样做时,SECONDARY
只花了将近7分钟让我回到mongo shell中的提示,然后在状态为rs.initiate()
或{{1 }}。与此同时,我发起连接的是PRIMARY
或SECONDARY
,其他两个是SECONDARY
。他们只是坐在那里PRIMARY
,持续十分钟。
当RECOVERING
命令正在运行时,我连接的RECOVERING
(端口10001)不断吐出有关“分配数据文件”的内容,然后“完成分配数据文件”,然后“分配”新数据文件“,依此类推,直到它有大约十几个这样的文件。另外两个只是坐在那里“replSet无法从自己或任何种子(EMPTYCONFIG)获取local.system.replset配置”。
当我正在检查rs.initiate()
时,这两个辅助服务器继续接受和删除连接,并分配数据文件,就像第一步中的主服务器一样。
它应该花这么久吗?而且,如果是这样,为什么我家的机器会在几秒钟内完成?唯一的区别是我在家里运行的那个是32位而不是64位。
答案 0 :(得分:3)
工作环境的磁盘上有多少可用磁盘空间? MongoDB默认为其oplog(“本地”数据库)分配5%的可用磁盘空间。根据您提供的信息,我的猜测是您的工作机器上的可用磁盘空间比您的家用机器大得多。
如果你在尝试启动其他节点之前等到rs.initiate()完成(即你看到PRIMARY),我想你会看到你期望的结果。
答案 1 :(得分:0)
如果您遇到此问题,请尝试重新启动mongodb。我用新的db面对这个问题。我通过重启mongodb解决了这个问题。