1. 程式人生 > >mongodb的啟動與關閉

mongodb的啟動與關閉

1 mongodb的幾種啟動方法

  啟動Mongodb服務有兩種方式,前臺啟動或者Daemon方式啟動,前者啟動會需要保持當前Session不能被關閉,後者可以作為系統的fork程序執行,下文中的path是mongodb部署的實際地址。

 1. 最簡單的啟動方式,前臺啟動,僅指定資料目錄,並且使用預設的27107埠,cli下可以直接使用./mongo連上本機的mongodb,一般只用於臨時的開發測試。copy

  1. ./mongod --dbpath=/path/mongodb  

    2. 啟動繫結固定的IP地址、埠,這就mongo在連線mongod的時候就需要指定IP和埠了。copy

  1. ./mongod --dbpath=/path/mongodb --bind_ip=10.10.10.10 --port=12345  
  2. //連線mongod  
  3. ./mongo 10.10.10.10:12345  

    3. daemon後臺執行,簡單的是命令後面加“&”。copy

  1. ./mongod --dbpath=/path/mongodb --bind_ip=10.10.10.10 --port=12345 &  

    或者使用mongod自帶的--fork引數,此時必須指定log的路徑。copy

  1. ./mongod --dbpath=/path/mongodb --fork=true logpath=/path/mongod.log  

    4. (推薦)以配置檔案形式儲存配置。view plain copy

  1. port=12345  
  2. bind_ip=10.10.10.10  
  3. logpath=/path/mongod.log  
  4. pidfilepath=/path/mongod.pid  
  5. logappend=true  
  6. fork=true  

  然後啟動mongod時引入配置檔案view plain copy

  1. ./mongod -f /path/mongod.conf  
下面是mongod啟動的常用引數詳細說明:
引數 說明 取值示例
dbpath mongodb資料檔案儲存路徑 /data/mongodb
logpath mongod的日誌路徑 /var/log/mongodb/mongodb.log
logappend 日誌使用追加代替覆蓋 true
bind_ip 繫結的IP 10.10.10.10
port 繫結的埠 27107
journal write操作首先寫入“日記”,是一個數據安全的設定,具體參考官方文件。 true

Mongodb開機啟動

在/etc/rc.local檔案末尾新增下面的程式碼
#add mongodb service
rm -rf /data/mongodb_data/* && /usr/local/mongodb/bin/mongod --dbpath=/data/mongdb_data/ --logpath=/data/mongdb_log/mongodb.log --logappend &

2 關閉mongodb

前臺執行:

如果沒有使用--fork,直接可以前臺退出終端關閉。 通過這種方式,Mongodb將會自己做清理退出,把沒有寫好的資料寫完成,並最終關閉資料檔案。 要注意的是這個過程會持續到所有操作都完成。

2後臺執行:

如果使用--fork在後臺執行mongdb服務,那麼就要通過向伺服器傳送shutdownServer()訊息來關閉。
1、普通命令:
$ ./mongod
> use admin
> db.shutdownServer()
要注意的是,這個命令只允許在本地,或是一個經過認證的客戶端
2、如果這是一個主從式的複製叢集,在1.9.1版本後將按下面的步驟來關閉
檢查從Mongodb的資料更新時間
如果所有的從Mongodb和主的時間差都超過10,這個時候不會關閉mongodb (在這種情況下面,我們可以通過配置timeoutSecs的方式來讓從Mongodb完成資料的更新)
如果其中有一個從Mongodb與主服務時間差在10秒內,那麼主伺服器將會關閉,並且等待從Mongodb更新完成並關閉。
3、如果沒有up-to-date 從Mongodb且你想強制關閉服務,可以通過新增force:true;命令如下:
> db.adminCommand({shutdown : 1, force : true})
> //or
> db.shutdownServer({force : true})
4、指定特定超時時間的關閉伺服器,命令同上,另外加上一個timeoutsec:引數
> db.adminCommand(shutdown : 1, force : true, timeoutsec : 5)
> //or
> db.shutdownServer({force : true, timeoutsec : 5})