58

我正在与 Mongo DB 合作,我是新手。我即将将它安装在专门用于 Mongo 的服务器上。

我想创建 2 个实例 - 1 个用于支持 QA 环境,另一个用于支持暂存环境。

我更熟悉可以创建多个实例的 SQL Server。

是否可以对 Mongo DB 做同样的事情,如果可以,怎么做?

4

4 回答 4

66

上述答案不是运行多个实例的推荐方法(尤其是当服务器可能同时运行时),因为它会导致使用相同的配置参数,例如logpathpidfilepath在大多数情况下不是你的想。

请考虑创建专用的 mongod 配置文件,例如mongod-QA.confmongod-STAGE.conf。在这些文件中,您可能希望提供特定于每个 mongod 实例的dbpathlogpath文件夹、bind_ipportpidfilepath,它们不会相互影响。

在这些步骤之后,您可以触发两个实例,如下所示

mongod --config <path-to>/mongod-QA.conf
mongod --config <path-to>/mongod-STAGE.conf

您可以在 mongodb 文档页面上找到更多详细信息

于 2015-01-28T14:06:31.547 回答
52

您只需要为第二个实例创建另一个文件夹(例如:mongodb2) dbpath ,并在不同的端口(例如:27018)中运行它

 mongod --dbpath /usr/local/var/mongodb2 --port 27018
于 2013-04-10T15:30:35.213 回答
39

这是我在同一台电脑上启动 4 个mongod 以在开发环境中模拟生产环境的方法。

要启动mongod,您应该为每个 mongod 使用单独的配置。获取 4 个配置并使用它们启动mongods

start C:\mongodb\bin\mongod.exe --config C:\net2\dev1-pc\configs\mongod-primary1.cfg 
start C:\mongodb\bin\mongod.exe --config C:\net2\dev1-pc\configs\mongod-secondary1.cfg --rest
start C:\mongodb\bin\mongod.exe --config C:\net2\dev1-pc\configs\mongod-secondary2.cfg
start C:\mongodb\bin\mongod.exe --config C:\net2\dev1-pc\configs\mongod-secondary3.cfg

配置如下所示:

mongod-primary1.cfg 文件内容

systemLog:
    destination: file
    path: c:\net2\primary1-pc\data\log\mongod.log
storage:
    dbPath: c:\net2\primary1-pc\data\db
net:
    port: 27018
replication:
    replSetName: repl1

mongod-secondary1.cfg 文件内容

systemLog:
    destination: file
    path: c:\net2\secondary1-pc\data\log\mongod.log
storage:
    dbPath: c:\net2\secondary1-pc\data\db
net:
    port: 27019
replication:
    replSetName: repl1

mongod-secondary2.cfg 文件内容

systemLog:
    destination: file
    path: c:\net2\secondary2-pc\data\log\mongod.log
storage:
    dbPath: c:\net2\secondary2-pc\data\db
net:
    port: 27020
replication:
    replSetName: repl1

mongod-secondary3.cfg 文件内容

systemLog:
    destination: file
    path: c:\net2\secondary3-pc\data\log\mongod.log
storage:
    dbPath: c:\net2\secondary3-pc\data\db
net:
    port: 27021
replication:
    replSetName: repl1
于 2016-02-04T05:32:35.667 回答
11

这是可能的——你会给每个人一个自己的端口来监听,以及它自己的 --dbpath 目录来放置它的文件,但我不建议这样做,因为它们都会竞争相同的资源——RAM、i/ o 带宽等。

如果您在此服务器上有多个磁盘,则可以将它们的数据文件放在不同的设备上,但您仍然冒着 QA 实例降低生产实例可用性的风险,可能是在最坏的时间。

在将 QA 实例与我的生产实例并置之前,我会将 QA 实例放在正在做一些不重要的事情的随机机器上。

于 2013-02-28T00:07:30.667 回答