mongodb的一些文件介紹

# mongod.conf
 
# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/
 
# where to write logging data.
systemLog:     #系統日誌
  destination: file   #日誌輸出目的地,可以指定爲 “file” 或者“syslog”,表述輸出到日誌文件,如果不指定,則會輸出到標準輸出中(standard output)
  logAppend: true   #爲 true,當 mongod/mongos 重啓後,將在現有日誌的尾部繼續添加日誌。否則,將會備份當前日誌文件,然後創建一個新的日誌文件
  path: /var/log/mongodb/mongod.log   #日誌路徑
 
# Where and how to store data.
storage:    #存儲
  dbPath: /var/lib/mongo   # 設置數據文件的存放目錄,
  journal:     #是否開啓journal日誌持久存儲,用來數據恢復
    enabled: true    #64系統默認爲true,32位系統默認爲false
#  engine:     #存儲引擎類型
#  mmapv1:    #僅對MMAPV1引擎
#  wiredTiger:  #僅對wiredTiger引擎生效
 
# how the process runs
processManagement:     #進程管理
  fork: true  # fork and run in background    #是否在後臺運行
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile    #pid文件路徑
  timeZoneInfo: /usr/share/zoneinfo     #時區信息文件路徑
 
# network interfaces
net:            #網絡
  port: 27017       #監聽的端口
  bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.   #監聽的ip地址
 
 
#security:      #安全配置
 
#operationProfiling:    #性能分析器
 
#replication:    #主從複製
 
#sharding:      #sharding架構
 
## Enterprise-Only Options
 
#auditLog:   #審計日誌
 
#snmp:   #簡單網絡管理
 

 
擴展:

進程管理——processManagement
名稱 說明
fork 運行在後臺
pidFilePath PID文件路徑
網絡——net
名稱 說明
port 監聽端口
bindIP 監聽的ip地址
maxIncomingConnections 進程允許的最大連接數,默認值爲65535
wireObjectCheck 當客戶端寫入數據是,檢測數據的有效性
ipv6 ipv6地址,默認爲false
存儲——storage
名稱 說明
dbPath mongod 進程存儲數據目錄,此配置僅對 mongod 進程有效
indexBuildRetry 當構建索引時 mongod 意外關閉,那麼再次啓動是否重新構建索引;索引構建失敗,mongod 重啓後將會刪除尚未完成的索引,但是否重建由此參數決定。默認值爲 true。
repairPath 配合 --repair 啓動命令參數,在 repair 期間使用此目錄存儲臨時數據,repair 結束後此目錄下數據將被刪除,此配置僅對 mongod 進程有效。不建議在配置文件中配置,而是使用 mongod 啓動命令指定。
engine 存儲引擎類型,mongodb 3.0 之後支持 “mmapv1”、“wiredTiger” 兩種引擎,默認值爲“mmapv1”;官方宣稱 wiredTiger 引擎更加優秀。
journal 是否開啓 journal 日誌持久存儲,journal 日誌用來數據恢復,是 mongod 最基礎的特性,通常用於故障恢復。64 位系統默認爲 true,32 位默認爲 false,建議開啓,僅對 mongod 進程有效。
directoryPerDB 是否將不同 DB 的數據存儲在不同的目錄中 默認值爲 false
syncPeriodSecs mongod 使用 fsync 操作將數據 flush 到磁盤的時間間隔,默認值爲 60(單位:秒)強烈建議不要修改此值 mongod 將變更的數據寫入 journal 後再寫入內存,並間歇性的將內存數據 flush 到磁盤中,即延遲寫入磁盤,有效提升磁盤效率
mmapv1 僅對 MMAPV1 引擎  
quota 磁盤配額
enforced:false 配額管理,是否限制每個 DB 所能持有的最大文件數量 默認值爲 false
maxFilesPerDB:8 如果 enforce 開啓,每個 DB 所持有的存儲文件不會超過此閥值
smallFiles: false 是否使用小文件存儲數據;如果此值爲 true mongod 將會限定每個數據文件的大小爲 512M(默認最大爲 2G),journal 降低到 128M(默認爲 1G)。如果 DB 的數據量較大,將會導致每個 DB 創建大量的小文件,這對性能有一定的影響。在 production 環境下,不建議修改此值,在測試時可以設置爲 true,節約磁盤。
journal:  
commitIntervalMs: 100 mongod 進程提交 journal 日誌的時間間隔,即 fsync 的間隔。單位:毫秒
nsSize: 每個 database 的 namespace 文件的大小,默認爲 16,單位:M;最大值可以設置爲 2048,即 dbpath 下 “.ns” 後綴文件的大小。16M 基本上可以保存 24000 條命名條目,新建一個 collection 或者 index 信息,即會增加一個 namespace 條目
wiredTiger 如下配置僅對 wiredTiger 引擎生效(3.0 以上版本)
engineConfig: 引擎配置
cacheSizeGB: 8 wiredTiger 緩存工作集(working set)數據的內存大小,單位:GB,此值決定了 wiredTiger 與 mmapv1 的內存模型不同,它可以限制 mongod 對內存的使用量,而 mmapv1 則不能(依賴於系統級的 mmap)
journalCompressor: snappy journal 日誌的壓縮算法,可選值爲 “none”、“snappy”、“zlib”。
directoryForIndexes: false 是否將索引和 collections 數據分別存儲在 dbPath 單獨的目錄中。即 index 數據保存 “index” 子目錄,collections 數據保存在 “collection” 子目錄。默認值爲 false,僅對 mongod 有效。
collectionConfig: 集合配置
blockCompressor: snappy collection 數據壓縮算法,可選值 “none”、“snappy”、“zlib”。
indexConfig: 索引配置
prefixCompression: true 是否對索引數據使用 “前綴壓縮”(prefix compression,一種算法)。前綴壓縮,對那些經過排序的值存儲,有很大幫助,可以有效的減少索引數據的內存使用量。默認值爲 true。
性能分析器——operationProfiling
名稱 說明
slowOpThresholdMs: 100 數據庫 profiler 判定一個操作是 “慢查詢” 的時間閥值,單位毫秒;mongod 將會把慢查詢記錄到日誌中,即使 profiler 被關閉
mode: off 數據庫 profiler 級別,操作的性能信息將會被寫入日誌文件中
  1)off:關閉 profiling
  2)slowOp:on,只包含慢操作日誌
  3)all:on,記錄所有操作
  數據庫 profiling 會影響性能,建議只在性能調試階段開啓。此參數僅對 mongod 有效
主從複製——replication
名稱 說明
oplogSizeMB: 10240 replication 操作日誌的最大尺寸,單位:MB。mongod 進程根據磁盤最大可用空間來創建 oplog
enableMajorityReadConcern: false 是否開啓 readConcern 的級別爲 “majority”,默認爲 false;只有開啓此選項,才能在 read 操作中使用 “majority”。(3.2 + 版本)
replSetName: <無默認值> “複製集” 的名稱,複製集中的所有 mongd 實例都必須有相同的名字,sharding 分佈式下,不同的 sharding 應該使用不同的 replSetName
secondaryIndexPrefetch: all 只對 mmapv1 存儲引擎有效。複製集中的 secondary,從 oplog 中運用變更操作之前,將會先把索引加載到內存中,默認情況下,secondaries 首先將操作相關的索引加載到內存,然後再根據 oplog 應用操作。可選值:
1)none:secondaries 不將索引數據加載到內容
2)all:sencondaries 將此操作有關的索引數據加載到內存
3)_id_only:只加載_id 索引
默認值爲:all,此配置僅對 mongod 有效。
localPingThresholdMs: 15 ping 時間,單位:毫秒,mongos 用來判定將客戶端 read 請求發給哪個 secondary。僅對 mongos 有效。默認值爲 15,和客戶端 driver 中的默認值一樣。當 mongos 接收到客戶端 read 請求,它將:
1、找出複製集中 ping 值最小的 member。
2、將延遲值被此值允許的 members,構建一個列表
3、從列表中隨機選擇一個 member。
ping 值是動態值,每 10 秒計算一次。mongos 將客戶端請求轉發給延遲較小(與此值相比)的某個 secondary 節點。
sharding架構——sharding
名稱 說明
clusterRole: <無默認值> 在 sharding 集羣中,此 mongod 實例的角色,可選值:
  1、configsvr:此實例爲 config server,此實例默認偵聽 27019 端口
  2、shardsvr:此實例爲 shard(分片),偵聽 27018 端口
  此配置僅對 mongod 有效。通常 config server 和 sharding server 需要使用各自的配置文件。
archiveMovedChunks: true 當 chunks 因爲 “負載平衡” 而遷移到其他節點時,mongod 是否將這些 chunks 歸檔,並保存在 dbPath 下 “moveChunk” 目錄下,mongod 不會刪除 moveChunk 下的文件。默認爲 true。
autoSplit: true 是否開啓 sharded collections 的自動分裂,僅對 mongos 有效。如果所有的 mongos 都設定爲 false,那麼 collections 數據增長但不能分裂成新的 chunks。因爲集羣中任何一個 mongos 進程都可以觸發 split,所以此值需要在所有 mongos 行保持一致。僅對 mongos 有效。
configDB: <無默認值> 設定 config server 的地址列表,每個 server 地址之間以 “,” 分割,通常 sharded 集羣中指定 1 或者 3 個 config server。(生產環境,通常是 3 個 config server,但 1 個也是可以的)。所有的 mongos 實例必須配置一樣,否則可能帶來不必要的問題。
chunkSize: 64 sharded 集羣中每個 chunk 的大小,單位:MB,默認爲 64,此值對於絕大多數應用而言都是比較理想的。chunkSize 太大會導致分佈不均,太小會導致分裂成大量的 chunk 而經常移動. 整個 sharding 集羣中,此值需要保持一致,集羣啓動後修改此值將不再生效。
系統日誌——systemLog
名稱 說明
verbosity: 0 日誌級別,0:默認值,包含 “info” 信息,1~5,即大於 0 的值均會包含 debug 信息
quiet: true "安靜輸出",此時 mongod/mongos 將會嘗試減少日誌的輸出量。不建議在 production 環境下開啓,否則將會導致跟蹤錯誤比較困難。
traceAllExceptions: true 打印異常詳細信息。
path: logs/mongod.log 日誌路徑
logAppend: false 如果爲 true,當 mongod/mongos 重啓後,將在現有日誌的尾部繼續添加日誌。否則,將會備份當前日誌文件,然後創建一個新的日誌文件;默認爲 false。
logRotate: rename 日誌 “迴轉”,防止一個日誌文件特別大,則使用 logRotate 指令將文件 “迴轉”,可選值:
1)rename:重命名日誌文件,默認值。
2)reopen:使用 linux 日誌 rotate 特性,關閉並重新打開此日誌文件,可以避免日誌丟失,但是 logAppend 必須爲 true。
destination: file 日誌輸出目的地,可以指定爲 “file” 或者“syslog”,表述輸出到日誌文件,如果不指定,則會輸出到標準輸出中(standard output)
安全配置——security
名稱 說明
authorization disabled 或者 enabled,僅對 mongod 有效;表示是否開啓用戶訪問控制(Access Control),即客戶端可以通過用戶名和密碼認證的方式訪問系統的數據,默認爲 “disabled”,即客戶端不需要密碼即可訪問數據庫數據。(限定客戶端與 mongod、mongos 的認證)
clusterAuthMode 集羣中 members 之間的認證模式,可選值爲 “keyFile”、“sendKeyFile”、“sendX509”、“x509”,對 mongod/mongos 有效;默認值爲 “keyFile”,mongodb 官方推薦使用 x509,不過我個人覺得還是 keyFile 比較易於學習和使用。不過 3.0 版本中,mongodb 增加了對 TLS/SSL 的支持,如果可以的話,建議使用 SSL 相關的配置來認證集羣的 member,此文將不再介紹。(限定集羣中 members 之間的認證)
keyFile 當 clusterAuthMode 爲 “keyFile” 時,此參數指定 keyfile 的位置,mongodb 需要有訪問此文件的權限。
javascriptEnabled true 或者 false,默認爲 true,僅對 mongod 有效;表示是否關閉 server 端的 javascript 功能,就是是否允許 mongod 上執行 javascript 腳本,如果爲 false,那麼 mapreduce、group 命令等將無法使用,因爲它們需要在 mongod 上執行 javascript 腳本方法。如果你的應用中沒有 mapreduce 等操作的需求,爲了安全起見,可以關閉 javascript。
setParameter 允許指定一些的 Server 端參數,這些參數不依賴於存儲引擎和交互機制,只是微調系統的運行狀態,比如 “認證機制”、“線程池參數” 等。參見【parameter】
enableLocalhostAuthBypass true 或者 false,默認爲 true,對 mongod/mongos 有效;表示是否開啓 “localhost exception”,對於 sharding cluster 而言,我們傾向於在 mongos 上開啓,在 shard 節點的 mongod 上關閉。
authenticationMechanisms 認證機制,可選值爲 “SCRAM-SHA-1”、“MONGODB-CR”、“PLAN” 等,建議爲“SCRAM-SHA-1”,對 mongod/mongos 有效;一旦選定了認證機制,客戶端訪問 databases 時需要與其匹配纔能有效。
性能參數——setParameter: 
名稱 說明
connPoolMaxShardedConnsPerHost 默認值爲 200,對 mongod/mongos 有效;表示當前 mongos 或者 shard 與集羣中其他 shards 鏈接的鏈接池的最大容量,此值我們通常不會調整。連接池的容量不會阻止創建新的鏈接,但是從連接池中獲取鏈接的個數不會超過此值。維護連接池需要一定的開支,保持一個鏈接也需要佔用一定的系統資源。
connPoolMaxConnsPerHost 默認值爲 200,對 mongod/mongos 有效;同上,表示 mongos 或者 mongod 與其他 mongod 實例之間的連接池的容量,根據 host 限定。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章