官方参考文档:https://docs.mongodb.com/v3.2/reference/configuration-options/
从 2.6 版本开始,MongoDB 配置文件支持 YAML 的格式;原来的配置文件格式还保持向后兼容性。
systemLog 模块
示例:
systemLog:
verbosity: 0
quiet: false
destination: file
logAppend: true
path: /usr/local/mongodb/log/mongod.log
timeStampFormat: iso8601-local
verbosity
日志信息级别,范围为 0-5。默认为 0。
quiet
在尝试限制输出量的安静模式下运行 mongod。不建议用于生产系统。
destination
定义日志记录方式(file 或 syslog)。如果未指定,日志将发送到标准输出;如果指定 file,则还必须指定 systemLog.path。
path
日志文件的路径。
logAppend
如果为 true,重新启动 mongod 时,会将新日志附加到现有日志文件的末尾;如果未定义,则会备份现有日志并创建一个新文件。
timeStampFormat
日志消息中时间戳的时间格式。默认为 iso8601-local(本地时间戳),包括:ctime、iso8601-utc、iso8601-local。
processManagement 模块
示例:
processManagement:
fork: true
pidFilePath: /usr/local/mongodb/temp/mongod.pid
fork
如果为true,则以守护进程的方式运行。
pidFilePath
指定 pid 文件。
net 模块
示例:
net:
port: 27017
bindIp: 192.168.10.140,127.0.0.1
maxIncomingConnections: 65536
wireObjectCheck: true
ipv6: false
port
监听端口。
bindIp
监听地址。多个用逗号分隔。
maxIncomingConnections
最大并发连接数。默认值:65536。
wireObjectCheck
如果为 true,则 mongod 会验证来自客户端的所有请求,以防止将格式错误或无效的 BSON 插入数据库中。默认值:true。
ipv6
如果为 true,启用 IPv6 支持。默认值:false。
storage 模块
示例:
storage:
dbPath: /mongodb_data
indexBuildRetry: true
journal:
enabled: true
commitIntervalMs: 100
directoryPerDB: false
engine: mmapv1
syncPeriodSecs: 60
mmapv1:
quota:
enforced: false
maxFilesPerDB: 8
smallFiles: true
wiredTiger:
engineConfig:
cacheSizeGB: 8
journalCompressor: snappy
directoryForIndexes: false
collectionConfig:
blockCompressor: snappy
indexConfig:
prefixCompression: true
dbPath
数据存储目录。默认值:/data/db。
indexBuildRetry
指定 mongod 是否在下次启动时重新生成不完整的索引。默认值:true。
directoryPerDB
如果为 true,则 MongoDB 使用单独的目录存储每个数据库的数据。默认值:false。
syncPeriodSecs
mongod 使用 fsync 操作将数据 flush 到磁盘的时间间隔,默认值为 60 秒。强烈建议不要修改此值。
engine
指定存储引擎类型。从 MongoDB 3.2 开始默认值:wiredTiger。包括:mmapv1、wiredTiger、inMemory。
journal 子模块
enabled
启用或禁用 journal 日志持久存储,以确保数据文件保持有效和可恢复。在 64 位系统上默认为:true。
commitIntervalMs
两次日记操作之间允许的最长时间(以毫秒为单位)。取值范围是 1-500 毫秒。默认为 100 毫秒。
mmapv1 子模块
preallocDataFiles
启用或禁用数据文件的预分配。默认为:true。
nsSize
命名空间文件的默认大小(MB),即以 .ns 结尾的文件。默认为:16。
quota.enforced
启用或禁用对每个数据库可以拥有的数据文件数的最大限制。默认为:flash。
quota.maxFilesPerDB
对每个数据库的数据文件数的限制。
smallFiles
如果为 true,MongoDB 将使用较小的默认文件大小。该选项会减少数据文件的初始大小,并将最大大小限制为 512 MB;还将每个日志文件的大小从 1G 减少到 128 MB。导致 MongoDB 创建大量文件,影响大型数据库的性能。
journal.debugFlags
提供测试功能。
journal.commitIntervalMs
从版本 3.2 起已弃用。
wiredTiger 子模块
engineConfig.cacheSizeGB
WiredTiger 将用于所有数据的内部缓存的最大大小。从 MongoDB 3.2 开始,WiredTiger 内部缓存在默认情况下将使用(1 GB 和60% of RAM minus 1 GB)两者中的较大值。
engineConfig.journalCompressor
用于压缩 WiredTiger 日志数据的压缩类型。默认为:snappy。包括:none、snappy、zlib。
engineConfig.directoryForIndexes
如果为true,则 mongod 将索引和集合存储在 dbPath 下的单独子目录中。默认为:flash。
collectionConfig.blockCompressor
用于压缩集合数据的默认压缩类型。默认为:snappy。包括:none、snappy、zlib。
indexConfig.prefixCompression
启用或禁用索引数据的前缀压缩。默认值:true。
inMemory 子模块
engineConfig.inMemorySizeGB
为内存中存储引擎数据分配的最大内存量。默认值:物理 RAM 的 50% 减去1 GB。
operationProfiling 模块
示例:
operationProfiling:
slowOpThresholdMs: 100
mode: off
slowOpThresholdMs
数据库探查器认为查询速度慢的阈值(毫秒)。默认为:100。
mode
数据库分析的级别。默认为:off。包括:off、slowOp、all。
replication 模块
示例:
replication:
oplogSizeMB: 10240
replSetName: rs0
secondaryIndexPrefetch: all
enableMajorityReadConcern: false
oplogSizeMB
复制操作日志(oplog)的最大大小(单位:MB)。mongod 根据可用的最大空间量创建 oplog。对于 64 位系统,oplog 通常占可用磁盘空间的 5%。mongod 第一次创建 oplog 后,更改 oplogSizeMB 选项不会影响 oplog 的大小。
replSetName
mongod 所属的副本集的名称。副本集中的所有主机必须具有相同的副本集名称。
secondaryIndexPrefetch:在从 oplog 应用操作之前,副本集的从节点加载到内存中的索引。支持:none、all、_id_only。
enableMajorityReadConcern
启用 “majority” 的读取关注级别。默认为:flash。
setParameter 模块
设置 MongoDB 参数或 MongoDB Server parameters 中描述的参数
格式:
setParameter:
<parameter1>: <value1>
<parameter2>: <value2>
示例:要在配置文件中指定 enableLocalhostAuthBypass:
setParameter:
enableLocalhostAuthBypass: false