1、系统日志(systemLog)
配置示例:
systemLog:
verbosity: 0
quiet: false
traceAllExceptions: true
syslogFacility: user
path: /mongodb/log/mongo.log
logAppend: false
logRotate: rename
destination: file
timeStampFormat: iso8601-local
component:
accessControl:
verbosity: 0
command:
verbosity: 0
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
verbosity | integer | 0 | 日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
quiet | boolean | true | "安静",此时mongod/mongos将会尝试减少日志的输出量。不建议在production环境下开启,否则将会导致跟踪错误比较困难。 |
syslogFacility | string | user | 指定syslog日志信息的设备级别。需要指定--syslog来使用这个选项。 |
traceAllExceptions | boolean | true | 打印异常详细信息。 |
path | string | logs/mongod.log | 日志路径 |
logAppend | boolean | false | 如果为true,当mongod/mongos重启后,将在现有日志的尾部继续添加日志。否则,将会备份当前日志文件,然后创建一个新的日志文件;默认为false。 |
logRotate | string | rename | 日志“回转”,防止一个日志文件特别大,则使用logRotate指令将文件“回转”,可选值:1)rename:重命名日志文件,默认值;2)reopen:使用linux日志rotate特性,关闭并重新打开此日志文件,可以避免日志丢失,但是logAppend必须为true。 |
destination | string | file | 日志输出目的地,可以指定为“ file”或者“syslog”,表述输出到日志文件,如果不指定,则会输出到标准输出中(standard output) |
timeStampFormat | string | iso8601-local | 日志信息输出的时间格式。1)ctime:输出时间格式如:Wed Dec 31 18:17:54.811;2)iso8601-utc:输出UTC时间格式,如: 1970-01-01T00:00:00.000Z;3)iso8601-local:输出ISO-8601格式的本地时间,如:1969-12-31T19:00:00.000-0500 |
2、系统组件日志(systemLog.component )
配置示例:
systemLog:
component:
accessControl:
verbosity: 0
command:
verbosity: 0
# COMMENT some component verbosity settings omitted for brevity
replication:
verbosity: 0
election:
verbosity: 0
heartbeats:
verbosity: 0
initialSync:
verbosity: 0
rollback:
verbosity: 0
storage:
verbosity: 0
journal:
verbosity: 0
recovery:
verbosity: 0
write:
verbosity: 0
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
accessControl.verbosity | integer | 0 | 访问控制组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
command.verbosity | integer | 0 | 命令行处理组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
control.verbosity | integer | 0 | 控制组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
ftdc.verbosity | integer | 0 | 统计及状态组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
geo.verbosity | integer | 0 | 地理空间组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
index.verbosity | integer | 0 | 索引组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
network.verbosity | integer | 0 | 网络组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
query.verbosity | integer | 0 | 查询操作组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
replication.verbosity | integer | 0 | 复制集组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
replication.election.verbosity | integer | 0 | 复制集组件选举的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息。若此选项未设置,则其将使用replication.verbosity的级别。 |
replication.heartbeats.verbosity | integer | 0 | 复制集组件日志的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息。若此选项未设置,则其将使用replication.verbosity的级别。 |
replication.initialSync.verbosity | integer | 0 | 复制集初始化同步的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息。若此选项未设置,则其将使用replication.verbosity的级别。 |
replication.rollback.verbosity | integer | 0 | 复制集回滚的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息。若此选项未设置,则其将使用replication.verbosity的级别。 |
sharding.verbosity | integer | 0 | 分片组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
storage.verbosity | integer | 0 | 存储组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
storage.journal.verbosity | integer | 0 | 存储日志的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
storage.recovery.verbosity | integer | 0 | 存储恢复的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
transaction.verbosity | integer | 0 | 事物组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息。若此选项未设置,则其将使用replication.verbosity的级别。 |
write.verbosity | integer | 0 | 写操作组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息 |
3、进程管理(processManagement)
配置示例:
processManagement:
fork: true
pidFilePath: /var/mongo/pid.log
timeZoneInfo:
选项说明:
名称 | 类型 | 认值 | 说明 |
---|---|---|---|
fork | boolean | false | 是否以守护进程运行mongod或mongos。windows环境不支持此选项; |
pidFilePath | string | 存储进程id的文件路径。一般与fork配合使用,当不指定此文件时将不会进行创建。 | |
timeZoneInfo | string | user | 时间时区信息。在linux系统中,若此参数未指定,则使用系统默认值。 |
4、网络(net)
配置示例:
net:
port: 27017
bindIp: localhost
bindIpAll: false
maxIncomingConnections: 30000
wireObjectCheck: true
ipv6: false
unixDomainSocket:
enabled: false
pathPrefix:
filePermissions:
tls:
certificateSelector:
clusterCertificateSelector:
mode: disabled
certificateKeyFile:
certificateKeyFilePassword:
clusterFile:
clusterPassword:
CAFile:
clusterCAFile:
CRLFile:
allowConnectionsWithoutCertificates:
allowInvalidCertificates:
allowInvalidHostnames:
disabledProtocols:
FIPSMode:
compression:
compressors:snappy,zstd,zlib
serviceExecutor: adaptive
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
port | integer | 27017 | 27017:mongod(非分片或配置服务器)或mongos的默认端口;27018 :当mongod作为分片服务器时;27019 :当mongod作为配置服务器时。 |
bindIp | string | localhost | mongos或mongod监听的地址,其可以为域名或ip或Unix域套接字的完整路径。当绑定多个地址时,以逗号分隔。 |
bindIpAll | boolean | false | 当设置为true时,mongo会绑定本地的所有ip地址。此选项与bindIp选项冲突,若同时配置两个参数,系统将会报异常。 |
maxIncomingConnections | integer | 65536 | mongodb实例接受的最多连接数,如果高于操作系统接受的最大线程数,设置无效。此参数通常对mongos比较有用,当客户端对mongos创建连接池时。 |
wireObjectCheck | boolean | true | 为true时,mongod或mongos会检查所有请求的BSON数据的合法性。当对象有比较多的层级嵌套时,此参数将会对mongo性能有一定影响。 |
ipv6 | boolean | false | 当设置为true时,mongo将支持ipv6,其默认是不支持的。设置此参数为true,mongo并不会直接在本地ipv6上监听,需同时配置bindIp或bindIpAll参数。 |
unixDomainSocket.enabled | boolean | true | true:是能在Unix套接字上监听。mongodb实例会一直监听UNIX socket,除非net.unixDomainSocket.enabled设置为true,bindIp没有设置,bindIp没有默认指定为127.0.0.1。 |
unixDomainSocket.pathPrefix | string | /tmp | unix Socket所在的路径。 |
unixDomainSocket.filePermissions | int | 0700 | 设置套接字的SocketFile的访问权限。 |
tls.mode | string | 实现TLS用于mongo的网络连接。1)disabled:mongo不是有TLS;2)allowTLS:mongo不同系统之间连接不使用TLS,对客户端连接同时支持TLS和non-TLS。3)preferTLS:mongo不同系统之间连接使用TLS,对客户端连接同时支持TLS和non-TLS。4)requireTLS:系统只使用TLS的安全连接。 | |
tls.certificateKeyFile | string | 包含CA和密码的.pem文件。当为类linux系统时,当使能TLS时,此参数必填;当为windows或macOS系统时,当使能TLS时,此参数或certificateSelector参数必填。 | |
tls.certificateKeyFilePassword | string | CA证书的解码密码。 | |
tls.certificateSelector | string | 在windows或macOS系统上,此参数或tls.certificateKeyFile参数二选一即可,这连个参数是互斥的,只能声明一个。 | |
tls.clusterCertificateSelector | string | 在windows和MacOs中,此参数为tls.clusterFile的备选项,他们之间为互斥关系,只能二选一。 | |
tls.clusterFile | string | 集群或复制集的.pem文件 | |
clusterPassword | string | 集群或复制集的CA解码的密码。 | |
tls.CAFile | string | .pem文件,其包含根证书链。 | |
tls.clusterCAFile | string | .pem文件,包含客户端连接mongo的根证书链。 | |
tls.CRLFile | string | .pem文件,包含了证书撤销列表。 | |
tls.allowConnectionsWithoutCertificates | boolean | 客户端无需证书即可连接mongo服务器 | |
tls.allowInvalidCertificates | boolean | 使能集群中其他服务器的TLS证书的验证检查,运行其他服务器使用无效的证书进行连接。 | |
tls.allowInvalidHostnames | boolean | false | true:当其他连接实例的证书的hostName非法时,mongo将允许其进行连接。 |
tls.disabledProtocols | string | 阻止mongo基于当前协议的TLS的连接处理。多个协议之间以逗号分隔。 | |
tls.FIPSMode | boolean | 是否允许FIPS模式使用TLS库 | |
compression.compressors | string | snappy,zstd,zlib | 声明默认的压缩器。其将用于mongo服务器间的通信使用。 |
serviceExecutor | string | synchronous | 声明mongo服务器处理客户端请求的线程和处理模式。synchronous:mongo使用同步网络并管理每个链接的线程池;adaptive:mongo使用异步网络模式,并使用自适应的线程池来管理客户端的连接。 |
5、安全选项(security)
配置示例:
security:
keyFile:
clusterAuthMode:
authorization:
transitionToAuth:
javascriptEnabled:
redactClientLogData:
clusterIpSourceWhitelist:
-
sasl:
hostName:
serviceName:
saslauthdSocketPath:
enableEncryption:
encryptionCipherMode:
encryptionKeyFile:
kmip:
keyIdentifier:
rotateMasterKey:
serverName:
port:
clientCertificateFile:
clientCertificatePassword:
clientCertificateSelector:
serverCAFile:
ldap:
servers:
bind:
method:
saslMechanisms:
queryUser:
queryPassword:
useOSDefaults:
transportSecurity:
timeoutMS:
userToDNMapping:
authz:
queryTemplate:
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
keyFile | string | mongo实例直接互相通信的认证密码文件。 | |
clusterAuthMode | string | keyFile | mongo集群的认证模式。1)keyFile:使用keyFile选项表示的授权文件进行授权处理;2)sendKeyFile:用于滚动升级,发送一个认证keyFile,但同时可以keyFile和x.509认证;3)sendX509:用于滚动升级,发送一个x.509用于认证,但同时可以keyFile和x.509认证;4)x509:推荐使用,发送x.509文件用于认证,同时只接受x.509认证。 |
authorization | string | disabled | disabled或者enabled,仅对mongod有效;表示是否开启用户访问控制(Access Control),即客户端可以通过用户名和密码认证的方式访问系统的数据,默认为“disabled”,即客户端不需要密码即可访问数据库数据。(限定客户端与mongod、mongos的认证) |
transitionToAuth | boolean | false | 运行mongo服务器在部署时直接通过认证或非认证方式进行互相连接。如若使用keyFile进行内部认证,则mongo会创建认证的连接到其他部署的mongo实例,若认证失败,则会使用非认证的连接替代。此选择为true无法保证强制的用户权限控制,用户可创建无无任何权限控制的连接到部署环境中,并进行读写及权限处理等操作。 |
javascriptEnabled | boolean | true | 是否允许执行服务器端的JavaScript脚本,若不允许,则无法允许如$where、mapReduce等方法。 |
redactClientLogData | boolean | 此参数会阻止mongo在日志时打印出数据库中的敏感数据 | |
clusterIpSourceWhitelist | list | 保存mongo复制集或集群的白名单的ip列表,若连接的服务不在白名单则不允许连接。若mongod以非认证方式启动,则此参数无效 | |
enableEncryption | boolean | false | 允许事物存储引擎的加密 |
encryptionCipherMode | string | AES256-CBC | 用于加密的密码模式。1)AES256-CBC:256位高级加密标准的密码块链接模式;2)AES256-GCM:256位高级加密标准,在Galois/计数器模式只能在Linux上使用。 |
encryptionKeyFile | string | 当通过KMIP管理秘钥时的本地keyFile的路径。只有在nableEncryption设为true时有效 |
6、存储参数(storage)
配置示例:
storage:
dbPath:
indexBuildRetry:
journal:
enabled:
commitIntervalMs:
directoryPerDB:
syncPeriodSecs:
engine:
wiredTiger:
engineConfig:
cacheSizeGB:
journalCompressor:
directoryForIndexes:
maxCacheOverflowFileSizeGB:
collectionConfig:
blockCompressor:
indexConfig:
prefixCompression:
inMemory:
engineConfig:
inMemorySizeGB:
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
dbPath | string | /data/db | mongod存储数据的目录,此参数只对mongod有效。 |
indexBuildRetry | boolean | true | 指定数据库重启时是否继续重建未完成的索引。此种情况以防mongod在重建索引时关闭或停止。 |
journal.enabled | boolean | true | 记录持久性的操作日志,保障数据文件的有效和可存储,防止数据丢失。 |
journal.commitIntervalMs | number | 100 | journal日志操作的最大间隔时间。可以是1-500ms之间的值,低的值有助于持久化,但是会增加磁盘的额外负担。如若写操作带有“j:true”参数,将会使日志立即同步到journal中。如果强制mongod提交日志文件,可以指定j:true,指定后,时间变为原来的三分之一。 |
directoryPerDB | boolean | false | 指定存储每个数据库文件到单独的数据目录。如果在一个已存在的系统使用该选项,需要事先把存在的数据文件移动到目录。 |
syncPeriodSecs | number | 60 | mongodb文件刷新频率,尽量不要在生产环境下修改。若设置此参数为0,mongodb不会将内存映射文件同步到磁盘中。mongod能很快处理对journal日志的写,同时会延迟数据文件的写入。此参数对journal日志无效,但若设置为0,则journal会最终占用所有硬盘空间。如设置此参数是为了测试,则应该设置--nojournal为true |
engine | String | wiredTiger | mongodb的存储引擎。1)wiredTiger:声明为WiredTiger存储引擎;2)inMemory:声明为 In-Memory 存储引擎。 |
wiredTiger.engineConfig.cacheSizeGB | float | 定义WiredTiger 存储引擎用于内部数据缓存的最大值。用于索引的缓存是单独的,不包含在此部分。此缓存大小范围可设置为:0.25GB到10000GB。默认值为(系统内存值 - 1G)/2或256MB。 | |
wiredTiger.engineConfig.journalCompressor | String | snappy | 声明应用压缩WiredTiger 日志文件的压缩算法。1)none:无压缩;2)snappy;3)zlib;4)zstd (Available starting in MongoDB 4.2) |
wiredTiger.engineConfig.directoryForIndexes | boolean | false | 是否将索引和collections数据分别存储在dbPath下单独的目录中。即index数据保存“index”子目录,collections数据保存在“collection”子目录。默认值为false,仅对mongod有效。 |
wiredTiger.engineConfig.maxCacheOverflowFileSizeGB | float | 0 | 声明WiredTigerLAS.wt文件的最大值 |
wiredTiger.collectionConfig.blockCompressor | string | snappy | 集合数据的压缩算法。声明应用压缩WiredTiger 日志文件的压缩算法。1)none:无压缩;2)snappy;3)zlib;4)zstd (Available starting in MongoDB 4.2) |
wiredTiger.indexConfig.prefixCompression | bool | true | 是能索引数据的前缀压缩算法。 |
inMemory.engineConfig.inMemorySizeGB | float | (RAM-1G)/2 | in-memory存储引擎的最大内存。包括数据、索引、操作日志等。可设置范围为:256MB到10TB |
7、性能分析器(operationProfiling )
配置示例:
operationProfiling:
mode: slowOp
slowOpThresholdMs: 200
slowOpSampleRate: 1.0
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
mode | string | off | 数据库profiler级别,操作的性能信息将会被写入日志文件中。1)off:性能检测关闭,不会收集如何性能数据;2)slowOp:性能检测将会操作时间超过slowms的查询;3)all:性能检测器记录所有操作日志。检测器会影响性能并使用系统日志,在生产环境需注意。 |
slowOpThresholdMs | integer | 100 | 数据库profiler判定一个操作是“慢查询”的时间阀值,单位毫秒;mongod将会把慢查询记录到日志中,即使profiler被关闭。当profiler开启时,慢查询记录还会被写入“system.profile”这个系统级的collection中。请参看mongod profiler相关文档。默认值为100,此值只对mongod进程有效。当此值设置为0时,mongodb将以慢查询slowOpSampleRate设定的评率写入慢查询日志。 |
slowOpSampleRate | double | 1.0 | 性能检测器或日志的影响因子 |
8、复制集(replication)
8配置示例:
replication:
oplogSizeMB: 1024
replSetName: mongodb_test
secondaryIndexPrefetch:
enableMajorityReadConcern: true
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
oplogSizeMB | integer | replication操作日志的最大尺寸,单位:MB。mongod进程根据磁盘最大可用空间来创建oplog,比如64位系统,oplog为磁盘可用空间的5%,一旦mongod创建了oplog文件,此后再次修改oplogSizeMB将不会生效。此值不要设置的太小, 应该足以保存24小时的操作日志,以保证secondary有充足的维护时间;如果太小,secondary将不能通过oplog来同步数据,只能全量同步。 | |
replSetName | string | “复制集”的名称,复制集中的所有mongd实例都必须有相同的名字,sharding分布式下,不同的sharding应该使用不同的replSetName,有些驱动会根据复制集的名字进行分组 | |
enableMajorityReadConcern | bool | true | 是否开启readConcern的级别为“majority”,默认为false;只有开启此选项,才能在read操作中使用“majority”。(3.2+版本) |
secondaryIndexPrefetch | string | all | 只对mmapv1存储引擎有效。复制集中的secondary,从oplog中运用变更操作之前,将会先把索引加载到内存中,默认情况下,secondaries首先将操作相关的索引加载到内存,然后再根据oplog应用操作。可选值:1)none:secondaries不将索引数据加载到内容;2)all:sencondaries将此操作有关的索引数据加载到内存;3)_id_only:只加载_id索引; |
localPingThresholdMs | Integer | 15 | ping时间,单位:毫秒,mongos用来判定将客户端read请求发给哪个secondary。仅对mongos有效。默认值为15,和客户端driver中的默认值一样。当mongos接收到客户端read请求,它将:1、找出复制集中ping值最小的member。2、将延迟值被此值允许的members,构建一个列表.3、从列表中随机选择一个member。ping值是动态值,每10秒计算一次。mongos将客户端请求转发给延迟较小(与此值相比)的某个secondary节点。 |
9、sharding架构(sharding)
配置示例:
sharding:
clusterRole: mongo_test
archiveMovedChunks: true
autoSplit:true
configDB:192.168.101.11
chunkSize:128
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
clusterRole | string | 在sharding集群中,此mongod实例的角色,可选值:1、configsvr:此实例为config server,此实例默认侦听27019端口;2、shardsvr:此实例为shard(分片),侦听27018端口;此配置仅对mongod有效。通常config server和sharding server需要使用各自的配置文件。 | |
archiveMovedChunks | boolean | false | 当chunks因为“负载平衡”而迁移到其他节点时,mongod是否将这些chunks归档,并保存在dbPath下“moveChunk”目录下,mongod不会删除moveChunk下的文件。 |
autoSplit | boolean | true | 是否开启sharded collections的自动分裂,仅对mongos有效。如果所有的mongos都设定为false,那么collections数据增长但不能分裂成新的chunks。因为集群中任何一个mongos进程都可以触发split,所以此值需要在所有mongos行保持一致。仅对mongos有效。 |
configDB | string | 设定config server的地址列表,每个server地址之间以“,”分割,通常sharded集群中指定1或者3个config server。(生产环境,通常是3个config server,但1个也是可以的)。所有的mongos实例必须配置一样,否则可能带来不必要的问题。 | |
chunkSize | Integer | 64 | sharded集群中每个chunk的大小,单位:MB,默认为64,此值对于绝大多数应用而言都是比较理想的。chunkSize太大会导致分布不均,太小会导致分裂成大量的chunk而经常移动. 整个sharding集群中,此值需要保持一致,集群启动后修改此值将不再生效。 |
10、审计日志(auditLog)
配置示例:
auditLog:
destination:
format:
path:
filter:
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
destination | string | syslog,以json格式保存身份验证到syslog,windows下不可用,serverity级别为info,facility级别为user。 | |
format | string | 指定输出文件的格式JSON,输出json格式文件;BSON,输出bson二进制格式文件。 | |
path | string | 如果--auditDestination的值为file,则该选项指定文件路径。 | |
filter | document | 指定过滤系统身份验证的格式为:{ atype : |
11、snmp(snmp)
配置示例:
snmp:
disabled: false
subagent: false
master: false
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
disabled | boolean | false | 是否使能SNMP访问mongod,此参数与 snmp.subagent 及 snmp.master互斥。 |
subagent | boolean | 运行SNMP为一个子代理。 | |
master | boolean | 运行SNMP为一个主进程。 |
12、Mongos独有选项
配置示例:
replication:
localPingThresholdMs:
sharding:
configDB:
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
localPingThresholdMs | integer | 15 | mongos发送ping的时间间隔,当客户端选定副本集进行读操作时受影响。 |
configDB | string | 指定配置数据库。可以使用逗号分隔一到三个服务器。如果处于不同的位置,需要指定最近的一个。不能移除配置服务器,即使不可用或者离线了。 |
13、windows服务选项
配置示例:
processManagement:
windowsService:
serviceName:
displayName:
description:
serviceUser:
servicePassword:
选项说明:
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
windowsService.serviceName | string | MongoDB | 指定mongodb服务名称。可以使用--install,--remove增加或删除。 |
windowsService.displayName | string | MongoDB | 设置mongodb服务应用程序的名称。 |
windowsService.description | string | MongoDB Server | 结合--install,必须指定该选项的值 |
windowsService.serviceUser | string | 指定运行mongodb服务的用户 | |
windowsService.servicePassword | string | 指定运行mongodb服务的用户的密码 |
参考文档:
https://docs.mongodb.com/manual/reference/configuration-options/
https://docs.mongodb.com/manual/reference/configuration-file-settings-command-line-options-mapping/#conf-file-command-line-mapping
https://www.jianshu.com/p/f9f1454f251f
https://www.oudahe.com/p/50153/