Mongodb

一台伺服器上的多個 Mongo

  • May 25, 2014

我不是在談論分片。我們有一個測試伺服器(linux),並且已經有一個mongo屬於另一個項目/子團隊。是否可以在一台機器上執行多個獨立的實例mongodb?我該怎麼做?

是的,您可以通過為 的其他實例指定不同的埠號和數據目錄mongod,然後在客戶端中指定新的埠號來做到這一點。

例如:

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

如果需要,您還可以更改分片伺服器和配置伺服器埠號。

我採取的步驟是:

  1. 將 conf 文件 /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/mongod 替換為 /var/lock/subsys/mongod2 (分別為 mongod3),無論我在哪裡找到它。

抵制將 mongod.lock 替換為 mongod2.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 二進製文件的任何副作用..

希望這可以幫助。

$$ Later edit $$ 要自動啟動實例,只需 ln -s /etc/init.d/mongod2 /etc/rc.d/rc3.d/S86mongod 和 ln -s /etc/init.d/mongod3 /etc/rc.d/rc3 .d/S87mongod :)

引用自:https://serverfault.com/questions/296246