我不是在谈论分片。 我们有一个测试服务器 (linux),并且已经有一个mongo
属于另一个项目/子团队的服务器。是否可以运行多个孤立实例一台机器上mongodb
?我该怎么做?
答案1
是的,您可以通过为的其他实例指定不同的端口号和数据目录mongod
,然后在客户端中指定新的端口号来实现这一点。
例如:
./mongod --dbpath /foo/bar/otherpath --port some_other_port
你可以也改变如果需要,分片服务器和配置服务器端口号。
答案2
我采取的步骤如下:
- 将配置文件 /etc/mongod.conf 复制到 mongod2.conf 和 mongod3.conf
- 编辑 conf 文件以具有不同的端口和不同的数据库路径
- 将 init.d 启动脚本 /etc/init.d/mongod 复制到 mongod2 和 mongod3
- 将二进制 mongod /usr/bin/mongod 复制到 /usr/bin/mongod2 和 /usr/bin/mongod3
编辑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 :)