一台服务器上有多个Mongo

我不是在谈论分片 。 我们有一个testing服务器(linux),并且已经有一个mongo属于另一个项目/小组。 是否有可能在一台机器上运行多个独立mongodb 实例 ? 我该怎么做?

是的,您可以通过为mongod的其他实例指定不同的端口号和数据目录,然后在客户端指定新的端口号来完成此操作。

例如:

 ./mongod --dbpath /foo/bar/otherpath --port some_other_port 

您也可以根据需要更改分片服务器和configuration服务器端口号。

我采取的步骤是:

  1. 复制configuration文件/etc/mongod.conf到mongod2.conf和mongod3.conf
  2. 编辑conf文件以具有不同的端口和不同的数据库path
  3. 复制init.d启动脚本/etc/init.d/mongod到mongod2,也复制到mongod3
  4. 将二进制mongod / usr / bin / mongod复制到/ usr / bin / mongod2,并复制到/ usr / bin / mongod3
  5. 编辑init.d启动脚本并更改以下内容:

    CONFIGFILE =“/etc/mongod2.conf”(分别是mongod3.conf)

    ….

    mongod = $ {MONGOD- / usr / bin / mongod2}(分别为mongod3)

将/ var / lock / subsys / mongodreplace为/ var / lock / subsys / mongod2(分别为mongod3)。

抵制诱惑,用mongod2.lock(或mongod3.lock,分别)replacemongod.lock。 他们在不同的文件夹(数据库文件夹是不同的),不会发生冲突。

现在我能

 service mongod start|stop|status service mongod2 start|stop|status service mongod3 start|stop|status 

并且

 mongo --port <port_number> 

对于每个mongo实例(记住conf文件中的端口设置)

我不知道重命名mongod二进制文件的任何副作用..

希望这可以帮助。

[稍后编辑]要自动启动实例,只需inputln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod和ln -s /etc/init.d/mongod3 / etc / rc .d / rc3.d / S87mongod 🙂