mongoDB rs.initiate 挂起

4 mongodb

我在新的 mongoDB 安装上设置复制时遇到问题。当我在没有复制的情况下运行时一切正常,但是当我使用 --replSet 选项运行 mongod 并运行 rs.initiate() 时,此命令挂起。请注意,在此示例中,我仅运行了一个 mongod 实例。没有其他实例正在运行。

在日志文件中,我看到:

Wed Aug 15 10:02:04 [conn2] run command admin.$cmd { replSetInitiate: { _id: "regression_data", members: [ { _id: 0.0, host: "nradmin.icd.teradyne.com:27017" } ] } }
Wed Aug 15 10:02:04 [conn2] command: { replSetInitiate: { _id: "regression_data", members: [ { _id: 0.0, host: "nradmin.icd.teradyne.com:27017" } ] } }
Wed Aug 15 10:02:04 [conn2] replSet replSetInitiate admin command received from client
Wed Aug 15 10:02:04 [conn2] replSet replSetInitiate config object parses ok, 1 members specified
Wed Aug 15 10:02:04 [conn2] replSet replSetInitiate all members seem up
Wed Aug 15 10:02:11 [conn1] runQuery called local.system.replset {}
Wed Aug 15 10:02:21 [rsStart] Socket recv() timeout  127.0.0.1:27017
Wed Aug 15 10:02:21 [rsStart] SocketException: remote: 127.0.0.1:27017 error: 9001 socket exception [3] server [127.0.0.1:27017]
Wed Aug 15 10:02:21 [rsStart] DBClientCursor::init call() failed
Wed Aug 15 10:02:21 [rsStart] User Assertion: 10276:DBClientBase::findN: transport error: localhost:27017 query: {}
Wed Aug 15 10:02:21 [rsStart] runQuery called local.system.replset {}
Run Code Online (Sandbox Code Playgroud)

我玩过 bind_ip 选项,但没有运气。

这是我当前的配置文件:

dbpath = /hwnet/mongodb/regression_data/replica0
replSet = regression_data/nradmin.icd.teradyne.com
logpath = /hwnet/mongodb/regression_data/mongodb_r0.log
verbose = true
vvvvv = true
rest = true
fork = true
Run Code Online (Sandbox Code Playgroud)

这是在我的工作网络上运行的。我确实在独立的 Mac 安装上尝试了相同的设置,并且 rs.initiate() 命令运行良好。

有谁知道我应该在这里看什么?我的想法不多了。

小智 5

我能够在 mongoDB google group 上找到这个问题的解决方案。在我的配置文件中显式设置 oplogSize 参数解决了这个问题。默认情况下,mongod 尝试在存储分区上分配 5% 的可用空间。我的数据在一个非常大的共享磁盘上,这似乎需要很长时间。我手动设置了这个值,副本集很快就出现了。