MongoDB啟動檔案配置引數詳解

洲渚皓月掩映發表於2018-11-15

接手的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環境下開啟,否則將會導致跟蹤錯誤比較困難。 
 
 
 

 

相關文章