接手的MongoDB只有一個日誌檔案,體積非常大,排錯不便。在找解決辦法的時候發現MongoDB的啟動檔案配置項超級多,於是產生了解釋配置引數的想法。
mongod服務有兩種啟動方式
一種是通過配置檔案 $ ./mongod -f /app/mongodb/mongodb27017/conf/mongodb.conf
一種直接指明引數 $./mongod –dbpath=/app/mongodb/db –port=27017 –fork –logpath=/app/mongodb/db/mongodb.log
由於安裝檔案沒有預設的配置檔案,需要配置的引數項又比較多,推薦使用配置檔案的方式啟動服務。下面詳細介紹配置
storage: dbPath: "/data/mongodb/data” #資料目錄 directoryPerDB: true #將不同DB的資料分子目錄儲存,基於dbPath,預設為 false engine: “wiredTiger" #儲存引擎,3.2後預設wiredTiger 可選 mmapv1 wiredTiger: engineConfig: cacheSizeGB: 15 #Mongodb吃記憶體,並且不會主動釋放,預設的快取大小為max(1/2maxmem,256M),可參照系統總記憶體進行設定。 journalCompressor: snappy #journal日誌的壓縮演算法,可選值為“none”、“snappy”、“zlib”。壓縮差別可百度,總體來說snappy最合適。 directoryForIndexes: true #是否將索引和collections資料分別儲存在dbPath單獨的目錄中。預設值為false,放在一個目錄。 collectionConfig: blockCompressor: snappy #collection資料壓縮演算法,可選值“none”、“snappy”、“zlib” indexConfig: prefixCompression: true #是否對索引資料使用“字首壓縮” ,對那些經過排序的值儲存,可以減少索引資料的記憶體使用量。預設值為true。 journal: enabled: true #是否開啟journal日誌持久儲存,journal日誌用來資料恢復,是mongod最基礎的特性,通常用於故障恢復。 commitIntervalMs: 100 #New in version 3.2. 日誌提交間隔 systemLog: destination: file #日誌輸出目的地,可為 file 或 syslog; if file, you must also specify systemLog.path path: "/var/log/mongodb/mongodb.log" logAppend: true #啟動或重啟後是否追加寫入 logRotate: rename #防止一個日誌檔案特別大,可選項:rename(重新命名日誌檔案,預設值);reopen(使用linux日誌rotate特性,關閉並重新開啟此日誌檔案,可以避免日誌丟失,但是logAppend必須為true) timeStampFormat: ctime #時間格式 預設為 iso8601-local replication: oplogSizeMB: 10240 replSetName: getui-bi enableMajorityReadConcern: false processManagement: fork: true #守護程式模式啟動,預設 false pidFilePath: "/var/run/mongodb/mongod.pid” #配合"fork:true"引數,將mongod/mongos程式ID寫入指定的檔案,如果不指定,將不會建立PID檔案 net: bindIp: 127.0.0.1 port: 27017 ipv6: false #是否支援mongos/mongod多個例項之間使用IPV6網路,預設值為false。此值需要在整個cluster中保持一致。 maxIncomingConnections: 10000 #程式允許的最大連線數,預設:65536 wireObjectCheck : false #當客戶端寫入資料時,mongos/mongod是否檢測資料的有效性(BSON),如果資料格式不良,此insert、update操作將會被拒絕;預設值為true unixDomainSocket: enabled : true security: keyFile: /opt/mongodb/etc/mongodb-keyfile #指定分片集或副本整合員之間身份驗證的key檔案儲存位置。 authorization: enabled #開啟訪問資料庫和進行操作的使用者角色認證
回到寫這篇部落格的原因,Mongodb的日誌量較大,可通過上述rename的方式進行日期分類,也可設定日誌級別和安靜模式,使日誌量減小。
systemLog: #系統日誌配置
verbosity: <int> #日誌級別,0:預設值,包含“info”資訊,1~5,即大於0的值均會包含debug資訊
quiet: <boolean> #”安靜”,此時mongod/mongos將會嘗試減少日誌的輸出量。不建議在production環境下開啟,否則將會導致跟蹤錯誤比較困難。