Mongo分片而不关闭现有的mongo实例

时间:2012-08-23 15:24:24

标签: mongodb replication sharding

我需要在没有关闭的情况下进行分片,或者在端口 27017 中重新启动现有的mongo实例。

我尝试了以下操作,(当默认端口正在运行且mongo实例时)

mongod --shardsvr --dbpath /var/lib/mongodb/dba --port 10001 > /var/log/mongodb/shardlog/sharda.log &
mongod --shardsvr --dbpath /var/lib/mongodb/dbb --port 10002 > /var/log/mongodb/shardlog/shardb.log &

mongod --configsvr --dbpath /var/lib/mongodb/config --port 20000 > /var/log/mongodb/shardlog/configdb.log &
mongos --configdb localhost:20000 > /var/log/mongodb/shardlog/mongos.log &

然后mongos记录错误,

Thu Aug 23 14:44:36 [mongosMain] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Thu Aug 23 14:44:36 [mongosMain] ERROR:   addr already in use

mongos正在端口20000上运行,但是为什么它正在尝试连接默认的 27017 端口?

我是否可以使用多个分片启动mongos而不会干扰端口27017上的现有mongo实例?

1 个答案:

答案 0 :(得分:6)

从您给出的命令列表中,您似乎没有告诉mongos启动与默认端口不同的端口。

您需要为--port提供mongos参数才能在其他端口上启动。

尝试:mongos --configdb localhost:20000 --port 10003

注意:如上所述,mongos未在端口20000上运行。您在该端口上运行配置服务器