本文檔是在mongodb為3.4下編寫的,僅作為參考,詳細內容請參考:https://docs.mongodb.com/manual/reference/configuration-options/#configuration-file
一.說明
配置mongodb有兩種方式,一種是通過mongod和mongos兩個命令;另外一種方式就是配置文件的方式。因為更容易去管理,所以后者更受大家的青睞。
二. 配置文件格式
mongodb 配置文件采用的YAML格式;
例如:
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
journal:
enabled: true
processManagement:
fork: true
net:
bindIp: 127.0.0.1
port: 27017
setParameter:
enableLocalhostAuthBypass: false
三 使用配置文件
通過mongod和mongos命令去執行配置文件,這里要使用他們的一個選項--config(這里是兩個橫線,具體查看 > mongod --help)或者-f(--config的簡寫)
例如:
mongod --config D:/mongodb/mongod.conf mongos --config D:/mongodb/mongos.conf
或
mongod -f D:/mongodb/mongod.conf mongos -f D:/mongodb/mongos.conf
四 配置文件的核心選項
1. systemLog 選項
systemLog:
verbosity: <int>
quiet: <boolean>
traceAllExceptions: <boolean>
syslogFacility: <string>
path: <string>
logAppend: <boolean>
logRotate: <string>
destination: <string>
timeStampFormat: <string>
component:
accessControl:
verbosity: <int>
command:
verbosity: <int>
systemLog.traceAllExceptions
類型:boolean
作用: 為調試打印詳細信息,用於支持相關的故障排除。
systemLog.syslogFacility
類型:string
默認值:user
作用:將mongodb使用日志記錄到系統日志中,如果要使用這個選項,必須開啟--sysylog選項
systemLog.path
類型:string
作用:指定日志文件的目錄
syetemLog.logAppend
類型:boolean
默認值:False
作用:當mongod或mongos重啟時,如果為true,將日志追加到原來日志文件內容末尾;如果為false,將創建一個新的日志文件
systemLog.destination
類型:string
作用:指定日志文件的路徑,如果設置了這個值,必須指定systemLog.path.如果沒有設置,日志會標准的輸出到后台
systemLog.timeStampFormat
類型:string
默認值:iso8601-local
作用:為日志添加時間戳。
| 值 | 描述 |
| ctime | 顯示時間戳格式為:Wed Dec 31 18:17:54.811. |
| iso8601-utc | 安裝iso-8601-utc格式顯示:1970-01-01T00:00:00.000Z |
| iso8601-local | 按照iso8601-local格式顯示:1969-12-31T19:00:00.000-0500 |
processMangement 選項
processManagement: fork: <boolean> pidFilePath: <string>
processMangement.fork
類型:Boolean
默認值:False
作用:在前台啟動Mongodb進程,如果Session窗口關閉,Mongodb進程也隨之停止。不過Mongodb同時還提供了一種后台Daemon方式啟動,只需要加上一個"--fork"參數即可,值得注意的是,用到了"--fork"參數就必須啟用"--logpath"參數。如下所示:
[root@localhost mongodb]# ./bin/mongod --dbpath=data/db --fork --fork has to be used with --logpath [root@localhost mongodb]# ./bin/mongod --dbpath=data/db --fork --logpath=log/mongodb.log all output going to: /opt/mongodb/log/mongodb.log forked process: 3300
daemon方式啟動的fork參數也可以配置配置文件中,如下所示:
port=27017 dbpath=data/db logpath=log/mongodb.log logappend=true fork=true
net 選項
net:
port: <int>
bindIp: <string>
maxIncomingConnections: <int>
wireObjectCheck: <boolean>
ipv6: <boolean>
unixDomainSocket:
enabled: <boolean>
pathPrefix: <string>
filePermissions: <int>
http:
enabled: <boolean>
JSONPEnabled: <boolean>
RESTInterfaceEnabled: <boolean>
ssl:
sslOnNormalPorts: <boolean> # deprecated since 2.6
mode: <string>
PEMKeyFile: <string>
PEMKeyPassword: <string>
clusterFile: <string>
clusterPassword: <string>
CAFile: <string>
CRLFile: <string>
allowConnectionsWithoutCertificates: <boolean>
allowInvalidCertificates: <boolean>
allowInvalidHostnames: <boolean>
disabledProtocols: <string>
FIPSMode: <boolean>
compression:
compressors: <string>
net.port
類型:integer
默認值:27017
作用:設置mongodb的監聽TCP端口
net.bindIp
類型:string
作用:設置mongodb服務器監聽ip地址,默認是127.0.0.1;如果監聽多個ip地址,使用逗號隔開
net.maxIncomingConnections
類型:integer
默認值:65536
作用:最大並發鏈接數
net.ipv6
類型:boolean
默認值:false
作用:開啟或關閉支持ipv6地址;
security 選項
security:
keyFile: <string>
clusterAuthMode: <string>
authorization: <string>
transitionToAuth: <boolean>
javascriptEnabled: <boolean>
redactClientLogData: <boolean>
sasl:
hostName: <string>
serviceName: <string>
saslauthdSocketPath: <string>
enableEncryption: <boolean>
encryptionCipherMode: <string>
encryptionKeyFile: <string>
kmip:
keyIdentifier: <string>
rotateMasterKey: <boolean>
serverName: <string>
port: <string>
clientCertificateFile: <string>
clientCertificatePassword: <string>
serverCAFile: <string>
ldap:
servers: <string>
bind:
method: <string>
saslMechanisms: <string>
queryUser: <string>
queryPassword: <string>
useOSDefaults: <boolean>
transportSecurity: <string>
timeoutMS: <int>
userToDNMapping: <string>
authz:
queryTemplate: <string>
....查看mongodb手冊 #security選項
setParameter 選項
設置mongodb參數,查看參數列表
采用YAML語言格式
setParameter: <parameter1>: <value1> <parameter2>: <value2>
storage 選項
storage:
dbPath: <string>
indexBuildRetry: <boolean>
repairPath: <string>
journal:
enabled: <boolean>
commitIntervalMs: <num>
directoryPerDB: <boolean>
syncPeriodSecs: <int>
engine: <string>
mmapv1:
preallocDataFiles: <boolean>
nsSize: <int>
quota:
enforced: <boolean>
maxFilesPerDB: <int>
smallFiles: <boolean>
journal:
debugFlags: <int>
commitIntervalMs: <num>
wiredTiger:
engineConfig:
cacheSizeGB: <number>
journalCompressor: <string>
directoryForIndexes: <boolean>
collectionConfig:
blockCompressor: <string>
indexConfig:
prefixCompression: <boolean>
inMemory:
engineConfig:
inMemorySizeGB: <number>
storage.dbPath
類型:string
默認值:/data/db(linux和macOS系統) ,\data\db(window系統)
作用:設置數據存儲文件目錄
storage.indexBuildRetry
類型:boolean
默認值:true
作用:開啟或關閉是否在mongod下次啟動重建不完整的索引。
注:在in-memory存儲引擎下不可用
storage.repairPath
類型:string
默認值:在dbpath下的A _tmp_repairDatabase_<num> 文件目錄
作用:為進行恢復操作指定目錄
注意:僅僅在MMAPv1存儲引擎下可用
storage.journal.enabled
類型:boolean
默認值:true(64-bit系統);false(32-bit系統)
作用:開啟和關閉journal,為了保證數據文件的有效性和可恢復性;在設置了dbpath之后有效
注:在in-memory存儲引擎下不可用
storage.directoryPerDB
類型:boolean
默認值:false
作用:當為true,mongodb為每個數據庫建立一個單獨的路徑,這個路徑是在dbpath下創建的;每次創建需要重啟服務器
注:在in-memory存儲引擎下不可用
storage.engine
默認值:wiredTiger
作用:這是數據存儲引擎
| 值 | 描述 |
| MMAPV1 | MMAPCV1 storage engine |
| wiredTiger | WiredTiger Storage Engine. |
| inMemory | In-Memory Storage Engine. |
storage.mmapv1 選項
storage:
mmapv1:
preallocDataFiles: <boolean>
nsSize: <int>
quota:
enforced: <boolean>
maxFilesPerDB: <int>
smallFiles: <boolean>
journal:
debugFlags: <int>
commitIntervalMs: <num>
storage.mmapv1.preallocDataFiles
類型:boolean
默認值:true
作用:開啟或關閉數據文件的預分配;
storage.mmapv1.quota.enforced
類型:boolean
默認值:false
作用:開啟或關閉每個數據庫中的數據文件個數的限額;默認是每個數據庫最多有8個數據文件,通過調整storage.mmapv1.quota.maxFilesPerDB
storage.mmapv1.quota.maxFilesPerDB
類型:integer
默認值:8
作用:設置每個數據庫中數據文件的限制個數;
storage.wiredTiger 選項
storage:
wiredTiger:
engineConfig:
cacheSizeGB: <number>
journalCompressor: <string>
directoryForIndexes: <boolean>
collectionConfig:
blockCompressor: <string>
indexConfig:
prefixCompression: <boolean>
storage.wiredTiger.engineConfig.cacheSizeGB
類型:float
作用:設置緩存大小,從3.4版本開始,內存的50%-1GB 和256MB的最大值
storage.wriedTiger.engineConfig.journalCompressor
默認值:snappy
作用:設置journal壓縮方式;可選項:none/snappy/zlib
storage.inmemory 選項
storage:
inMemory:
engineConfig:
inMemorySizeGB: <number>
storage.inmemory.engineConfig.inMemorySizeGB
類型:float
默認值:物理內存的50%-1GB
作用:設置緩沖區大小;
opeartionProfiling 選項
operationProfiling: slowOpThresholdMs: <int> mode: <string>
opeartionProfiling.slowOpThresholdMs
類型:integer
默認值:100
作用:設置區分慢查詢的一個閾值,比如100,當查詢速度大於100ms,記錄到日志中
operationProfiling.mode
類型:string
默認值:off
replication 選項
replication: oplogSizeMB: <int> replSetName: <string> secondaryIndexPrefetch: <string> enableMajorityReadConcern: <boolean>
replication.oplogSizeMB
類型:integer
作用:設置復制日志文件的大小;
sharding 選項
sharding: clusterRole: <string> archiveMovedChunks: <boolean>
sharding.clusterRole
類型:string
作用:設置分片集群中的角色;
| 值 | 描述 |
| configsvr | 作為配置服務器,默認端口27019 |
| shardsvr | 作為一個分片,默認端口27018 |
auditLog 選項 (MongoDB Enterprise可用)
auditLog: destination: <string> format: <string> path: <string> filter: <string>
auditLog.destination
類型:string
作用:審計日志位置;
| 值 | 描述 |
| syslog | JSON文件格式輸出在系統日志中,window系統中不可用 |
| console | JSON格式輸出 |
| file | 輸出到文件 |
auditLog.format
類型:string
作用:設置設計日志輸出格式;可用值:JSON/BSON
auditLog.path
類型:string
作用:設計日志輸出文件路徑
類型:string
作用:審計日志過濾器
格式:{ <field1>: <expression1>, ... }
