Mongodb
一台伺服器上的多個 Mongo
我不是在談論分片。我們有一個測試伺服器(linux),並且已經有一個
mongo
屬於另一個項目/子團隊。是否可以在一台機器上執行多個獨立的實例mongodb
?我該怎麼做?
是的,您可以通過為 的其他實例指定不同的埠號和數據目錄
mongod
,然後在客戶端中指定新的埠號來做到這一點。例如:
./mongod --dbpath /foo/bar/otherpath --port some_other_port
如果需要,您還可以更改分片伺服器和配置伺服器埠號。
我採取的步驟是:
- 將 conf 文件 /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/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 :)