MongoDB的啟動與停止

來源:互聯網
上載者:User

標籤:arc   version   pen   tool   chain   name   level   mongo   fuse   

1:啟動和停止Mongodb   1)從命令列啟動     執行mongod,啟動MongoDB伺服器,mongod有很多可配置的啟動選項,可以使用 mongod --help查看所有選項  --dbpath:指定資料目錄,預設是/data/db下,每個mongod進程都需要獨立的資料目錄,加入有3個mongod執行個體,就必須要有3個獨立的資料目錄。當mongod啟動時,會在資料目錄中建立mongod.lock檔案。這個檔案用於防止其他mongod進程使用該資料目錄。若當有一個mongd啟動後,再啟動另一個mongod時,若再使用剛剛已經啟動mongod的目錄,那麼會報錯:
2017-07-06T16:03:09.703+0800 I STORAGE [initandlisten] exception in initAndListen: 98 Unable to lock file: mongodb/0706/mongod.lock Resource temporarily unavailable. Is a mongod instance already running?, terminating
   --port:指定伺服器監聽的連接埠號碼。預設連接埠號碼為27017,要是運行多個mongod,必須指定不同的連接埠號碼若有一個27017的連接埠已經使用了,那麼如果啟動第二個mongod的時候,若還指定27017的話,會報錯:
2017-07-06T16:13:07.215+0800 E NETWORK [initandlisten] listen(): bind() failed Address already in use for socket: 0.0.0.0:27017
   --fork:以守護進程的方式運行MongoDB,建立服務進程,相當於nohup ... &
nohup mongodb/bin/mongod --dbpath mongodb/0706 &
  與
mongodb/bin/mongod --dbpath mongodb/0706 --fork 
一樣的效果   --logpath:  指定輸出日誌的路徑,而不是輸出到命令列。如果對檔案夾有寫入權限的話,系統會在檔案不存在時建立它。它將會已有檔案覆蓋掉,清除原來所有的日誌記錄。如果想保留原來的日誌,還需要使用 --logappend   --config:指定設定檔,載入命令列未指定的各種選項   --directoryperdb:
使用該參數可以將每個資料庫存放在單獨的目錄中比如我建立兩個資料庫,那麼在資料目錄下會自動建立資料庫名一樣的檔案夾
  啟動資料庫時,MongoDB會將一個檔案寫入local資料庫的startup_log集合中,該集合包含了MongoDB的版本,所基於的系統等
    > use local    switched to db local    > db.startup_log.findOne()    {    "_id" : "vst2-1499343744092",    "hostname" : "vst2",    "startTime" : ISODate("2017-07-06T12:22:24Z"),    "startTimeLocal" : "Thu Jul 6 20:22:24.092",    "cmdLine" : {    "storage" : {    "dbPath" : "mongodb/0707",    "directoryPerDB" : true    }    },    "pid" : NumberLong(15613),    "buildinfo" : {    "version" : "3.4.5",    "gitVersion" : "520b8f3092c48d934f0cd78ab5f40fe594f96863",    "modules" : [ ],    "allocator" : "tcmalloc",    "javascriptEngine" : "mozjs",    "sysInfo" : "deprecated",    "versionArray" : [    3,    4,    5,    0    ],    "openssl" : {    "running" : "OpenSSL 1.0.1f 6 Jan 2014",    "compiled" : "OpenSSL 1.0.1f 6 Jan 2014"    },    "buildEnvironment" : {    "distmod" : "ubuntu1404",    "distarch" : "x86_64",    "cc" : "/opt/mongodbtoolchain/v2/bin/gcc: gcc (GCC) 5.4.0",    "ccflags" : "-fno-omit-frame-pointer -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O2 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-but-set-variable -Wno-missing-braces -fstack-protector-strong -fno-builtin-memcmp",    "cxx" : "/opt/mongodbtoolchain/v2/bin/g++: g++ (GCC) 5.4.0",    "cxxflags" : "-Woverloaded-virtual -Wno-maybe-uninitialized -std=c++11",    "linkflags" : "-pthread -Wl,-z,now -rdynamic -Wl,--fatal-warnings -fstack-protector-strong -fuse-ld=gold -Wl,--build-id -Wl,-z,noexecstack -Wl,--warn-execstack -Wl,-z,relro",    "target_arch" : "x86_64",    "target_os" : "linux"    },    "bits" : 64,    "debug" : false,    "maxBsonObjectSize" : 16777216,    "storageEngines" : [    "devnull",    "ephemeralForTest",    "mmapv1",    "wiredTiger"    ]    }    }

 

 預設情況下,啟動mongod時還會啟動一個基本的HTTP伺服器,該伺服器監聽的連接埠號碼比主服務的連接埠號碼大1000。這個服務提供了HTTP介面,可以查看Mongodb的一些基本資料。這些資訊也可以通過shell來查看。比如說你啟動的是預設連接埠27017,那麼在瀏覽器開啟http://10.0.0.13:28017  但是你開啟的時候可能沒有,因為預設管理介面是關閉的,所以在啟動的時候加上開啟管理介面參數 --httpinterface,也就是  mongodb/bin/mongod --dbpath mongodb/0706 --fork --logpath 0706.log --httpinterface 
  
 當你點進去的時候,是這樣的,說你的參數沒開啟,所以啟動的時候還得加上 --rest參數  加上參數重新啟動之後,可以看到,有詳細的資訊了  2):設定檔Mongodb支援從檔案讀取設定檔。指定設定檔可以使用 -f--config選項   2:停止Mongodb方法一:查看進程,使用kill命令; 不能使用kill -9
方法二:在用戶端進去,使用shutdown命令
> use admin;switched to db admin> db.shutdownServer();server should be down...

 

在主節點(primary)上運行shutdown命令時,伺服器在關閉之前,會先等待備份節點追趕主節點以保持同步。這將復原的可能性降至最低,但shutdown操作有失敗的可能性。如幾秒鐘內沒有備份節點成功同步,則shutdown操作失敗,主節點不會停止運行。   3:日誌在啟動mongod的時候,可以指定日誌的層級,即(-v、-vv、-vvv、-vvvv、-vvvvv)或者在shell命令列執行命令修改
mongodb/bin/mongod --dbpath mongodb/0707 --directoryperdb --fork -vvv 
記錄層級越大,輸出的日誌越詳細,調至5時,這時mongod會在日誌中記錄幾乎所有的操作,包括每一個請求所處理的內容。 MongoDB預設記錄耗時超過100毫秒的查詢資訊。如果100毫秒不適合需求,可以通過setProfilingLevel命令來改變,下面這條命令表示記錄查詢時間超過500毫秒的訊息
    > db.setProfilingLevel(1,500)    { "was" : 0, "slowms" : 100, "ok" : 1 }
 如果想要日誌分割,如按天存放,有兩種方法 方法一:每天定時的執行 kill -USR1 進程號,這樣就可以看到,每執行一次kill -USR1 進程號,那麼就會重建一個記錄檔   方法二:在MongoDB的shell行執行,每執行一次都會產生一個新的記錄檔
    > db.adminCommand({"logRotate":1})    { "ok" : 1 }
  要使分割日誌生效,必須啟動的時候使用 --logpath,然後可以根據自己的需求,寫shell或python指令碼,然後crontab做成定時任務   

MongoDB的啟動與停止

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.