一台服务器上有多个 Mongos

一台服务器上有多个 Mongos

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

答案1

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

例如:

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

你可以也改变如果需要,分片服务器和配置服务器端口号。

答案2

我采取的步骤如下:

  1. 将配置文件 /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/mongod2(分别是 mongod3)替换 /var/lock/subsys/mongod。

抵制用 mongod2.lock 替换 mongod.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 :)

相关内容