2013-03-04 73 views
9

我使用的是Ubuntu。如何關閉mongodb中的副本集?

我開局三個mongod的副本設置如下:

$ mongod --replSet setname --logpath "1.log" --dbpath /data/rs1 --port 27017 --smallfiles --fork 
$ mongod --replSet setname --logpath "2.log" --dbpath /data/rs2 --port 27018 --smallfiles --fork 
$ mongod --replSet setname --logpath "3.log" --dbpath /data/rs3 --port 27019 --smallfiles --fork 

我怎樣才能將其關閉?

回答

14

運行在Unix外殼下面的命令:

mongo --port 27017 --eval 'db.adminCommand("shutdown")' 
mongo --port 27018 --eval 'db.adminCommand("shutdown")' 
mongo --port 27019 --eval 'db.adminCommand("shutdown")' 
1

使用ps -ef | grep mongod,獲得端口號爲27017-27019的mongod的pid,並使用該pid殺死進程。

+0

ps -ef似乎打印太多的信息。那麼'ps -e'怎麼樣? – Huo 2013-03-04 11:33:54

+0

我想'killall mongod'可能也不錯。 – Huo 2013-03-04 11:45:32

0
mongod --port 27017 --shutdown 
mongod --port 27018 --shutdown 
mongod --port 27019 --shutdown 

順便說一句,如果你將來使用分片的任何可能性,這將是最好的,以避免端口27018和27019這些是碎片集羣某些組件的默認端口。

9

我不認爲接受的答案是正確的。經過一些谷歌搜索後,我發現在MongoDB用戶組中有this是最好的答案。

要關機:
- 運行db.runCommand({replSetFreeze:numOfSeconds})上二級到 從促進初級
防止 - 運行rs.stepDown(秒)在初級;它會檢查以確保 其中至少有一個輔助設備在降級之前已充分捕獲到oplog 。選擇相當長的等待時間。
- 一旦一切都是次要的,db.shutdownServer()上的一切

要啓動:
- 運行replSetFreeze在一個漫長的超時兩個次級(比如說, 1-2分鐘)
- 調出主要
- 使用降壓來解決,如果二次某種原因主要

簡單的關停是不夠的,你必須防止二次節點從促進小學。

0

在Windows上的MongoDB 3.2,我使用下列順序:

mongo mongodb://localhost:27019/admin --eval "db.shutdownServer({timeoutSecs: 10})" 
mongo mongodb://localhost:27018/admin --eval "db.shutdownServer({timeoutSecs: 10})" 
mongo mongodb://localhost:27017/admin --eval "db.shutdownServer({timeoutSecs: 10})" 
0

關機次級第一,以防止回滾。

mongo admin --port <port> --eval "<db.auth if needed>;db.shutdownServer()" 

來源:MongoDB的大學課程

0

這是一個老問題,但我仍然認爲我應該回答這個問題。

運行在Unix外殼

PS -ef以下命令| grep的蒙戈對應的端口27017,27018和27019.You可以

這將使你的PID的(進程ID)的列表使用pid來殺死所有replicaset的成員