【发布时间】:2013-02-27 23:29:03
【问题描述】:
我正在使用 Mongo DB,我是新手。我即将将它安装在专门用于 Mongo 的服务器上。
我想创建 2 个实例 - 1 个用于支持 QA 环境,另一个用于支持暂存环境。
我更熟悉可以创建多个实例的 SQL Server。
是否可以对 Mongo DB 做同样的事情?如果可以,如何做?
【问题讨论】:
标签: mongodb
我正在使用 Mongo DB,我是新手。我即将将它安装在专门用于 Mongo 的服务器上。
我想创建 2 个实例 - 1 个用于支持 QA 环境,另一个用于支持暂存环境。
我更熟悉可以创建多个实例的 SQL Server。
是否可以对 Mongo DB 做同样的事情?如果可以,如何做?
【问题讨论】:
标签: mongodb
前面提到的answer 不是运行多个实例的推荐方式(尤其是当服务器可能同时运行时),因为它会导致使用相同的配置参数,例如 logpath em> 和 pidfilepath 在大多数情况下不是你想要的。
请考虑创建专用的 mongod 配置文件,例如 mongod-QA.conf 和 mongod-STAGE.conf。在这些文件中,您可能需要提供 dbpath、logpath 文件夹、bind_ip、port 和 pidfilepath 特定于每个 mongod 实例,不会相互影响。
完成这些步骤后,您可以触发两个实例,如下所示
mongod --config <path-to>/mongod-QA.conf
mongod --config <path-to>/mongod-STAGE.conf
您可以在 mongodb 文档page找到更多详细信息
【讨论】:
您只需为第二个实例创建另一个文件夹(例如:mongodb2)dbpath,并在不同的端口(例如:27018)中运行它
mongod --dbpath /usr/local/var/mongodb2 --port 27018
【讨论】:
mongo --port 27018
这是我如何在同一台电脑上启动 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
【讨论】:
这是可能的——你可以给每一个单独的端口来监听,并给它自己的 --dbpath 目录来放置它的文件,但我不建议这样做,因为它们都将竞争相同的资源 - RAM , i/o 带宽等。
如果您在此服务器上有多个磁盘,您可以将它们的数据文件放在不同的设备上,但您的 QA 实例仍有可能降低生产实例的可用性,可能是在最坏的时间。
在将 QA 实例与我的生产实例放在一起之前,我会将它放在正在做一些不重要的事情的随机机器上。
【讨论】: