MongoDB的啟動與停止(一)


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做成定時任務
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM