同一台服务器上的多个MongoDB实例
我正在和Mongo DB合作,我是一个新手。 我即将安装在专门为Mongo服务器上。
我想创build2个实例 – 1来支持QA环境,另一个来支持分段环境。
我更熟悉SQL Server,我可以创build多个实例。
是否有可能做同样的Mongo DB,如果是的话,如何?
前面提到的答案不是推荐的方式来运行多个实例(特别是当服务器可能同时运行时),因为它会导致使用相同的configuration参数,例如logpath和pidfilepath ,在大多数情况下不是你想。
请考虑创build专用的mongodconfiguration文件,如mongod-QA.conf和mongod-STAGE.conf 。 在这些文件中,您可能需要提供特定于每个mongod实例的dbpath , logpath文件夹, bind_ip , port和pidfilepath ,这些文件不会相互影响。
完成这些步骤之后,您可以按照以下方式触发两个实例
mongod --config <path-to>/mongod-QA.conf mongod --config <path-to>/mongod-STAGE.conf
你可以在mongodb文档页面find更多的细节
你只需要为第二个实例创build另一个文件夹(例如:mongodb2)dbpath,然后在不同的端口上运行(例如:27018)
mongod --dbpath /usr/local/var/mongodb2 --port 27018
下面是我如何在同一台PC上启动4个mongod来仿真开发环境中的生产环境。
要启动mongod,你应该为每个mongod使用单独的configuration 。 以4个configuration并使用它们启动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
Configs看起来像这样:
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实例放在一个随机的机器上,这个机器做了一些不重要的事情,然后把它和我的生产实例放在一起。