一台服务器上有多个Mongos


11

我不是在谈论分片。我们有一个测试服务器(Linux),已经有一个mongo属于另一个项目/子团队。是否有可能运行多个孤立事件mongodb一台机器上?我该怎么做?

Answers:


14

是的,您可以通过为的其他实例指定不同的端口号和数据目录mongod,然后在客户端中指定新的端口号来做到这一点。

例如:

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

如果需要,您还可以更改分片服务器和配置服务器的端口号。


1
是否可以在mongodb.conf中指定它?还是我必须创建一个脚本来做到这一点?(在* nix上)
贾斯汀

@Justin,您当然可以在配置文件中指定这些选项-参见mongodb.org/display/DOCS/File+Based+Configuration。但是随后您仍然需要将不同的配置文件传递给不同的实例。
dsolimano 2011年

感谢@dsolimano,我在rc.d中为两个Mongo实例提供了两个脚本。我为db,pid,logging指定了不同的路径,并为它们提供了不同的端口以供监听。它也在被分叉,当第二个脚本运行时它失败,因为mongo已经在运行(第一个实例)。因此,我想我真正的问题是(我在网上找不到很多运气了)是否可以同时运行两个派生实例?谢谢
贾斯汀

@Justin,我认为这可能上升到一个新问题的水平,也许您应该在此网站上问它?听起来您启动Mongo的方式有些问题。
dsolimano

3

我采取的步骤是:

  1. 将conf文件/etc/mongod.conf复制到mongod2.conf以及mongod3.conf
  2. 编辑conf文件以具有不同的端口和不同的数据库路径
  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 / mongod替换为/ var / lock / subsys / mongod2(分别为mongod3)。

抵制将mongod.lock替换为mongod2.lock(或分别替换为mongod3.lock)的诱惑。它们位于不同的文件夹中(数据库文件夹不同),并且不会发生冲突。

现在我能

service mongod start|stop|status

service mongod2 start|stop|status

service mongod3 start|stop|status

并且

mongo --port <port_number> 

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

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

希望这可以帮助。

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


不错啊!在没有太多运气的情况下做了完全一样的事情,因为我不认为我们也应该复制mongod可执行文件本身。现在一切都好。
2013年

就我而言,使用Ubuntu 16.01,没有init.d脚本。您可以提供init.d脚本内容吗?
Shubham A.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.