mongodb的配置文件详解()
官方地址 https://docs.mongodb.com/manual/reference/configuration-options/#configuration-file
以下页面描述了MongoDB 4.0中可用的配置选项。有关其他版本MongoDB的配置文件选项,请参阅相应版本的MongoDB手册。
配置文件
您可以使用配置文件在启动时配置mongod和mongos实例。配置文件包含mongod与 mongos命令行选项等效的设置。请参阅配置文件设置和命令行选项映射。
使用配置文件可以简化管理mongod和 mongos选项,尤其适用于大规模部署。您还可以向配置文件添加注释以解释服务器的设置。
在Linux上,/etc/mongod.conf使用包管理器安装MongoDB时会包含默认配置文件。
在Windows上, 安装期间包含默认配置文件。<install directory>/bin/mongod.cfg
在macOS上,安装不包含默认配置文件; 相反,要使用配置文件,请创建一个文件。
文件格式
在2.6版中更改: MongoDB 2.6引入了基于YAML的配置文件格式。的2.4配置文件的格式仍是向后兼容性。
以下示例配置文件包含mongod 可以适应本地配置的几个设置:
注意
YAML不支持缩进的制表符:使用空格代替。
包括在官方的MongoDB包的Linux软件包init脚本依赖于特定的值systemLog.path,storage.dbPath和processManagement.fork。如果在默认配置文件中修改这些设置,则mongod可能无法启动。
| [1] | YAML是JSON的超集。 |
使用配置文件
要配置mongod或mongos使用配置文件,请使用--config选项或 -f选项指定配置文件,如以下示例所示:
例如,以下用途:mongod --config <configuration file> mongos --config <configurationfile>
您还可以使用-f别名指定配置文件,如下所示:
如果您从软件包安装并使用系统的init脚本启动了MongoDB ,那么您已经在使用配置文件。
核心选项
systemLog选项
systemLog.verbosity-
类型:整数
默认值:0
在3.0版中更改。
默认的日志信息 冗长级别的组件。详细级别确定MongoDB输出的信息和调试消息的数量。
详细程度可以
0是5:要对命名组件使用不同的详细级别,请使用组件的详细程度设置。例如,使用
systemLog.component.accessControl.verbosity专门为ACCESS组件设置详细级别。请参阅
systemLog.component.<name>.verbosity特定组件详细程度设置的设置。有关设置日志详细级别的各种方法,请参阅 配置日志详细级别。
systemLog.quiet-
输入:boolean
运行
mongos或mongod处于安静模式,试图限制输出量。systemLog.quiet是不建议用于生产系统,因为它可以使在特定的连接变得更加困难跟踪问题。
systemLog.traceAllExceptions-
输入:boolean
打印详细信息以进行调试。用于支持相关故障排除的其他日志记录。
systemLog.syslogFacility-
输入:string
默认值:用户
将消息记录到syslog时使用的设施级别。您指定的值必须由操作系统的syslog实现支持。要使用此选项,您必须设置
systemLog.destination为syslog。
systemLog.path-
输入:string
日志文件的路径,
mongod或者mongos应该发送所有诊断日志记录信息,而不是标准输出或主机的syslog。MongoDB在指定的路径上创建日志文件。Linux软件包init脚本不希望
systemLog.path更改默认值。如果使用Linux软件包并进行更改systemLog.path,则必须使用自己的init脚本并禁用内置脚本。
systemLog.logAppend-
输入:boolean
默认值:False
当或 实例重新启动时
true,将新条目添加到现有日志文件的末尾mongos或mongod将其添加到现有日志文件的末尾。如果没有此选项,将备份现有日志并创建新文件。mongosmongodmongod
systemLog.logRotate-
输入:string
默认值:重命名
版本3.0.0中的新功能。
该
logRotate命令的行为。指定rename或reopen:-
rename重命名日志文件。 -
reopen按照典型的Linux / Unix日志轮换行为关闭并重新打开日志文件。使用reopen使用的Linux / Unix logrotate的工具时,以避免日志的损失。如果指定
reopen,则还必须设置systemLog.logAppend为true。
-
systemLog.destination-
输入:string
MongoDB发送所有日志输出的目标。指定
file或syslog。如果指定file,则还必须指定systemLog.path。如果未指定
systemLog.destination,MongoDB会将所有日志输出发送到标准输出。警告
在
syslog当它将消息记录,还不时的MongoDB发出消息后台生成时间戳。这可能导致日志条目的误导时间戳,尤其是在系统负载很重的情况下。我们建议使用file生产系统选项来确保准确的时间戳。
systemLog.timeStampFormat-
输入:string
默认值:iso8601-local
日志消息中时间戳的时间格式。指定以下值之一:
值 描述 ctime将时间戳显示为。 Wed Dec 31 18:17:54.811iso8601-utc以ISO-8601格式显示协调世界时(UTC)的时间戳。例如,在大纪元开始的纽约: 1970-01-01T00:00:00.000Ziso8601-local以ISO-8601格式显示本地时间的时间戳。例如,在大纪元开始的纽约: 1969-12-31T19:00:00.000-0500
systemLog.component选项
systemLog.component.accessControl.verbosity-
类型:整数
默认值:0
版本3.0中的新功能。
与访问控制相关的组件的日志消息详细级别。见
ACCESS组件。详细程度可以
0是5:
systemLog.component.command.verbosity-
类型:整数
默认值:0
版本3.0中的新功能。
与命令相关的组件的日志消息详细级别。见
COMMAND组件。详细程度可以
0是5:
systemLog.component.control.verbosity-
类型:整数
默认值:0
版本3.0中的新功能。
与控制操作相关的组件的日志消息详细级别。见
CONTROL组件。详细程度可以
0是5:
systemLog.component.ftdc.verbosity-
类型:整数
默认值:0
版本3.2中的新功能。
与诊断数据收集操作相关的组件的日志消息详细级别。见
FTDC组件。详细程度可以
0是5:
systemLog.component.geo.verbosity-
类型:整数
默认值:0
版本3.0中的新功能。
与地理空间解析操作相关的组件的日志消息详细级别。见
GEO组件。详细程度可以
0是5:
systemLog.component.index.verbosity-
类型:整数
默认值:0
版本3.0中的新功能。
与索引操作相关的组件的日志消息详细级别。见
INDEX组件。详细程度可以
0是5:
systemLog.component.network.verbosity-
类型:整数
默认值:0
版本3.0中的新功能。
与网络操作相关的组件的日志消息详细级别。见
NETWORK组件。详细程度可以
0是5:
systemLog.component.query.verbosity-
类型:整数
默认值:0
版本3.0中的新功能。
与查询操作相关的组件的日志消息详细级别。见
QUERY组件。详细程度可以
0是5:
systemLog.component.replication.verbosity-
类型:整数
默认值:0
版本3.0中的新功能。
与复制相关的组件的日志消息详细级别。见
REPL组件。详细程度可以
0是5:
systemLog.component.replication.heartbeats.verbosity-
类型:整数
默认值:0
版本3.6中的新功能。
与心跳相关的组件的日志消息详细级别。见
REPL_HB组件。详细程度可以
0是5:
systemLog.component.replication.rollback.verbosity-
类型:整数
默认值:0
版本3.6中的新功能。
与回滚相关的组件的日志消息详细级别。见
ROLLBACK组件。详细程度可以
0是5:
systemLog.component.sharding.verbosity-
类型:整数
默认值:0
版本3.0中的新功能。
与分片相关的组件的日志消息详细级别。见
SHARDING组件。详细程度可以
0是5:
systemLog.component.storage.verbosity-
类型:整数
默认值:0
版本3.0中的新功能。
与存储相关的组件的日志消息详细级别。见
STORAGE组件。如果
systemLog.component.storage.journal.verbosity未设置,则systemLog.component.storage.verbositylevel也适用于日记组件。详细程度可以
0是5:
systemLog.component.storage.journal.verbosity-
类型:整数
默认值:0
版本3.0中的新功能。
与日记相关的组件的日志消息详细级别。见
JOURNAL组件。如果
systemLog.component.storage.journal.verbosity未设置,则日记记录组件具有与父存储组件相同的详细级别:即systemLog.component.storage.verbosity设置的 级别或默认的详细级别。详细程度可以
0是5:
systemLog.component.storage.recovery.verbosity-
类型:整数
默认值:0
4.0版中的新功能。
与恢复相关的组件的日志消息详细级别。见
RECOVERY组件。如果
systemLog.component.storage.recovery.verbosity未设置,则systemLog.component.storage.verbositylevel也适用于恢复组件。详细程度可以
0是5:
systemLog.component.transaction.verbosity-
类型:整数
默认值:0
版本4.0.2中的新功能。
与事务相关的组件的日志消息详细级别。见
TXN组件。详细程度可以
0是5:
processManagement选项
processManagement.fork-
输入:boolean
默认值:False
启用在后台运行
mongos或mongod处理的守护程序模式。默认情况下mongos或mongod不作为守护程序运行:通常通过使用或使用处理守护进程的控制进程(例如,和)运行mongos或mongod作为守护程序 运行。processManagement.forkupstartsystemdLinux软件包init脚本不希望
processManagement.fork更改默认值。如果使用Linux软件包并进行更改processManagement.fork,则必须使用自己的init脚本并禁用内置脚本。
processManagement.pidFilePath-
输入:string
指定一个文件位置来保存的进程ID
mongos或mongod过程,其中mongos或mongod将写入其PID。这对于结合设置跟踪mongos或mongod处理 非常有用processManagement.fork。如果没有指定的processManagement.pidFilePath选项,则该进程不会创建PID文件。
processManagement.timeZoneInfo-
输入:string
加载时区数据库的完整路径。如果未提供此选项,则MongoDB将使用其内置时区数据库。
Linux和macOS包中包含的配置文件
/usr/share/zoneinfo默认设置时区数据库路径。内置时区数据库是Olson / IANA时区数据库的副本。它与MongoDB版本一起更新,但时区数据库的发布周期与MongoDB的发布周期不同。可以从https://downloads.mongodb.org/olson_tz_db/timezonedb-latest.zip下载最新版本的时区数据库的副本 。
cloud选项
4.0版中的新功能。
cloud.monitoring.free.state-
输入:string
4.0版中的新功能:适用于MongoDB Community Edition。
启用或禁用免费的MongoDB云监控。
cloud.monitoring.free.state接受以下值:runtime默认。您可以在运行时启用或禁用免费监控。
要在运行时启用或禁用免费监控,请参阅
db.enableFreeMonitoring()和db.disableFreeMonitoring()。要在运行时使用访问控制在运行时启用或禁用免费监视,用户必须具有所需的权限。查看
db.enableFreeMonitoring()并db.disableFreeMonitoring()了解详情。on启动时启用免费监控; 即注册免费监控。在启动时启用时,您无法在运行时禁用自由监视。 off无论您之前是否注册过免费监控,都会在启动时禁用免费监控。在启动时禁用时,无法在运行时启用免费监视。 启用后,自由监控状态将保持启用状态,直到明确禁用。也就是说,每次启动服务器时都不需要重新启用。
有关相应的命令行选项,请参阅
--enableFreeMonitoring。
cloud.monitoring.free.tag-
输入:string
4.0版中的新功能:适用于MongoDB Community Edition。
用于描述环境上下文的可选标记 标签可以在启动时作为免费MongoDB云监控注册的一部分发送。
有关相应的命令行选项,请参阅
--enableFreeMonitoringTag。
net选项
net.port-
类型:整数
默认值:27017
MongoDB实例侦听客户端连接的TCP端口。
net.bindIp-
输入:string
默认值:localhost
注意
开始在MongoDB中3.6,
mongos并mongod绑定默认为localhost。请参见默认绑定到Localhost。主机名和/或IP地址和/或完整的Unix域套接字路径,
mongos并且mongod应该监听客户端连接。您可以附加mongos和mongod任何界面。要绑定到多个地址,请输入逗号分隔值列表。例
localhost,/tmp/mongod.sock小费
如果可能,请使用逻辑DNS主机名而不是IP地址,尤其是在配置副本集成员或分片集群成员时。逻辑DNS主机名的使用避免了由于IP地址更改而导致的配置更改。
要绑定到所有IPv4地址,请输入
0.0.0.0。要绑定到所有IPv4和IPv6地址,请输入
::,0.0.0.0或者使用该net.bindIpAll设置。注意
net.bindIp并且net.bindIpAll是相互排斥的。也就是说,您可以指定其中一个,但不能同时指定两者。
net.bindIpAll-
输入:boolean
默认值:False
版本3.6中的新功能。
如果为true,则
mongos和mongod实例绑定到所有IP地址。当连接mongos和mongod到可公开访问的接口,确保已实施适当的身份验证和防火墙的限制以保护数据库的完整性。或者,将
net.bindIp设置设置为::,0.0.0.0绑定到所有IP地址。注意
net.bindIp并且net.bindIpAll是相互排斥的。也就是说,您可以指定其中一个,但不能同时指定两者。
net.maxIncomingConnections-
类型:整数
默认值:65536
要接受
mongos或mongod将接受的最大同时连接数。如果此设置高于操作系统配置的最大连接跟踪阈值,则此设置无效。不要为此选项分配太低的值,否则在正常的应用程序操作期间会遇到错误。
mongos如果您有一个客户端创建多个连接并允许它们超时而不是关闭它们,这对于特别有用。在这种情况下,请设置
maxIncomingConnections为略高于客户端创建的最大连接数或连接池的最大大小的值。
net.wireObjectCheck-
输入:boolean
默认值:True
何时
true,mongod或者mongos实例在收到客户端时验证所有请求,以防止客户端将格式错误或无效的BSON插入MongoDB数据库。对于具有高度子文档嵌套的对象,
net.wireObjectCheck可以对性能产生很小的影响。
net.unixDomainSocket选项
net.unixDomainSocket.enabled-
输入:boolean
默认值:True
启用或禁用UNIX域套接字上的侦听。
net.unixDomainSocket.enabled仅适用于基于Unix的系统。如果
net.unixDomainSocket.enabled是true,mongos或者mongod监听Unix套接字上。该
mongos或mongod过程总是Unix套接字上监听,除非以下情况之一是真实的:net.unixDomainSocket.enabled是false--nounixsocket已设定。命令行选项优先于配置文件设置。net.bindIp没有设定net.bindIp未指定localhost或其关联的IP地址
net.unixDomainSocket.pathPrefix-
输入:string
默认值:/ tmp
UNIX套接字的路径。
net.unixDomainSocket.pathPrefix仅适用于基于Unix的系统。如果此选项没有值,则
mongos或mongod进程会创建一个带有/tmp前缀的套接字。MongoDB在UNIX套接字上创建和侦听,除非满足以下条件之一:net.unixDomainSocket.enabled是false--nounixsocket已设定net.bindIp没有设定net.bindIp未指定localhost或其关联的IP地址
net.unixDomainSocket.filePermissions-
输入:int
默认值:
0700设置UNIX域套接字文件的权限。
net.unixDomainSocket.filePermissions仅适用于基于Unix的系统。
net.http选项
在版本3.6中更改: MongoDB 3.6删除了已弃用的net.http选项。自3.2版以来,这些选项已被弃用。
net.ssl选项
net.ssl.sslOnNormalPorts-
输入:boolean
从2.6版开始不推荐使用:改为使用。
net.ssl.mode: requireSSL为
mongos或启用或禁用TLS / SSLmongod。对于默认MongoDB端口上的所有连接或指定的端口
net.ssl.sslOnNormalPorts,使用mongos或mongod要求TLS / SSL加密net.port。默认情况下,net.ssl.sslOnNormalPorts已禁用。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
net.ssl.mode-
输入:string
版本2.6中的新功能。
启用或禁用用于所有网络连接的TLS / SSL或混合TLS / SSL。
net.ssl.mode设置的参数可以是以下之一:值 描述 disabled服务器不使用TLS / SSL。 allowSSL服务器之间的连接不使用TLS / SSL。对于传入连接,服务器接受TLS / SSL和非TLS /非SSL。 preferSSL服务器之间的连接使用TLS / SSL。对于传入连接,服务器接受TLS / SSL和非TLS /非SSL。 requireSSL服务器仅使用和接受TLS / SSL加密连接。 从版本3.4开始,如果
--sslCAFile或未ssl.CAFile指定且未使用x.509身份验证,则在连接到启用TLS / SSL的服务器时将使用系统范围的CA证书存储。如果使用x.509身份验证,
--sslCAFile或ssl.CAFile必须指定,除非使用--sslCertificateSelector。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
net.ssl.PEMKeyFile-
输入:string
注意
从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
net.ssl.certificateSelector。在
.pem同时包含TLS / SSL证书和密钥文件。- 在Linux / BSD上,您必须指定
net.ssl.PEMKeyFile何时启用TLS / SSL。 - 在Windows或macOS上,您必须指定
net.ssl.PEMKeyFile或net.ssl.certificateSelector启用TLS / SSL时。
有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
- 在Linux / BSD上,您必须指定
net.ssl.PEMKeyPassword-
输入:string
用于解密证书密钥文件的密码(即
PEMKeyFile)。net.ssl.PEMKeyPassword仅在证书密钥文件已加密时才使用该选项。在所有情况下,mongos或mongod将从所有日志记录和报告输出中编辑密码。从MongoDB 4.0开始:
- 在Linux / BSD上,如果PEM文件中的私钥已加密且您未指定该
net.ssl.PEMKeyPassword选项,MongoDB将提示输入密码。请参阅TLS / SSL证书密码。 - 在macOS或Windows上,如果PEM文件中的私钥已加密,则必须明确指定该
net.ssl.PEMKeyPassword选项。或者,您可以使用安全系统存储中的证书(请参阅net.ssl.certificateSelector参考资料)而不是PEM密钥文件,或使用未加密的PEM文件。
有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
- 在Linux / BSD上,如果PEM文件中的私钥已加密且您未指定该
net.ssl.certificateSelector-
输入:string
版本4.0中的新功能:在Windows和macOS上可用作替代版本
net.ssl.PEMKeyFile。net.ssl.PEMKeyFile和net.ssl.certificateSelector选项是互斥的。您只能指定一个。指定证书属性,以便从操作系统的证书存储中选择匹配的证书。
net.ssl.certificateSelector接受格式的参数,<property>=<value>其中属性可以是以下之一:属性 值类型 描述 subjectASCII字符串 证书上的主题名称或通用名称 thumbprint十六进制字符 表示为十六进制的字节序列,用于通过SHA-1摘要标识公钥。
在
thumbprint有时被称为一个fingerprint。
net.ssl.clusterCertificateSelector-
输入:string
版本4.0中的新功能:在Windows和macOS上可用作替代版本
net.ssl.clusterFile。net.ssl.clusterFile和net.ssl.clusterCertificateSelector选项是互斥的。您只能指定一个。指定证书属性,以便从操作系统的证书存储中选择用于内部身份验证的匹配证书。
net.ssl.clusterCertificateSelector接受格式的参数,<property>=<value>其中属性可以是以下之一:属性 值类型 描述 subjectASCII字符串 证书上的主题名称或通用名称 thumbprint十六进制字符 表示为十六进制的字节序列,用于通过SHA-1摘要标识公钥。
在
thumbprint有时被称为一个fingerprint。
net.ssl.clusterFile-
输入:string
注意
从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
net.ssl.clusterCertificateSelector。在
.pem包含了X.509证书,密钥文件的文件会员认证 的集群或副本集。如果
net.ssl.clusterFile未指定.pem内部群集身份验证或备用 文件net.ssl.clusterCertificateSelector,则群集将使用设置中.pem指定的 文件PEMKeyFile或由net.ssl.certificateSelector。返回的证书。如果使用x.509身份验证,
--sslCAFile或ssl.CAFile必须指定,除非使用--sslCertificateSelector。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
net.ssl.clusterPassword-
输入:string
版本2.6中的新功能。
用于解密指定的x.509证书密钥文件的密码
--sslClusterFile。net.ssl.clusterPassword仅在证书密钥文件已加密时才使用该选项。在所有情况下,mongos或mongod将从所有日志记录和报告输出中编辑密码。从MongoDB 4.0开始:
- 在Linux / BSD上,如果x.509文件中的私钥已加密且您未指定该
net.ssl.clusterPassword选项,则MongoDB将提示输入密码。请参阅TLS / SSL证书密码。 - 在macOS或Windows上,如果x.509文件中的私钥已加密,则必须显式指定该
net.ssl.clusterPassword选项。或者,您可以使用安全系统存储中的证书(请参阅net.ssl.clusterCertificateSelector)而不是群集PEM文件,也可以使用未加密的PEM文件。
有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
- 在Linux / BSD上,如果x.509文件中的私钥已加密且您未指定该
net.ssl.CAFile-
输入:string
.pem包含证书颁发机构的根证书链的文件。.pem使用相对路径或绝对路径指定文件的文件名 。从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
net.ssl.certificateSelector。使用安全存储时,您不需要,但也可以指定net.ssl.CAFile。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
net.ssl.clusterCAFile-
输入:string
版本4.0.3中的新增功能
.pem包含证书颁发机构的根证书链的文件,用于验证由建立连接的客户端提供的证书。.pem使用相对路径或绝对路径指定文件的文件名。如果
net.ssl.clusterCAFile未指定.pem用于验证来自建立连接的客户端的证书的.pem文件,则群集将使用该net.ssl.CAFile选项中指定的文件。net.ssl.clusterCAFile允许您使用单独的证书颁发机构来验证客户端到服务器和服务器到TLS握手的客户端部分。从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
net.ssl.clusterCertificateSelector。使用安全存储时,您不需要,但也可以指定net.ssl.clusterCAFile。需要
net.ssl.CAFile设置。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
net.ssl.CRLFile-
输入:string
.pem包含证书吊销列表的文件。.pem使用相对路径或绝对路径指定文件的文件名。注意
从MongoDB 4.0开始,您无法
net.ssl.CRLFile在macOS上指定。请net.ssl.certificateSelector改用。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
net.ssl.allowConnectionsWithoutCertificates-
输入:boolean
对于未提供证书的客户端,
mongos或mongod在建立连接时绕过TLS / SSL证书验证。但是,对于提供证书的客户端,
mongos或mongod使用指定的根证书链执行证书验证,CAFile并拒绝具有无效证书的客户端。net.ssl.allowConnectionsWithoutCertificates如果您的混合部署包含不能或不能向mongos或提供证书的客户端,请使用该选项mongod。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
net.ssl.allowInvalidCertificates-
输入:boolean
启用或禁用群集中其他服务器上的TLS / SSL证书的验证检查,并允许使用无效证书进行连接。
注意
从MongoDB 4.0开始,如果您指定
--sslAllowInvalidCertificates或使用x.509身份验证,则无效证书仅足以建立TLS / SSL连接,但 不足以进行身份验证。ssl.allowInvalidCertificates: true使用该
net.ssl.allowInvalidCertificates设置时,MongoDB会记录有关使用无效证书的警告。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
net.ssl.allowInvalidHostnames-
输入:boolean
默认值:False
版本3.0中的新功能。
如果
net.ssl.allowInvalidHostnames是true,MongoDB的禁用TLS / SSL证书的主机名的验证,允许mongod连接到MongoDB的情况下,如果主机名的证书不指定主机名匹配。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
net.ssl.disabledProtocols-
输入:string
3.0.7版中的新功能。
阻止使用TLS / SSL运行的MongoDB服务器接受使用特定协议的传入连接。要指定多个协议,请使用逗号分隔的协议列表。
net.ssl.disabledProtocols识别以下协议:TLS1_0,TLS1_1,TLS1_2,并开始在版本4.0.4(和3.6.9)TLS1_3。- 在macOS上,您无法禁用
TLS1_1和保留两者TLS1_0并TLS1_2启用。例如,您必须至少禁用其他两个中的一个TLS1_0,TLS1_1。 - 要列出多个协议,请指定为逗号分隔的协议列表。例如
TLS1_0,TLS1_1。 - 指定无法识别的协议将阻止服务器启动。
- 指定的禁用协议会覆盖任何默认禁用的协议。
从版本4.0开始,如果系统上有TLS 1.1+,MongoDB将禁用TLS 1.0。要启用已禁用TLS 1.0,指定
none给net.ssl.disabledProtocols。请参见禁用TLS 1.0。副本集和分片集群的成员必须至少说一个共同的协议。
也可以看看
- 在macOS上,您无法禁用
net.ssl.FIPSMode-
输入:boolean
启用或禁用使用TLS / SSL库的FIPS模式为
mongos或mongod。您的系统必须具有符合FIPS的库才能使用该net.ssl.FIPSMode选项。注意
FIPS兼容的TLS / SSL仅在MongoDB Enterprise中可用。有关更多信息,请参阅 配置MongoDB for FIPS。
net.compression选项
net.compression.compressors-
默认值:snappy
版本3.4中的新功能。
指定用于此实例
mongod或mongos实例之间通信的默认压缩器:- 如果实例是副本集或分片群集的一部分,则部署的其他成员
- 一个
mongo壳 - 支持
OP_COMPRESSED邮件格式的驱动程序。
MongoDB支持以下压缩器:
在3.6和4.0版本,
mongod并mongos默认启用网络压缩与snappy作为压缩机。要禁用网络压缩,请将值设置为
disabled。重要
当双方都启用网络压缩时,将压缩消息。否则,各方之间的消息将被解压缩。
如果指定多个压缩器,则列出压缩器的顺序以及通信启动器都很重要。例如,如果
mongoshell指定了以下网络压缩器zlib,snappy和mongod指定snappy,zlib,则mongoshell和mongoduses 之间的消息zlib。如果各方不共享至少一个公共压缩器,则各方之间的消息是未压缩的。例如,如果
mongoshell指定网络压缩器zlib并mongod指定snappy,则mongoshell和之间的消息mongod不会被压缩。
security选项
security.keyFile-
输入:string
密钥文件的路径,用于存储MongoDB实例用于在分片集群或副本集中相互进行身份验证的共享密钥 。
keyFile暗示security.authorization。有关更多信息,请参阅内部验证
security.clusterAuthMode-
输入:string
默认值:keyFile
版本2.6中的新功能。
用于群集身份验证的身份验证模式。如果使用 内部x.509身份验证,请在此处指定。此选项可以具有以下值之一:
值 描述 keyFile使用密钥文件进行身份验证。只接受密钥文件。 sendKeyFile用于滚动升级目的。发送密钥文件进行身份验证,但可以接受密钥文件和x.509证书。 sendX509用于滚动升级目的。发送x.509证书进行身份验证,但可以接受密钥文件和x.509证书。 x509推荐的。发送x.509证书以进行身份验证,并仅接受x.509证书。 从版本3.4开始,如果
--sslCAFile或未ssl.CAFile指定且未使用x.509身份验证,则在连接到启用TLS / SSL的服务器时将使用系统范围的CA证书存储。如果使用x.509身份验证,
--sslCAFile或ssl.CAFile必须指定,除非使用--sslCertificateSelector。有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置。
-
输入:string
默认值:已禁用
启用或禁用基于角色的访问控制(RBAC)以管理每个用户对数据库资源和操作的访问。
将此选项设置为以下之一:
值 描述 enabled用户只能访问已被授予权限的数据库资源和操作。 disabled用户可以访问任何数据库并执行任何操作。 有关更多信息,请参阅基于角色的访问控制。
该
security.authorization设置仅适用于mongod。
security.transitionToAuth-
输入:boolean
默认值:False
在新版本3.4:允许
mongod或mongos接受和创造,并从其它身份验证和非认证连接mongod,并mongos在部署实例。用于执行副本集或分片集群从非身份验证配置到内部身份验证的滚动转换。需要指定内部身份验证机制,例如security.keyFile。例如,如果使用密钥文件进行 内部验证中,
mongod或mongos创建具有任何经认证的连接mongod或mongos在部署使用匹配密钥文件。如果安全机制不匹配,则使用mongod或mongos使用非认证连接。A
mongod或mongos运行security.transitionToAuth不会强制执行用户访问控制。用户可以在没有任何访问控制检查的情况下连接到您的部署,并执行读取,写入和管理操作。
security.javascriptEnabled-
输入:boolean
默认值:True
启用或禁用服务器端JavaScript执行。禁用时,不能使用执行JavaScript代码的服务器端执行的操作,例如
$where查询运算符,mapReduce命令和db.collection.mapReduce()方法,group命令和db.collection.group()方法。
security.redactClientLogData-
输入:boolean
3.4版中的新功能:仅适用于MongoDB Enterprise。
一个
mongod或mongos与运行security.redactClientLogData重新编辑登录前伴随一个给定的日志事件的任何消息。这可以防止mongod或mongos将存储在数据库中的潜在敏感数据写入诊断日志。日志中仍会显示错误或操作代码,行号和源文件名等元数据。security.redactClientLogData与静态加密和 TLS / SSL(传输加密)结合使用, 以帮助符合法规要求。例如,MongoDB部署可能会在一个或多个集合中存储个人身份信息(PII)。的
mongod或mongos记录的事件,如那些涉及CRUD操作,分片的元数据等,这是可能的mongod或者mongos可以暴露PII因为这些测井操作的一部分。Amongod或mongosrunning withsecurity.redactClientLogData在输出到日志之前删除伴随这些事件的任何消息,从而有效地删除PII。由于缺少与日志事件相关的数据,因此运行
mongod或mongos运行的诊断security.redactClientLogData可能更加困难。有关日志输出效果的示例,请参阅 进程日志记录手册页security.redactClientLogData。您可以在运行
mongod或mongos使用setParameterdatabase命令时启用或禁用日志编辑。
密钥管理配置选项
security.enableEncryption-
输入:boolean
默认值:False
版本3.2中的新功能:为WiredTiger存储引擎启用加密。您必须设置为
true传递加密密钥和配置。企业特色
仅适用于MongoDB Enterprise。
security.encryptionCipherMode-
输入:string
默认值:
AES256-CBC版本3.2中的新功能。
用于静态加密的密码模式:
模式 描述 AES256-CBC密码块链接模式下的256位高级加密标准 AES256-GCM伽罗瓦/计数器模式下的256位高级加密标准
仅在Linux上可用。
在4.0版中更改: Windows上的MongoDB Enterprise不再支持
AES256-GCM。此密码现在仅在Linux上可用。企业特色
仅适用于MongoDB Enterprise。
security.encryptionKeyFile-
输入:string
版本3.2中的新功能。
通过KMIP 以外的进程管理密钥时本地密钥文件的路径。仅在通过KMIP以外的流程管理密钥时设置。如果数据已使用KMIP加密,MongoDB将抛出错误。
需要
security.enableEncryption是true。企业特色
仅适用于MongoDB Enterprise。
security.kmip.keyIdentifier-
输入:string
版本3.2中的新功能。
KMIP服务器中现有密钥的唯一KMIP标识符。包括使用与标识符关联的密钥作为系统密钥。您只能在第一次为
mongod实例启用加密时使用该设置。要求security.enableEncryption是真的。如果未指定,MongoDB将请求KMIP服务器创建一个新密钥以用作系统密钥。
如果KMIP服务器无法找到具有指定标识符的密钥,或者数据已使用密钥加密,则MongoDB将抛出错误。
企业特色
仅适用于MongoDB Enterprise。
security.kmip.rotateMasterKey-
输入:boolean
默认值:False
版本3.2中的新功能。
如果为true,则旋转主密钥并重新加密内部密钥库。
企业特色
仅适用于MongoDB Enterprise。
也可以看看
security.kmip.serverName-
输入:string
版本3.2中的新功能。
运行KMIP服务器的密钥管理解决方案的主机名或IP地址。要求
security.enableEncryption是真的。企业特色
仅适用于MongoDB Enterprise。
security.kmip.port-
输入:string
默认值:5696
版本3.2中的新功能。
KMIP服务器正在侦听的端口号。需要
security.kmip.serverName提供。要求security.enableEncryption是真的。企业特色
仅适用于MongoDB Enterprise。
security.kmip.clientCertificateFile-
输入:string
版本3.2中的新功能。
包含用于向MongipDB验证KMIP服务器的客户端证书的路径的字符串。需要
security.kmip.serverName提供。注意
从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
security.kmip.clientCertificateSelector。企业特色
仅适用于MongoDB Enterprise。
security.kmip.clientCertificatePassword-
输入:string
版本3.2中的新功能。
用于解密客户端证书(即
security.kmip.clientCertificateFile)的密码 ,用于向MongipDB验证KMIP服务器。仅在证书已加密时使用该选项。企业特色
仅适用于MongoDB Enterprise。
security.kmip.clientCertificateSelector-
输入:string
版本4.0中的新功能:在Windows和macOS上可用作替代版本
security.kmip.clientCertificateFile。security.kmip.clientCertificateFile和security.kmip.clientCertificateSelector选项是互斥的。您只能指定一个。指定证书属性,以便从操作系统的证书存储中选择匹配的证书,以将MongoDB验证到KMIP服务器。
security.kmip.clientCertificateSelector接受格式的参数,<property>=<value>其中属性可以是以下之一:属性 值类型 描述 subjectASCII字符串 证书上的主题名称或通用名称 thumbprint十六进制字符 表示为十六进制的字节序列,用于通过SHA-1摘要标识公钥。
在
thumbprint有时被称为一个fingerprint。企业特色
仅适用于MongoDB Enterprise。
security.kmip.serverCAFile-
输入:string
版本3.2中的新功能。
CA文件的路径。用于验证与KMIP服务器的安全客户端连接。
注意
从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见
security.kmip.clientCertificateSelector。使用安全存储时,您不需要,但也可以指定security.kmip.serverCAFile。企业特色
仅适用于MongoDB Enterprise。
security.sasl选项
security.sasl.hostName-
输入:string
用于配置SASL和Kerberos身份验证的完全限定服务器域名。SASL主机名仅覆盖SASL和Kerberos配置的主机名。
对于
mongo外壳等的MongoDB工具连接到新的hostName,看gssapiHostName在选项mongo壳和其他工具。
security.sasl.serviceName-
输入:string
使用SASL注册的服务名称。此选项允许您 基于每个实例覆盖Kerberos主体名称的默认Kerberos 服务名称组件。如果未指定,则默认值为。
mongodbMongoDB仅允许在启动时设置此选项。将
setParameter不能更改此设置。此选项仅在MongoDB Enterprise中可用。
重要
确保您的驱动程序支持备用服务名称。对于
mongo外壳等的MongoDB工具连接到新的serviceName,看到的gssapiServiceName选项。
security.sasl.saslauthdSocketPath-
输入:string
UNIX域套接字文件的路径
saslauthd。
security.ldap选项
security.ldap.servers-
输入:string
3.4版中的新功能:仅适用于MongoDB Enterprise。
用于对其执行LDAP操作
mongod或对其mongos执行身份验证的LDAP服务器,或确定用户有权对给定数据库执行的操作。如果指定的LDAP服务器具有任何复制的实例,则可以在逗号分隔的列表中指定每个复制的服务器的主机和端口。如果LDAP基础结构将LDAP目录分区到多个LDAP服务器上,请将其任何复制实例指定一个 LDAP服务器
security.ldap.servers。MongoDB支持RFC 4511 4.1.10中定义的以下LDAP引用。不要security.ldap.servers用于列出基础架构中的每个LDAP服务器。可以在运行
mongod或mongos使用时 配置此设置setParameter。如果未设置,
mongod或mongos无法使用LDAP身份验证或授权。
security.ldap.bind.queryUser-
输入:string
3.4版中的新功能:仅适用于MongoDB Enterprise。
身份与
mongod或mongos结合如,连接到或LDAP服务器上执行查询时。仅在满足以下任何条件时才需要:
- 使用LDAP授权。
- 使用LDAP查询
security.ldap.userToDNMapping。 - LDAP服务器不允许匿名绑定
您必须使用
queryUser与queryPassword。如果未设置,
mongod或者mongos不会尝试绑定到LDAP服务器。可以在运行
mongod或mongos使用时 配置此设置setParameter。注意
Windows MongoDB部署可以使用
bindWithOSDefaults而不是queryUser和queryPassword。你不能同时指定queryUser,并bindWithOSDefaults在同一时间。
security.ldap.bind.queryPassword-
输入:string
3.4版中的新功能:仅适用于MongoDB Enterprise。
用于在使用时绑定到LDAP服务器的密码
queryUser。您必须使用queryPassword与queryUser。如果未设置,
mongod或者mongos不会尝试绑定到LDAP服务器。可以在运行
mongod或mongos使用时 配置此设置setParameter。注意
Windows MongoDB部署可以使用
bindWithOSDefaults而不是queryPassword和queryPassword。你不能同时指定queryPassword,并bindWithOSDefaults在同一时间。
security.ldap.bind.useOSDefaults-
输入:boolean
默认值:False
版本3.4中的新功能:仅适用于Windows平台的MongoDB Enterprise。
连接到LDAP服务器时,允许
mongod或mongos使用Windows登录凭据进行身份验证或绑定。仅在以下情况下需
- 使用LDAP授权。
- 使用LDAP查询。
username transformation - LDAP服务器不允许匿名绑定
security.ldap.bind.method-
输入:string
默认值:简单
3.4版中的新功能:仅适用于MongoDB Enterprise。
用于向LDAP服务器进行身份验证的方法
mongod或mongos用途。使用queryUser和queryPassword连接LDAP服务器。method支持以下值:如果指定
sasl,则可以使用配置可用的SASL机制security.ldap.bind.saslMechanisms。mongod或mongos默认使用DIGEST-MD5机制。
security.ldap.bind.saslMechanisms-
输入:string
默认值:DIGEST-MD5
3.4版中的新功能:仅适用于MongoDB Enterprise。
逗号分隔的SASL机制列表,
mongod或者mongos在对LDAP服务器进行身份验证时可以使用。的mongod或mongos与LDAP服务器必须同意在至少一种机制。的mongod或mongos动态加载在运行时安装在主机上的任何SASL机制库。安装和配置适当的库两者的所选择的SASL机构(一个或多个)
mongod或mongos主机和远程LDAP服务器主机。默认情况下,您的操作系统可能包含某些SASL库。请参阅与每个SASL机制关联的文档,以获取有关安装和配置的指导。如果使用的是
GSSAPI与使用SASL机制 Kerberos身份验证,验证了以下mongod或mongos主机:Linux-
- 在
KRB5_CLIENT_KTNAME环境变量解决客户的名称Linux的密钥表文件 的主机。有关Kerberos环境变量的更多信息,请参阅 Kerberos文档。 - 客户端密钥表包括 用户主要为
mongod或mongos连接到LDAP服务器时要使用和执行LDAP查询。
- 在
Windows- 如果连接到Active Directory服务器,Windows Kerberos配置会 在用户登录系统时自动生成 Ticket-Granting-Ticket。设置
useOSDefaults为 在连接到Active Directory服务器时true允许mongod或mongos使用生成的凭据并执行查询。
设置
method为sasl使用此选项。注意
有关SASL机制的完整列表,请参阅 IANA列表。请参阅LDAP或Active Directory服务的文档,以确定与服务兼容的SASL机制。
MongoDB不是SASL机制库的来源,MongoDB文档也不是安装或配置任何给定SASL机制的权威来源。有关文档和支持,请遵循SASL机制库供应商或所有者。
有关SASL的更多信息,请遵循以下资源:
- 对于Linux,请参阅Cyrus SASL文档。
- 对于Windows,请参阅Windows SASL文档。
security.ldap.transportSecurity-
输入:string
默认值:tls
3.4版中的新功能:仅适用于MongoDB Enterprise。
默认情况下,
mongod或mongos创建与LDAP服务器的TLS / SSL安全连接。对于Linux部署,您必须在
/etc/openldap/ldap.conf文件中配置相应的TLS选项 。您的操作系统的软件包管理器通过libldap依赖项创建此文件作为MongoDB Enterprise安装的一部分 。查看文档中 的ldap.conf OpenLDAP的文档 进行更完整的说明。TLS Options对于Windows部署,必须将LDAP服务器CA证书添加到Windows证书管理工具。该工具的确切名称和功能可能因操作系统版本而异。有关证书管理的更多信息,请参阅适用于您的Windows版本的文档。
设置
transportSecurity来none禁用TLS / SSL之间mongod或mongos和LDAP服务器。警告
设置
transportSecurity到none发送明文信息之间可能凭证mongod或mongos和LDAP服务器。
security.ldap.timeoutMS-
输入:int
默认值:10000
3.4版中的新功能:仅适用于MongoDB Enterprise。
以毫秒为单位
mongod或mongos应等待LDAP服务器响应请求的时间量。timeoutMS如果失败源是连接超时,则增加值可能会阻止MongoDB服务器和LDAP服务器之间的连接失败。减少值会timeoutMS减少MongoDB等待LDAP服务器响应的时间。可以在运行
mongod或mongos使用时 配置此设置setParameter。
security.ldap.userToDNMapping-
输入:string
3.4版中的新功能:仅适用于MongoDB Enterprise。
将提供给用户名
mongod或mongos用于身份验证的用户名映射到LDAP专有名称(DN)。userToDNMapping在以下情况下,您可能需要使用将用户名转换为LDAP DN:- 使用简单的LDAP绑定执行LDAP身份验证,其中用户使用不是完整LDAP DN的用户名对MongoDB进行身份验证。
- 使用它需要DN。
LDAP authorization query template - 使用不同的身份验证机制(例如x509,kerberos)将使用身份验证的客户端的用户名转换为完整的LDAP DN以进行授权。
userToDNMapping期望引用封闭的JSON字符串表示有序的文档数组。每个文档都包含一个正则表达式match以及用于转换传入用户名的模板substitution或ldapQuery模板。数组中的每个文档都具有以下形式:
领域 描述 例 matchECMAScript格式的正则表达式(regex),用于匹配提供的用户名。每个括号括起的部分表示由 substitution或使用的正则表达式捕获组ldapQuery。"(.+)ENGINEERING""(.+)DBA"substitutionLDAP专有名称(DN)格式化模板,用于将
match正则表达式匹配的认证名称转换为LDAP DN。每个大括号括起来的数字值都由通过正则表达式从认证用户名中提取的相应正则表达式捕获组替换match。替换的结果必须是RFC4514转义字符串。
"cn={0},ou=engineering,dc=example,dc=com"ldapQuery一种LDAP查询格式模板,用于将 match正则表达式匹配的身份验证名称插入到依赖于RFC4515和RFC4516编码的LDAP查询URI中。每个大括号括起来的数值都将由通过表达式从认证用户名中提取的相应正则表达式捕获组替换match。mongod或者mongos对LDAP服务器执行查询以检索经过身份验证的用户的LDAP DN。mongod或者只mongos需要一个返回的结果即可使转换成功,mongod或者mongos跳过此转换。"ou=engineering,dc=example,dc=com??one?(user={0})"对于阵列中的每个文档,您必须使用
substitution或ldapQuery。您不能在同一文档中指定两者。执行身份验证或授权,
mongod或mongos按给定顺序逐步遍历阵列中的每个文档时,请根据match过滤器检查身份验证用户名。如果找到匹配项,mongod或mongos应用转换并使用输出来验证用户。mongod或者mongos不检查数组中的剩余文档。如果给定文档与提供的身份验证名称不匹配,或者文档描述的转换失败,
mongod或者mongos继续通过文档列表以查找其他匹配项。如果在任何文档中找不到匹配项,mongod或mongos返回错误。例
以下显示了两个转换文档。第一个文档与任何以字符串结尾的字符串匹配
@ENGINEERING,将后缀之前的任何内容放入正则表达式捕获组中。第二个文档与任何以字符串结尾的字符串匹配@DBA,将后缀之前的任何内容放入正则表达式捕获组中。重要
您必须将数组
userToDNMapping作为字符串传递给它。具有用户名的用户
alice@ENGINEERING.EXAMPLE.COM与第一个文档匹配。正则表达式捕获组{0}对应于字符串alice。结果输出是DN"cn=alice,ou=engineering,dc=example,dc=com"。具有用户名的用户
bob@DBA.EXAMPLE.COM与第二个文档匹配。正则表达式捕获组{0}对应于字符串bob。结果输出是LDAP查询"ou=dba,dc=example,dc=com??one?(user=bob)"。mongod或者mongos对LDAP服务器执行此查询,返回结果"cn=bob,ou=dba,dc=example,dc=com"。如果
userToDNMapping未设置,mongod或mongos在尝试针对LDAP服务器对用户进行身份验证或授权时不对用户名应用任何转换。可以在运行
mongod或mongos使用setParameterdatabase命令配置此设置。
security.ldap.authz.queryTemplate-
输入:string
3.4版中的新功能:仅适用于MongoDB Enterprise。
格式化的相对LDAP查询URL,符合RFC4515和RFC4516,
mongod用于获取经过身份验证的用户所属的LDAP组。该查询与指定的主机相关security.ldap.servers。使用
{USER}URL中的占位符替换经过身份验证的用户名,或者如果userToDNMapping指定了a,则使用转换后的用户名。构造查询URL时,请确保LDAP参数的顺序遵循RFC4516:
如果您的查询包含属性,则
mongod假定查询检索此实体所属的DN。如果查询不包含属性,则
mongod假定查询检索用户所属的所有实体。对于查询返回的每个LDAP DN,
mongod为授权用户分配admin数据库上的相应角色。如果admin数据库上的角色 与DN完全匹配,则mongod授予用户分配给该角色的角色和权限。有关db.createRole()创建角色的更多信息,请参阅 方法。例
此LDAP查询返回LDAP用户对象
memberOf属性中列出的所有组 。您的LDAP配置可能不包含
memberOf作为用户架构一部分的属性,可能拥有用于报告组成员身份的不同属性,或者可能不会通过属性跟踪组成员身份。根据您自己的唯一LDAP配置配置查询。如果未设置,
mongod则无法授权用户使用LDAP。可以
mongod使用setParameterdatabase命令在运行时配置此设置。
setParameter选项
setParameter-
设置MongoDB服务器参数中描述的MongoDB参数或 参数
要在YAML配置文件中设置参数,请使用以下格式:
例如,要
enableLocalhostAuthBypass在配置文件中指定:
LDAP参数
setParameter.ldapUserCacheInvalidationInterval-
输入:int
默认值:30
与使用LDAP授权的服务器
mongod或mongos服务器一起使用。外部用户缓存刷新之间的间隔(以秒为单位)
mongod或mongos等待。在外部用户缓存之后mongod,mongos刷新下一个LDAP授权用户的操作,MongoDB从LDAP服务器重新获取授权数据。增加指定的值会增加时间量,
mongod或者mongosLDAP服务器可能不同步,但会减少LDAP服务器上的负载。相反,减小指定的值会减少时间,mongod或者mongos在增加LDAP服务器上的负载时LDAP服务器可能会不同步。
storage选项
storage.dbPath-
输入:string
默认值:
/data/db在Linux和macOS上,\data\db在Windows上mongod实例存储其数据的目录。如果使用程序包管理系统安装了MongoDB,请检查
/etc/mongod.conf程序包提供的 文件以查看指定的目录。该
storage.dbPath设置仅适用于mongod。Linux软件包init脚本不希望
storage.dbPath更改默认值。如果使用Linux软件包并进行更改storage.dbPath,则必须使用自己的init脚本并禁用内置脚本。
storage.indexBuildRetry-
输入:boolean
默认值:True
指定是否
mongod在下次启动时重建不完整的索引。这适用于在mongod索引构建过程中关闭或停止后重新启动的情况。在这种情况下,mongod始终删除任何不完整的索引,然后,默认情况下,尝试重建它们。要停止mongod重建索引,请将此选项设置为false。在版本4.0中更改:该设置
storage.indexBuildRetry不能与replication.replSetName。一起使用 。该
storage.indexBuildRetry设置仅适用于mongod。
storage.repairPath-
输入:string
默认值:
_tmp_repairDatabase_<num>下的目录dbPath。仅适用于MMAPv1存储引擎。
MongoDB在
--repair操作期间将使用的工作目录 。当--repair完成后,storage.repairPath目录是空的,并且dbPath包含了修复的文件。该
storage.repairPath设置仅适用于mongod。
storage.journal.enabled-
输入:boolean
默认值:
true在64位系统上,false在32位系统上启用或禁用持久性日志以确保数据文件保持有效和可恢复。此选项仅在您指定
storage.dbPath设置时适用 。mongod默认情况下启用日记功能。该
storage.journal.enabled设置仅适用于mongod。从MongoDB 4.0开始,您无法指定
--nojournal选项或使用WiredTiger存储引擎的副本集成员。storage.journal.enabled: false
storage.journal.commitIntervalMs-
类型:数字
默认值:100或30
版本3.2中的新功能。
mongod进程允许在日志操作之间的最长时间(以毫秒为单位)。值的范围为1到500毫秒。较低的值会增加日志的持久性,但会牺牲磁盘性能。默认日记帐提交间隔为100毫秒。在MMAPv1上,如果日志与数据文件位于不同的块设备(例如,物理卷,RAID设备或LVM卷)上,则默认日志提交间隔为30毫秒。另外,在MMAPv1上,当一个写操作处于
j:true挂起状态时,mongod将减少commitIntervalMs到设定值的三分之一。在WiredTiger上,默认日志提交间隔为100毫秒。此外,写入
j:true将导致日志的立即同步。
storage.directoryPerDB-
输入:boolean
默认值:False
当
true,MongoDB使用单独的目录来存储每个数据库的数据。目录位于storage.dbPath目录下,每个子目录名称对应于数据库名称。在3.0版中更改:要更改
storage.directoryPerDB现有部署的选项,必须mongod使用新storage.directoryPerDB值和新数据目录(storage.dbPath值)重新启动实例,然后重新填充数据。- 对于独立实例,您可以
mongodump在现有实例上使用,停止实例,使用新storage.directoryPerDB值和新数据目录重新启动 ,并用于mongorestore填充新数据目录。 - 对于副本集,您可以通过停止辅助成员,使用新
storage.directoryPerDB值和 新数据目录重新启动来以滚动方式进行更新,并使用初始同步来填充新数据目录。要更新所有成员,请先从辅助成员开始。然后逐步降低主要成员,并更新降低成员。
该
storage.directoryPerDB设置仅适用于mongod。 - 对于独立实例,您可以
storage.syncPeriodSecs-
类型:数字
默认值:60
MongoDB通过fsync操作将数据刷新到数据文件之前可以经过的时间。
不要在生产系统上设置此值。在几乎所有情况下,您都应该使用默认设置。
警告
如果设置
storage.syncPeriodSecs为0,MongoDB将不会将内存映射文件同步到磁盘。该
mongod过程非常快速地将数据写入日志并且懒惰地写入数据文件。storage.syncPeriodSecs对没有任何影响journal的文件或日志,但是如果storage.syncPeriodSecs设置为0杂志最终将消耗所有可用的磁盘空间。如果设置storage.syncPeriodSecs以0用于测试目的,你也应该设置--nojournal到true。该
serverStatus命令通过backgroundFlushing字段报告后台刷新线程的状态。该
storage.syncPeriodSecs设置仅适用于mongod。
storage.engine-
默认值:
wiredTiger版本4.0中已更改: MongoDB不推荐使用MMAPv1存储引擎。
mongod数据库的存储引擎。可用值包括:值 描述 wiredTiger指定WiredTiger存储引擎。 inMemory指定内存存储引擎。
3.2版中的新功能:仅适用于MongoDB Enterprise。
mmapv1(在MongoDB 4.0中不推荐使用)指定MMAPv1存储引擎。 如果您尝试启动
mongod一个storage.dbPath包含通过比指定的其他存储引擎产生的数据文件storage.engine,mongod将拒绝启动。
storage.mmapv1选项
弃用
MongoDB 4.0弃用了MMAPv1存储引擎,并将在以后的版本中删除MMAPv1。要将MMAPv1存储引擎部署更改为 WiredTiger存储引擎,请参阅:
storage.mmapv1.preallocDataFiles-
输入:boolean
默认值:True
仅适用于MMAPv1存储引擎。
启用或禁用数据文件的预分配。默认情况下,MongoDB不预先分配数据文件。
storage.mmapv1.nsSize-
类型:整数
默认值:16
仅适用于MMAPv1存储引擎。
命名空间文件的默认大小,即以文件结尾的文件
.ns。每个集合和索引都算作命名空间。使用此设置可控制新创建的命名空间文件的大小。此选项对现有文件没有影响。命名空间文件的最大大小为2047兆字节。默认值16兆字节提供大约24,000个命名空间。
该
storage.mmapv1.nsSize设置仅适用于mongod。
storage.mmapv1.quota.enforced-
类型:布尔值
默认值:false
仅适用于MMAPv1存储引擎。
启用或禁用每个数据库可以拥有的数字数据文件的最大限制。使用该
storage.mmapv1.quota.enforced选项运行时,MongoDB每个数据库最多包含8个数据文件。使用调整配额storage.quota.maxFilesPerDB。
storage.mmapv1.quota.maxFilesPerDB-
类型:整数
默认值:8
仅适用于MMAPv1存储引擎。
每个数据库的数据文件数限制。
storage.mmapv1.quota.maxFilesPerDB选项要求您设置storage.quota.enforced。
storage.mmapv1.smallFiles-
输入:boolean
默认值:False
仅适用于MMAPv1存储引擎。
当
true,MongoDB使用较小的默认文件大小。该storage.mmapv1.smallFiles选项减少了数据文件的初始大小,并将最大大小限制为512 MB。storage.mmapv1.smallFiles还将每个日志 文件的大小从1千兆字节减少到128兆字节。使用storage.mmapv1.smallFiles,如果你有大量的数据库,每个保存数据少量。该
storage.mmapv1.smallFiles选项可能导致mongod实例创建大量文件,这可能会影响较大数据库的性能。该
storage.mmapv1.smallFiles设置仅适用于mongod。
storage.mmapv1.journal.debugFlags-
类型:整数
仅适用于MMAPv1存储引擎。
提供测试功能。不适用于一般用途,在系统异常关闭的情况下会影响数据文件的完整性。
storage.mmapv1.journal.commitIntervalMs-
类型:数字
从版本3.2开始不推荐使用: MongoDB 3.2弃用了该
storage.mmapv1.journal.commitIntervalMs设置。请storage.journal.commitIntervalMs改用。不推荐使用的设置充当新
storage.journal.commitIntervalMS设置的别名, 并适用于MMAPv1或WiredTiger存储引擎。
storage.wiredTiger选项
storage.wiredTiger.engineConfig.cacheSizeGB-
输入:float
WiredTiger将用于所有数据的内部缓存的最大大小。
在版本3.4中更改:值的范围可以从256MB到10TB,并且可以是浮点数。此外,默认值也已更改。
从3.4开始,WiredTiger内部缓存默认使用较大的一个:
- 50%(RAM - 1 GB),或
- 256 MB。
例如,在总共4GB RAM的系统上,WiredTiger缓存将使用1.5GB的RAM()。相反,总共1.25 GB RAM的系统将为WiredTiger缓存分配256 MB,因为这超过总RAM的一半减去1千兆字节()。
0.5 * (4 GB -1 GB) = 1.5 GB0.5 * (1.25 GB - 1 GB) = 128 MB < 256 MB避免将WiredTiger内部缓存大小增加到其默认值以上。
使用WiredTiger,MongoDB同时使用WiredTiger内部缓存和文件系统缓存。
通过文件系统缓存,MongoDB自动使用WiredTiger缓存或其他进程未使用的所有可用内存。
注意
该
storage.wiredTiger.engineConfig.cacheSizeGB限制WiredTiger内部高速缓存的大小。操作系统将使用可用的空闲内存用于文件系统缓存,这允许压缩的MongoDB数据文件保留在内存中。此外,操作系统将使用任何空闲RAM来缓冲文件系统块和文件系统缓存。为了容纳额外的RAM使用者,您可能必须减少WiredTiger内部缓存大小。
默认的WiredTiger内部缓存大小值假定
mongod每台计算机有一个实例。如果单个计算机包含多个MongoDB实例,则应减少该设置以适应其他mongod实例。如果您
mongod在无法访问系统中所有可用RAM 的容器(例如lxc,cgroupsDocker等)中运行,则必须设置为小于容器中可用RAM量的值。确切的数量取决于容器中运行的其他进程。storage.wiredTiger.engineConfig.cacheSizeGB
storage.wiredTiger.engineConfig.journalCompressor-
默认值:snappy
版本3.0.0中的新功能。
用于压缩WiredTiger日志数据的压缩类型。
可用的压缩机有:
storage.wiredTiger.engineConfig.directoryForIndexes-
输入:boolean
默认值:false
版本3.0.0中的新功能。
当
storage.wiredTiger.engineConfig.directoryForIndexes是true,mongod存储在数据(即下单独子目录索引和集合storage.dbPath)目录。具体而言,mongod将索引存储在已命名的子目录中index,并将集合数据存储在名为的子目录中collection。通过使用符号链接,您可以为索引指定其他位置。具体来说,当
mongod实例未 运行时,将index子目录移动到目标,并index在数据目录下创建一个指向新目标的符号链接。
storage.wiredTiger.collectionConfig.blockCompressor-
默认值:snappy
版本3.0.0中的新功能。
用于压缩集合数据的默认压缩类型。您可以在创建集合时基于每个集合覆盖此设置。
可用的压缩机有:
storage.wiredTiger.collectionConfig.blockCompressor影响创建的所有集合。如果更改storage.wiredTiger.collectionConfig.blockCompressor现有MongoDB部署的值,则所有新集合都将使用指定的压缩器。现有集合将继续使用创建时指定的压缩器,或当时的默认压缩器。
storage.wiredTiger.indexConfig.prefixCompression-
默认值:true
版本3.0.0中的新功能。
启用或禁用索引数据的前缀压缩。
指定
true为索引数据storage.wiredTiger.indexConfig.prefixCompression启用前缀压缩,或false禁用索引数据的前缀压缩。该
storage.wiredTiger.indexConfig.prefixCompression设置会影响所有创建的索引。如果更改storage.wiredTiger.indexConfig.prefixCompression现有MongoDB部署的值,则所有新索引都将使用前缀压缩。现有索引不受影响。
operationProfiling选项
operationProfiling.mode-
输入:string
默认值:
off指定应分析哪些操作。以下分析器级别可用:
水平 描述 off分析器已关闭,不会收集任何数据。这是默认的探查器级别。 slowOp探查器收集的数据用于超过值的操作 slowms。all分析器收集所有操作的数据。
operationProfiling.slowOpThresholdMs-
类型:整数
默认值:100
该慢的操作时间阈值,单位为毫秒。运行时间超过此阈值的操作被认为很慢。
当
logLevel设置0为时,MongoDB 以确定的速率记录对诊断日志的慢速操作slowOpSampleRate。在更高的logLevel设置下,无论延迟如何,所有操作都会显示在诊断日志中。版本4.0中已更改:该
slowOpThresholdMs设置可用于mongod和mongos。在早期版本中,slowOpThresholdMs仅适用于mongod。
operationProfiling.slowOpSampleRate-
类型:双
默认值:1.0
应分析或记录的慢速操作部分。
operationProfiling.slowOpSampleRate接受0到1之间的值,包括0和1。版本4.0中已更改:该
slowOpSampleRate设置可用于mongod和mongos。在早期版本中,slowOpSampleRate仅适用于mongod。
replication选项
replication.oplogSizeMB-
类型:整数
复制操作日志的最大大小(以兆字节为单位)(即oplog)。
注意
从MongoDB 4.0开始,oplog可以超过其配置的大小限制,以避免删除。
majority commit point默认情况下,该
mongod进程基于可用的最大空间量创建oplog。对于64位系统,oplog通常占可用磁盘空间的5%。一旦
mongod第一次创建了oplog,更改replication.oplogSizeMB选项将不会影响oplog的大小。要更改正在运行的副本集成员的oplog大小,请使用
replSetResizeOplog管理命令。replSetResizeOplog使您可以动态调整oplog的大小,而无需重新启动该mongod过程。有关更多信息,请参阅Oplog大小。
该
replication.oplogSizeMB设置仅适用于mongod。
replication.replSetName-
输入:string
作为其
mongod一部分的副本集的名称。副本集中的所有主机必须具有相同的集名称。如果您的应用程序连接到多个副本集,则每个集应具有不同的名称。某些驱动程序按副本集名称对副本集进行连接。
该
replication.replSetName设置仅适用于mongod。从MongoDB 4.0开始:
- 该设置
replication.replSetName不能与之一起使用storage.indexBuildRetry。 - 对于WiredTiger存储引擎, 不能与之配合使用 。
storage.journal.enabled:falsereplication.replSetName
- 该设置
replication.secondaryIndexPrefetch-
输入:string
默认值:全部
存储引擎特定功能
replication.secondaryIndexPrefetch仅适用于mmapv1存储引擎。在从oplog应用操作之前,副本集的辅助成员加载到内存中的索引。默认情况下,在从oplog应用操作之前,辅助节点将与操作相关的所有索引加载到内存中。
将此设置设置为以下之一:
值 描述 none辅助节点不会将索引加载到内存中。 all辅助节点加载与操作相关的所有索引。 _id_only辅助节点不会在已存在的 _id索引之外的内存中加载其他索引。
replication.enableMajorityReadConcern-
默认值:True
从MongoDB 3.6开始,MongoDB
"majority"默认支持 读取问题。对于MongoDB 4.0.3+和3.6.1+,您可以禁用读取问题,
"majority"以防止存储缓存压力使用三成员主辅仲裁器(PSA)体系结构固定部署。有关禁用读取问题的详细信息"majority",请参阅 禁用读取关注点。要禁用,请设置
replication.enableMajorityReadConcern为false。重要
通常,
"majority"除非必要,否则请避免禁用读取问题。但是,如果您有一个具有主要辅助仲裁(PSA)体系结构的三成员副本集或具有三个成员PSA分片的分片集群,请禁用以防止存储缓存压力导致部署无法运行。禁用
"majority"读取问题会禁用对更改流的支持。禁用
"majority"不会影响 多文档事务 ; 即,即使读取关注“多数”被禁用,您也可以为多文档事务指定读取关注“多数”。replication.enableMajorityReadConcern对MongoDB版本没有影响:4.0.0,4.0.1,4.0.2,3.6.0。
auditLog选项
注意
auditLog.destination-
输入:string
版本2.6中的新功能。
设置后,
auditLog.destination启用审核并指定所有审核事件的位置mongos或mongod发送。auditLog.destination可以具有以下值之一:值 描述 syslog以JSON格式将审计事件输出到syslog。在Windows上不可用。审核消息的系统日志严重性级别为,
info并且设施级别为user。系统日志消息限制可能导致审计消息被截断。审计系统既不会检测到截断,也不会发生错误。
console将审核事件输出为 stdoutJSON格式。file将审计事件输出到以指定 auditLog.path格式指定 的文件auditLog.format。注意
auditLog.format-
输入:string
版本2.6中的新功能。
输出文件的格式审核,如果
destination是file。该auditLog.format选项可以具有以下值之一:值 描述 JSON将JSON格式的审核事件输出到指定的文件中 auditLog.path。BSON将BSON二进制格式的审计事件输出到指定的文件中 auditLog.path。将审核事件打印为JSON格式的文件会降低服务器性能,而不是以BSON格式打印到文件。
注意
auditLog.path-
输入:string
版本2.6中的新功能。
输出文件的审核,如果
destination有值file。该auditLog.path选项可以采用完整路径名或相对路径名。注意
snmp选项
注意
由于SERVER-29352,macOS上的MongoDB Enterprise 不支持SNMP 。
snmp.subagent-
输入:boolean
如果
snmp.subagent是true,SNMP运行的子代理。有关更多信息,请参阅 在Linux上使用SNMP监控MongoDB。该
snmp.subagent设置仅适用于mongod。
snmp.master-
输入:boolean
当
snmp.master是true,SNMP运行作为一个主站。有关更多信息,请参阅 在Linux上使用SNMP监控MongoDB。该
snmp.master设置仅适用于mongod。
mongos-only选项
在版本3.4中更改: MongoDB 3.4删除sharding.chunkSize和 sharding.autoSplit设置。
replication.localPingThresholdMs-
类型:整数
默认值:15
mongos用于确定哪些辅助副本集成员从客户端传递读取操作的ping时间(以毫秒为单位)。默认值15对应于所有客户端驱动程序中的默认值。当
mongos收到允许读取辅助成员的请求时,mongos意愿:-
找到具有最低ping时间的集合的成员。
-
构造一个副本集成员列表,该列表位于该集合中最近的合适成员的15毫秒的ping时间内。
如果为该
replication.localPingThresholdMs选项指定值,mongos则将构造在此值允许的延迟范围内的副本成员列表。 -
从此列表中随机选择要读取的成员。
用于成员的
replication.localPingThresholdMs设置比较的ping时间是最近ping时间的移动平均值,最多每10秒计算一次。因此,某些查询可能会达到超过阈值的成员,直到mongos重新计算平均值。 -
Windows服务选项
processManagement.windowsService.serviceName-
输入:string
默认值:MongoDB
的服务名称
mongos或mongod作为Windows服务运行时。将此名称与和 操作一起使用。net start<name>net stop <name>您必须
processManagement.windowsService.serviceName与--install或--remove选项一起使用。
processManagement.windowsService.displayName-
输入:string
默认值:MongoDB
在服务管理应用程序上为MongoDB列出的名称。
processManagement.windowsService.description-
输入:string
默认值:MongoDB服务器
您必须
processManagement.windowsService.description与--install选项一起使用 。对于包含空格的描述,必须将描述括在引号中。
processManagement.windowsService.serviceUser-
输入:string
的
mongos或mongod在某一用户的上下文中的服务。此用户必须具有“作为服务登录”权限。您必须
processManagement.windowsService.serviceUser与--install选项一起使用 。
processManagement.windowsService.servicePassword-
输入:string
该密码
<user>用于mongos或mongod与运行时processManagement.windowsService.serviceUser选项。您必须
processManagement.windowsService.servicePassword与--install选项一起使用 。配置文件设置和命令行选项映射¶
下表映射了配置文件设置以及相关
mongod和mongos命令行选项。
浙公网安备 33010602011771号