天天看點

mongodb配置檔案解析

樣例(YAML格式):

systemLog:

destination: file #日志的目标,可指定為file或者syslog。指定為file時也必須指定systemLog.path。如果不指定就是标準輸出。
path: "/data/mongodb/log/mongod.log"
logAppend: true #如果指定為true,那麼重新啟動mongo後,日志會在原來的檔案中追加。如果指定為false,則會覆寫之前的日志檔案。
logRotate: rename #為了防止日志檔案過大,此選項可指定rename和reopen。 
                 rename使用時間戳重新命名舊的日志檔案,新日志發送到建立的日志檔案中。 
                 reopen是關閉并重新打開日志檔案。是典型的Linux/Unix的日志切換行為.必須手動重命名日志檔案。
timeStampFormat: ctime #預設:iso8601-local 時間戳格式,可指定為ctime,iso8601-utc,iso8601-local.
traceAllExceptions: #解釋:為調試列印多餘的資訊,這些多餘的資訊有利于我們排除故障。
quiet: true #生成環境下不建議使用,不利于排查問題           

PS:

component:
   accessControl:
       verbosity: <int>           

mongo把日志分為了多個元件,我們可以分别指定這些元件的備援水準。

元件 說明 舉例
accessControl 通路控制日志 比如驗證
command 指令日志 比如調用count方法
control 控制日志 比如初始化
control 控制日志 比如初始化
ftd 統計和狀态日志 
GEO JSON結構 
index 索引日志 比如建立索引
network 網絡日志 比如接收到連接配接
query 查詢日志 比如find
replication 副本日志 比如同步心跳
sharding 分片日志 比如啟動mongos
storage 存儲日志 比如執行fsync指令。有一個子子產品journal,如果journal不指定則預設是storage水準。
write 寫日志 比如update
           

storage:

dbPath: "/data/mongodb/data/"
indexBuildRetry:true #當建構索引時mongod意外關閉,那麼再次啟動是否重新建構索引;索引建構失敗,mongod重新開機後将會删除尚未完成的索引,但是否重建由此參數決定。預設值為true。           

journal:

enabled: true #是否開啟journal日志持久存儲(redo),journal日志用來資料恢複,是mongod最基礎的特性,通常用于故障恢複。64位系統預設為true,32位預設為false,建議開啟,僅對mongod程序有效。
commitIntervalMs: 100 #The maximum amount of time in milliseconds that the mongod process allows between journal operations. mongod程序送出journal日志的時間間隔。較低的值增加了juornal的耐久性,以犧牲性能為代價,在wiredtiger引擎上,預設的日志送出間隔為100毫秒。建議不要修改。【如果單塊裝置提供日志和資料檔案,預設的日記送出時間間隔為100毫秒,如果不同的塊裝置提供的日志和資料檔案,預設的日記送出的時間間隔為30毫秒。】           

directoryPerDB: true #是否将不同DB的資料存儲在不同的目錄中,dbPath的子目錄,目錄名為db的名稱。對已經存儲資料的mongod修改此值,需要首先使用mongodump指令将資料導出,然後關閉mongod,再修改此值和指定新的dbPath,然後使用mongorestore指令重新導入資料。(即導出資料,并使用mongorestore将資料重新寫入mongod的新目錄中)。對于replica set架構模式,隻需要在每個secondary依次操作:關閉secondary,然後配置新的dbPath,然後啟動即可(會執行初始化sync,從primary中将資料去完全同步到本地)。最後操作primary。此參數僅對mongod程序有效,預設值為false。

syncPeriodSecs: 60 #mongod使用fsync操作将資料flush到磁盤的時間間隔,預設值為60(機關:秒),強烈建議不要修改此值;mongod将變更的資料寫入journal後再寫入記憶體,并間歇性的将記憶體資料flush到磁盤中,即延遲寫入磁盤,有效提升磁盤效率。此指令不影響journal存儲,僅對mongod有效。

engine: wiredTiger #從mongodb3.2開始,官方已經開始預設使用wiredTiger存儲引擎,在3.2之前預設使用mmapv1存儲引擎。

mongodb資料庫的存儲引擎,可用的值包括:mmapv1:指定mmapv1存儲引擎(3.2之前預設使用)、wiredTiger:指定wiredTiger存儲引擎(3.2開始預設使用)、inMemory:指定記憶體存儲引擎(在3.2還是bate版本)。

PS:新舊版本存儲引擎比較:

對比:

http://learn-mongodb.readthedocs.io/storage-engine/wiredtiger-vs-mmapv1/

wiredTiger:

engineConfig:
    cacheSizeGB: 40 #wiredtiger将使用所有資料的最大緩存大小,wiredTiger緩存工作集(working set)資料的記憶體大小,機關:GB,此值決定了wiredTiger與mmapv1的記憶體模型不同,它可以限制mongod對記憶體的使用量,而mmapv1則不能(依賴于系統級的mmap)。預設情況下,cacheSizeGB的值為假定目前節點隻部署一個mongod執行個體,在MongoDB 3,預設情況下,wiredtiger緩存,使用1 GB或安裝的實體記憶體的一半,以較大者為準。如果目前節點部署了多個mongod程序,那麼需要合理配置此值。如果mongod部署在虛拟容器中(比如,lxc,cgroups,Docker)等,它将不能使用整個系統的實體記憶體,則需要适當調整此值。預設值為實體記憶體的一半。
    journalCompressor: snappy #journal日志的壓縮算法,預設為“snappy”,可選值為“none”、“snappy”、“zlib”。
    directoryForIndexes: false #是否将索引和collections資料分别存儲在dbPath單獨的目錄中。即index資料儲存“index”子目錄,collections資料儲存在“collection”子目錄。預設值為false,僅對mongod有效。            

collectionConfig:

blockCompressor: sanappy #collection資料壓縮算法,可選值“none”、“snappy”、“zlib”。開發者在建立collection時可以指定值,以覆寫此配置項。如果mongod中已經存在資料,修改此值不會帶來問題,舊資料仍然使用原來的算法解壓,新資料檔案将會采用新的解壓縮算法。           

indexConfig:

prefixCompression: true #是否對索引資料使用“字首壓縮”(prefix compression,一種算法)。字首壓縮,對那些經過排序的值存儲,有很大幫助,可以有效的減少索引資料的記憶體使用量。預設值為true。
           

processManagement:

fork: true #是否以fork模式運作mongod/mongos程序,預設情況下,mongod/mongos不作為守護程序運作,預設為true。
    pidFilePath: /tmp/mongod.pid           

security:

keyFile: /data/mongodb/keyfile 
    authorization: "enabled"           

net:

bindIp: 0.0.0.0 #mongod/monogs程序綁定的IP,application通過此IP、port建立連結。可以綁定在任意網卡接口上,如果你的mongos/mongod隻需要内網通路,可以綁定在内網IP(例如:192.168.1.100),如果需要外網通路,那麼則綁定外網IP,如果此值為“0.0.0.0”,則綁定到所有接口即内網、外網IP均可以通路。(不建議)可以綁定都多個ip上,ip位址之間用“,”分割。
   port: 27017
   maxIncomingConnections: 65536 #mongod/mongos程序允許的最大連接配接數,如果此值超過作業系統配置的連接配接數閥值,将不會生效(ulimit);預設值為65536。通常用戶端将會使用連接配接池機制,可以有效的控制每個用戶端的連結個數。
   wireObjectCheck: true #當用戶端寫入資料時,mongos/mongod是否檢測資料的有效性(BSON),如果資料格式不良,此insert、update操作将會被拒絕;預設值為true。對于高程度的子文檔嵌套的對象,net.wireobjectcheck對性能有較小的影響。
   ipv6: false #是否支援mongos/mongod多個執行個體之間使用IPV6網絡,預設值為false。此值需要在整個cluster中保持一緻。

   unixDomainSocket:  #指定sock檔案的存放路徑,預設是放在/tmp
       enabled: true
       pathPrefix: /data/mongo/data
           

replication:

oplogSizeMB: 10240 #replication記錄檔的最大尺寸,機關:MB。mongod程序根據磁盤最大可用空間來建立oplog,比如64位系統,oplog為磁盤可用空間的5%,一旦mongod建立了oplog檔案,此後再次修改oplogSizeMB将不會生效。此值不要設定的太小, 應該足以儲存24小時的記錄檔,以保證secondary有充足的維護時間;如果太小,secondary将不能通過oplog來同步資料,隻能全量同步。此值僅對mongod有效。
  replSetName: "repl_test" #“複制集”的名稱,複制集中的所有mongd執行個體都必須有相同的名字,sharding分布式下,不同的sharding應該使用不同的replSetName。僅對mongod有效。
  secondaryIndexPrefetch: "all" #預設值all,複制集中的secondary,從oplog中運用變更操作之前,将會先把索引加載到記憶體中,預設情況下,secondaries首先将操作相關的索引加載到記憶體,然後再根據oplog應用操作。可選值:
  1)none:secondaries不将索引資料加載到記憶體。
  2)all:sencondaries将此操作有關的索引資料加載到記憶體。
  3)_id_only:隻加載_id索引。
           

operationProfiling:

slowOpThresholdMs: 100 #資料庫profiler判定一個操作是“慢查詢”的時間閥值,機關毫秒;mongod将會把慢查詢記錄到日志中,即使profiler被關閉。當profiler開啟時,慢查詢記錄還會被寫入“system.profile”這個系統級的collection中。請參看mongod profiler相關文檔。預設值為100,此值隻對mongod程序有效。
  mode: slowOp #資料庫profiler級别,操作的性能資訊将會被寫入日志檔案中,可選值:
 1)off:關閉profiling。
 2)slowOp:on,隻包含慢記錄檔。
 3)all:on,記錄所有操作。           

資料庫profiling會影響性能,建議隻在性能調試階段開啟。此參數僅對mongod有效。

sharding:

clusterRole: #在sharding叢集中,此mongod執行個體的角色,可選值:           

1)configsvr:此執行個體為config server,此執行個體預設偵聽27019端口

2)shardsvr:此執行個體為sharding(分片),偵聽27018端口

此配置僅對mongod有效。通常config server和sharding server需要使用各自的配置檔案。

archiveMovedChunks: #當chunks因為“負載平衡”而遷移到其他節點時,mongod是否将這些chunks歸檔,并儲存在dbPath下“moveChunk”目錄下,mongod不會删除moveChunk下的檔案。預設為true。           

auditLog:

destination #開啟審計,需指定審計記錄的輸出方式,有以下值可選syslog、console、file。
format #目标檔案的輸出檔案格式,有如下值:
    JSON: 輸出的審計事件的JSON格式檔案,–auditpath指定。
    BSON: 輸出的審計事件的JSON格式檔案,–auditpath指定。
path #如果審計時間輸入為檔案,那麼這裡就需要指定檔案的完整路徑及檔案名。
filter #過濾器,可以限制審計系統記錄的操作類型,該選項需要一個表單的查詢文檔的字元串表示形式:{ <field1>: <expression1>, … }           

繼續閱讀