接手的MongoDB只有一個日誌文件,體積非常大,排錯不便。在找解決辦法的時候發現MongoDB的啟動文件配置項超級多,於是產生瞭解釋配置參數的想法。 mongod服務有兩種啟動方式 一種是通過配置文件 $ ./mongod -f /app/mongodb/mongodb27017/conf/mon ...
接手的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環境下開啟,否則將會導致跟蹤錯誤比較困難。 參考文檔:https://www.cnblogs.com/AlvinLee/p/6055255.html