On this page
配置文件选项
在本页面
下一页描述了 MongoDB 3.6 中可用的配置选项。有关其他版本的 MongoDB 的配置文件选项,请参阅《 MongoDB 手册》的相应版本。
Configuration File
您可以在启动时使用配置文件配置mongod和mongos实例。配置文件包含等效于mongod和mongos命令行选项的设置。
使用配置文件使 Managementmongod和mongos选项更加容易,尤其是对于大规模部署而言。您还可以在配置文件中添加 Comments,以解释服务器的设置。
在 Linux 上,使用程序包 Management 器安装 MongoDB 时会包含默认的
/etc/mongod.conf
配置文件。在 macOS 上,从 MongoDB 的官方 Homebrew 水龙头安装时,会包含默认的
/usr/local/etc/mongod.conf
配置文件。
File Format
在 2.6 版中进行了更改:MongoDB 2.6 引入了基于 YAML 的配置文件格式。 2 .4 配置文件格式保留用于向后兼容。
以下 samples 配置文件包含一些mongod设置,您可以将它们适应本地配置:
Note
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
...
官方 MongoDB 软件包中包含的 Linux 软件包初始化脚本取决于systemLog.path,storage.dbPath和processManagement.fork的特定值。如果您在默认配置文件中修改这些设置,则mongod可能无法启动。
使用配置文件
要使用配置文件启动mongod或mongos,请使用--config
选项或-f
选项指定配置文件,如以下示例所示:
以下示例使用mongod --config和mongos --config
来指定配置文件:
mongod --config /etc/mongod.conf
mongos --config /etc/mongos.conf
您还可以使用-f
别名来指定配置文件,如下所示:
mongod -f /etc/mongod.conf
mongos -f /etc/mongos.conf
如果您是从软件包安装的,并且已经使用系统的init script启动了 MongoDB,那么您已经在使用配置文件。
Core Options
systemLog Options
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>
# COMMENT additional component verbosity settings omitted for brevity
systemLog.
verbosity
- 类型:整数
默认:0
在版本 3.0 中更改。
components的默认log message详细级别。详细程度决定了 MongoDB 输出的信息和调试条消息的数量。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。
要对命名组件使用不同的详细级别,请使用组件的详细设置。例如,使用systemLog.component.accessControl.verbosity专门为ACCESS组件设置详细级别。
有关特定组件详细程度的设置,请参见systemLog.component.<name>.verbosity
设置。
有关设置日志详细级别的各种方法,请参见配置日志详细级别。
systemLog.
quiet
- 类型:布尔值
在安静模式下运行mongos或mongod,以尝试限制输出量。
不建议在生产系统中使用systemLog.quiet,因为它可能会使特定连接期间的跟踪问题更加困难。
systemLog.
traceAllExceptions
- 类型:布尔值
打印详细信息以进行调试。用于与支持相关的故障排除的其他日志记录。
systemLog.
syslogFacility
- 类型:字符串
默认:用户
将消息记录到 syslog 时使用的工具级别。os 的 syslog 实现必须支持您指定的值。要使用此选项,必须将systemLog.destination设置为syslog
。
systemLog.
path
- 类型:字符串
mongod或mongos应该将所有诊断日志记录信息发送到的日志文件的路径,而不是标准输出或主机的syslog。 MongoDB 在指定路径创建日志文件。
Linux 软件包初始化脚本不希望systemLog.path更改为默认值。如果您使用 Linux 软件包并更改systemLog.path,则必须使用自己的初始化脚本并禁用内置脚本。
systemLog.
logAppend
- 类型:布尔值
默认:false
当true
,__1 或mongod重新启动mongos或mongod实例时,会将新条目追加到现有日志文件的末尾。如果没有此选项,mongod将备份现有日志并创建一个新文件。
systemLog.
logRotate
- 类型:字符串
默认:重命名
3.0.0 版中的新功能。
logRotate命令的行为。指定rename
或reopen
:
rename
重命名日志文件。reopen
按照典型的 Linux/Unix 日志轮换行为关闭并重新打开日志文件。使用 Linux/Unix logrotateUtil 时,请使用reopen
以避免日志丢失。
如果指定reopen
,则还必须将systemLog.logAppend设置为true
。
systemLog.
destination
- 类型:字符串
MongoDB 将所有日志输出发送到的目标。指定file
或syslog
。如果指定file
,则还必须指定systemLog.path。
如果您未指定systemLog.destination,则 MongoDB 将所有日志输出发送到标准输出。
Warning
syslog
守护程序在记录消息时生成时间戳,而不是在 MongoDB 发布消息时生成时间戳。这会导致误导日志条目的时间戳,尤其是在系统负载沉重的情况下。我们建议对生产系统使用file
选项,以确保准确的时间戳。
systemLog.
timeStampFormat
- 类型:字符串
默认:iso8601-local
日志消息中时间戳的时间格式。指定以下值之一:
Value | Description |
---|---|
ctime |
将时间戳显示为Wed Dec 31 18:17:54.811 。 |
iso8601-utc |
以世界标准时间(UTC)以 ISO-8601 格式显示时间戳。例如,对于大纪元开始时的纽约:1970-01-01T00:00:00.000Z |
iso8601-local |
以 ISO-8601 格式显示本地时间的时间戳。例如,对于大纪元开始时的纽约:1969-12-31T19:00:00.000-0500 |
systemLog.component Options
systemLog:
component:
accessControl:
verbosity: <int>
command:
verbosity: <int>
# COMMENT some component verbosity settings omitted for brevity
replication:
verbosity: <int>
heartbeats:
verbosity: <int>
rollback:
verbosity: <int>
storage:
verbosity: <int>
journal:
verbosity: <int>
write:
verbosity: <int>
systemLog.component.accessControl.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与访问控制有关的组件的日志消息详细级别。请参阅ACCESS组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.command.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与命令相关的组件的日志消息详细级别。请参阅COMMAND组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.control.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与控制操作有关的组件的日志消息详细级别。请参阅CONTROL组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.ftdc.
verbosity
- 类型:整数
默认:0
3.2 版中的新功能。
与诊断数据收集操作相关的组件的日志消息详细级别。请参阅FTDC组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.geo.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与地理空间解析操作相关的组件的日志消息详细级别。请参阅GEO组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.index.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与索引操作相关的组件的日志消息详细级别。请参阅INDEX组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.network.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与联网操作相关的组件的日志消息详细级别。请参阅NETWORK组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.query.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与查询操作相关的组件的日志消息详细级别。请参阅QUERY组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.replication.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与复制相关的组件的日志消息详细级别。请参阅REPL组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.replication.heartbeats.
verbosity
- 类型:整数
默认:0
3.6 版的新功能。
与心跳相关的组件的日志消息详细级别。请参阅REPL_HB组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.replication.rollback.
verbosity
- 类型:整数
默认:0
3.6 版的新功能。
与回滚相关的组件的日志消息详细级别。请参阅ROLLBACK组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.sharding.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与分片有关的组件的日志消息详细级别。请参阅SHARDING组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.storage.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与存储相关的组件的日志消息详细级别。请参阅STORAGE组件。
如果未设置systemLog.component.storage.journal.verbosity,则systemLog.component.storage.verbosity级别也适用于日记组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.storage.journal.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与日记相关的组件的日志消息详细级别。请参阅JOURNAL组件。
如果未设置systemLog.component.storage.journal.verbosity,则日志记录组件的详细级别与父存储组件相同:即systemLog.component.storage.verbosity级别(如果已设置)或默认详细级别。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。systemLog.component.write.
verbosity
- 类型:整数
默认:0
3.0 版中的新功能。
与写操作有关的组件的日志消息详细级别。请参阅WRITE组件。
详细级别的范围是0
到5
:
0
是 MongoDB 的默认日志详细级别,其中包含Informational条消息。1
至5
增加了详细程度,以包含Debug条消息。
processManagement Options
processManagement:
fork: <boolean>
pidFilePath: <string>
timeZoneInfo: <string>
processManagement.
fork
- 类型:布尔值
默认:false
启用在后台运行mongos或mongod进程的daemon模式。默认情况下mongos或mongod不作为守护程序运行:通常,您将mongos或mongod作为守护程序运行,可以通过使用processManagement.fork或通过处理守护进程的控制进程(例如upstart
和systemd
)来运行。
Windows 上不支持processManagement.fork选项。
Linux 软件包初始化脚本不希望processManagement.fork更改为默认值。如果您使用 Linux 软件包并更改processManagement.fork,则必须使用自己的初始化脚本并禁用内置脚本。
processManagement.
pidFilePath
- 类型:字符串
指定用于存储mongos或mongod进程的进程 ID(PID)的文件位置。运行mongod
或mongos
进程的用户必须能够写入此路径。如果未指定processManagement.pidFilePath选项,则该过程不会创建 PID 文件。此选项通常仅与processManagement.fork设置结合使用。
Linux
在 Linux 上,PID 文件 Management 通常由发行版的 init 系统负责:通常是/etc/init.d
目录中的服务文件,或者是已systemctl
注册的 systemd 单位文件。如果您未使用这些初始化系统之一,则仅使用processManagement.pidFilePath选项。有关更多信息,请参见适用于您的 os 的Installation Guide。
macOS
在 macOS 上,PID 文件 Management 通常由brew
处理。如果您不在 macOS 系统上使用brew
,请仅使用processManagement.pidFilePath选项。有关更多信息,请参见适用于您的 os 的Installation Guide。
processManagement.
timeZoneInfo
- 类型:字符串
加载时区数据库的完整路径。如果未提供此选项,则 MongoDB 将使用其内置时区数据库。
Linux 和 macOS 软件包随附的配置文件默认将时区数据库路径设置为/usr/share/zoneinfo
。
内置时区数据库是Olson/IANA 时区数据库的副本。它随 MongoDB 版本一起更新,但是时区数据库的发布周期与 MongoDB 的发布周期不同。可以从https://downloads.mongodb.org/olson_tz_db/timezonedb-latest.zip下载时区数据库的最新版本的副本。
net Options
net:
port: <int>
bindIp: <string>
bindIpAll: <boolean>
maxIncomingConnections: <int>
wireObjectCheck: <boolean>
ipv6: <boolean>
unixDomainSocket:
enabled: <boolean>
pathPrefix: <string>
filePermissions: <int>
ssl:
sslOnNormalPorts: <boolean> # deprecated since 2.6
mode: <string>
PEMKeyFile: <string>
PEMKeyPassword: <string>
clusterFile: <string>
clusterPassword: <string>
CAFile: <string>
clusterCAFile: <string>
CRLFile: <string>
allowConnectionsWithoutCertificates: <boolean>
allowInvalidCertificates: <boolean>
allowInvalidHostnames: <boolean>
disabledProtocols: <string>
FIPSMode: <boolean>
compression:
compressors: <string>
transportLayer: <string>
serviceExecutor: <string>
net.
port
- 类型:整数
Default :
MongoDB 实例在其上侦听 Client 端连接的 TCP 端口。
net.
bindIp
- 类型:字符串
默认:localhost
Note
从 MongoDB 3.6 开始,默认情况下mongos或mongod绑定到 localhost(127.0.0.1
)。参见默认绑定到 localhost。
mongos或mongod应在其上侦听 Client 端连接的 IP 地址和/或完整的 Unix 域套接字路径。您可以将mongos或mongod附加到任何接口。要绑定到多个地址,请 Importing 一个用逗号分隔的值的列表。
Example
localhost,/tmp/mongod.sock
您可以指定 IPv4 和 IPv6 地址,也可以指定解析为 IPv4 或 IPv6 地址的主机名。
Example
localhost, 2001:0DB8:e132:ba26:0d5c:2774:e7f9:d513
Note
如果指定 IPv6 地址或解析为 IPv6 地址的主机名net.bindIp,则必须以net.ipv6:是开头mongos或mongod以启用 IPv6 支持。将 IPv6 地址指定为net.bindIp不会启用 IPv6 支持。
如果指定链接本地 IPv6 地址(fe80::/10
),则必须将zone index附加到该地址(即fe80::<address>%<adapter-name>
)。
Example
localhost,fe80::a00:27ff:fee0:1fcf%enp0s3
Tip
Warning
绑定到非 localhost(例如可公开访问)的 IP 地址之前,请确保已保护群集免受未经授权的访问。有关安全建议的完整列表,请参见Security Checklist。至少考虑enabling authentication和加强网络基础设施。
要绑定到所有 IPv4 地址,请 Importing0.0.0.0
。
要绑定到所有 IPv4 和 IPv6 地址,请 Importing0.0.0.0,::
,或者使用net.bindIpAll设置。
Note
net.bindIp和net.bindIpAll是互斥的。也就是说,您可以指定一个或另一个,但不能两个都指定。
net.
bindIpAll
- 类型:布尔值
默认:false
3.6 版的新功能。
如果为 true,则mongos或mongod实例绑定到所有 IPv4 地址(即0.0.0.0
)。如果mongos或mongod以net.ipv6:是开头,则net.bindIpAll也会绑定到所有 IPv6 地址(即::
)。
如果以net.ipv6:是开头,则mongos或mongod仅支持 IPv6.仅指定net.bindIpAll不会启用 IPv6 支持。
Warning
绑定到非 localhost(例如可公开访问)的 IP 地址之前,请确保已保护群集免受未经授权的访问。有关安全建议的完整列表,请参见Security Checklist。至少考虑enabling authentication和加强网络基础设施。
或者,将net.bindIp设置为::,0.0.0.0
以绑定到所有 IP 地址。
Note
net.bindIp和net.bindIpAll是互斥的。同时指定这两个选项会导致mongos或mongod引发错误并终止。
net.
maxIncomingConnections
- 类型:整数
默认:65536
mongos或mongod可接受的最大同时连接数。如果此设置高于 os 配置的最大连接跟踪阈值,则该设置无效。
请勿为此选项分配太低的值,否则在正常的应用程序操作过程中会遇到错误。
如果您有一个创建多个连接并允许它们超时而不是关闭它们的 Client 端,这对于mongos尤其有用。
在这种情况下,请将maxIncomingConnections设置为稍高于 Client 端创建的最大连接数或连接池的最大大小的值。
此设置可防止mongos引起各个shards的连接尖峰。这样的尖峰可能会破坏sharded cluster的操作和内存分配。
net.
wireObjectCheck
- 类型:布尔值
默认:true
如果为true
,则mongod或mongos实例将在收到 Client 端后验证来自 Client 端的所有请求,以防止 Client 端将格式错误或无效的 BSON 插入 MongoDB 数据库中。
对于高度嵌套子文档的对象,net.wireObjectCheck对性能的影响很小。
net.
ipv6
- 类型:布尔值
默认:false
将net.ipv6设置为true
以启用 IPv6 支持。 mongos/mongod默认情况下禁用 IPv6 支持。
设置net.ipv6不会不指导mongos/mongod侦听任何本地 IPv6 地址或接口。要将mongos/mongod配置为在 IPv6 接口上侦听,您必须:
为net.bindIp配置一个或多个可解析为 IPv6 地址的 IPv6 地址或主机名, 或
将net.bindIpAll设置为
true
。
net.unixDomainSocket Options
net:
unixDomainSocket:
enabled: <boolean>
pathPrefix: <string>
filePermissions: <int>
net.unixDomainSocket.
enabled
- 类型:布尔值
默认:true
在 UNIX 域套接字上启用或禁用侦听。 net.unixDomainSocket.enabled仅适用于基于 Unix 的系统。
当net.unixDomainSocket.enabled是true
时,mongos或mongod在 UNIX 套接字上侦听。
除非满足以下条件之一,否则mongos或mongod进程始终在 UNIX 套接字上侦听:
设置为
--nounixsocket
。命令行选项优先于配置文件设置。未设置net.bindIp
net.bindIp未指定
127.0.0.1
2.6 版中的新功能:从官方.deb和.rpm软件包安装的mongos或mongod的bind_ip
配置默认情况下设置为127.0.0.1
。
net.unixDomainSocket.
pathPrefix
- 类型:字符串
默认:/ tmp
UNIX 套接字的路径。 net.unixDomainSocket.pathPrefix仅适用于基于 Unix 的系统。
如果此选项没有值,则mongos或mongod进程将创建一个以/tmp
作为前缀的套接字。除非满足以下条件之一,否则 MongoDB 会在 UNIX 套接字上创建并侦听:
设置了
--nounixsocket
未设置net.bindIp
net.bindIp未指定
127.0.0.1
net.unixDomainSocket.
filePermissions
- 类型:整数
默认:0700
设置 UNIX 域套接字文件的权限。
net.unixDomainSocket.filePermissions仅适用于基于 Unix 的系统。
net.http Options
在 3.6 版中进行了更改:MongoDB 3.6 删除了不推荐使用的net.http
选项。自 3.2 版以来,该选项已被弃用。
net.ssl Options
net:
ssl:
sslOnNormalPorts: <boolean> # deprecated since 2.6
mode: <string>
PEMKeyFile: <string>
PEMKeyPassword: <string>
clusterFile: <string>
clusterPassword: <string>
CAFile: <string>
clusterCAFile: <string>
CRLFile: <string>
allowConnectionsWithoutCertificates: <boolean>
allowInvalidCertificates: <boolean>
allowInvalidHostnames: <boolean>
disabledProtocols: <string>
FIPSMode: <boolean>
net.ssl.
sslOnNormalPorts
- 类型:布尔值
自 2.6 版起弃用:改为使用net.ssl.mode: requireSSL
。
对于net.ssl.sslOnNormalPorts,mongos或mongod要求对默认 MongoDB 端口或net.port指定的端口上的所有连接进行 TLS/SSL 加密。默认情况下,禁用net.ssl.sslOnNormalPorts。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
mode
- 类型:字符串
2.6 版的新功能。
启用或禁用用于所有网络连接的 TLS/SSL 或混合 TLS/SSL。 net.ssl.mode设置的参数可以是以下之一:
Value | Description |
---|---|
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
。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
PEMKeyFile
- 类型:字符串
包含 TLS/SSL 证书和密钥的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
启用 TLS/SSL 时,必须指定net.ssl.PEMKeyFile。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
PEMKeyPassword
- 类型:字符串
用于解密证书密钥文件的密码(即PEMKeyFile)。仅当证书密钥文件已加密时,才使用net.ssl.PEMKeyPassword选项。在所有情况下,mongos或mongod都会从所有日志记录和报告输出中删除密码。
在 2.6 版中进行了更改:如果 PEM 文件中的私钥已加密并且您未指定net.ssl.PEMKeyPassword选项,则mongos或mongod将提示您 Importing 密码。参见TLS/SSL 证书密码短语。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
clusterFile
- 类型:字符串
2.6 版的新功能。
.pem
文件,其中包含用于群集或副本集的membership authentication的 x.509 证书密钥文件。
如果net.ssl.clusterFile未为内部群集身份验证指定.pem
文件,则群集将使用PEMKeyFile设置中指定的.pem
文件。
如果使用 x.509 身份验证,则必须指定--sslCAFile
或ssl.CAFile
。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
clusterPassword
- 类型:字符串
2.6 版的新功能。
用于解密由--sslClusterFile
指定的 x.509 证书密钥文件的密码。仅当证书密钥文件已加密时,才使用net.ssl.clusterPassword选项。在所有情况下,mongos或mongod都会从所有日志记录和报告输出中删除密码。
如果 x.509 密钥文件已加密并且您未指定net.ssl.clusterPassword选项,则mongos或mongod将提示您 Importing 密码。参见TLS/SSL 证书密码短语。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
CAFile
- 类型:字符串
包含来自证书颁发机构的根证书链的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
从 3.4 版开始,如果未指定--sslCAFile
或ssl.CAFile
并且未使用 x.509 身份验证,则在连接到启用了 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储。
如果使用 x.509 身份验证,则必须指定--sslCAFile
或ssl.CAFile
。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
clusterCAFile
- 类型:字符串
3.6.9 版中的新功能。
.pem
文件包含来自证书颁发机构的根证书链,用于验证构建连接的 Client 端提供的证书。使用相对或绝对路径指定.pem
文件的文件名。
如果net.ssl.clusterCAFile未指定.pem
文件来验证来自构建连接的 Client 端的证书,则群集将使用net.ssl.CAFile选项中指定的.pem
文件。
net.ssl.clusterCAFile使您可以使用单独的证书颁发机构来验证 TLS 握手的 Client 端到服务器和服务器到 Client 端部分。
要求设置net.ssl.CAFile。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
CRLFile
- 类型:字符串
包含证书吊销列表的.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
allowConnectionsWithoutCertificates
- 类型:布尔值
对于不提供证书的 Client 端,mongos或mongod在构建连接时会绕过 TLS/SSL 证书验证。
但是,对于提供证书的 Client 端,mongos或mongod使用CAFile指定的根证书链执行证书验证,并拒绝具有无效证书的 Client 端。
如果您的混合部署中包含没有或不能向mongos或mongod颁发证书的 Client 端,请使用net.ssl.allowConnectionsWithoutCertificates选项。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
allowInvalidCertificates
- 类型:布尔值
对群集中其他服务器上的 TLS/SSL 证书启用或禁用验证检查,并允许使用无效证书进行连接。
Note
从 MongoDB 3.6.6 开始,如果在使用 x.509 身份验证时指定--sslAllowInvalidCertificates
或ssl.allowInvalidCertificates: true
,则无效的证书仅足以构建 TLS/SSL 连接,而对于身份验证则“不足”。
使用net.ssl.allowInvalidCertificates设置时,MongoDB 会记录有关使用无效证书的警告。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
allowInvalidHostnames
- 类型:布尔值
默认:false
3.0 版中的新功能。
当net.ssl.allowInvalidHostnames为true
时,MongoDB 禁用 TLS/SSL 证书中主机名的验证,如果它们的证书名与指定主机名不匹配,则允许mongod连接到 MongoDB 实例。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
net.ssl.
disabledProtocols
- 类型:字符串
3.0.7 版中的新功能。
防止运行 TLS/SSL 的 MongoDB 服务器接受使用一个或多个特定协议的传入连接。 net.ssl.disabledProtocols识别以下协议:TLS1_0
,TLS1_1
,TLS1_2
,并且从版本 3.6.9 TLS1_3
开始。
指定无法识别的协议将阻止服务器启动。
要指定多个协议,请使用逗号分隔的协议列表。
副本集和分片群集的成员必须至少说一种共同的协议。
See also
net.ssl.
FIPSMode
- 类型:布尔值
为mongos或mongod启用或禁用已安装的 OpenSSL 库的 FIPS 模式。您的系统必须具有符合 FIPS 的 OpenSSL 库,才能使用net.ssl.FIPSMode选项。
Note
兼容 FIPS 的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参见为 FIPS 配置 MongoDB。
net.compression Option
net:
compression:
compressors: <string>
net.compression.
compressors
- 默认:活泼
3.4 版的新功能。
指定用于此mongod或mongos实例与以下对象之间的通信的默认压缩器:
部署的其他成员(如果实例是副本集或分片群集的一部分)
mongoShell
支持
OP_COMPRESSED
消息格式的驱动程序。
MongoDB 支持以下压缩器:
从 3.6 版本开始 ,mongod和mongos默认启用snappy
作为压缩器来启用网络压缩。
要禁用网络压缩,请将值设置为disabled
。
Important
当双方都启用网络压缩时,消息将被压缩。否则,双方之间的消息将不被压缩。
如果指定多个压缩器,则列出压缩器的 Sequences 以及通信启动器都很重要。例如,如果mongo shell 指定以下网络压缩器zlib,snappy
,而mongod指定snappy,zlib
,则mongo shell 和mongod之间的消息将使用zlib
。
如果各方不共享至少一个公共压缩器,则各方之间的消息将不被压缩。例如,如果mongo shell 指定了网络压缩器zlib
,而mongod指定了snappy
,则mongo shell 和mongod之间的消息不会被压缩。
net.
transportLayer
- 类型:字符串
默认:asio
3.6 版的新功能。
mongos或mongod使用的网络实现。要恢复到 3.6 版之前的实现,请将此选项更改为legacy
。
Warning
除非 MongoDB 支持团队要求您更改它,否则请不要更改此设置。
net.
serviceExecutor
- 类型:字符串
默认:同步
3.6 版的新功能。
确定mongos或mongod用于执行 Client 端请求的线程和执行模型。 --serviceExecutor
选项接受以下值之一:
Value | Description |
---|---|
synchronous |
mongos或mongod使用同步网络并在每个连接的基础上 Management 其网络线程池。 MongoDB 的早期版本以这种方式 Management 线程。 |
adaptive |
mongos或mongod使用带有自适应线程池的新实验性异步联网模式,该线程池根据每个请求 Management 线程。当活动连接数多于数据库请求数时,此模式应具有更一致的性能,并使用更少的资源。 |
Important
使用adaptive
要求将net.transportLayer设置为asio
。
|
security Options
security:
keyFile: <string>
clusterAuthMode: <string>
authorization: <string>
transitionToAuth: <boolean>
javascriptEnabled: <boolean>
redactClientLogData: <boolean>
clusterIpSourceWhitelist:
- <string>
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>
validateLDAPServerConfig: <boolean>
security.
keyFile
- 类型:字符串
密钥文件的路径,密钥文件存储sharded cluster或replica set中 MongoDB 实例用来相互认证的共享密钥。 keyFile表示security.authorization。有关更多信息,请参见Internal Authentication。
security.
clusterAuthMode
- 类型:字符串
默认:keyFile
2.6 版的新功能。
用于集群认证的认证方式。如果您使用内部 x.509 身份验证,请在此处指定。此选项可以具有以下值之一:
Value | Description |
---|---|
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
。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
默认:禁用
启用或禁用基于角色的访问控制(RBAC),以控制每个用户对数据库资源和操作的访问。
将此选项设置为以下之一:
Value | Description |
---|---|
enabled |
用户只能访问已为其授予特权的数据库资源和操作。 |
disabled |
用户可以访问任何数据库并执行任何操作。 |
有关更多信息,请参见基于角色的访问控制。
security.authorization设置仅适用于mongod。
security.
transitionToAuth
- 类型:布尔值
默认:false
3.4 版的新增功能:允许mongod或mongos接受并创建与部署中其他mongod和mongos实例之间的经过身份验证和未经身份验证的连接。用于执行副本集或分片群集从无认证配置到internal authentication的滚动过渡。需要指定internal authentication机制,例如security.keyFile。
例如,如果将keyfiles用于internal authentication,则mongod或mongos使用匹配的密钥文件与部署中的任何mongod或mongos创建经过身份验证的连接。如果安全机制不匹配,则mongod或mongos会使用未经身份验证的连接。
与security.transitionToAuth一起运行的mongod或mongos不会强制用户访问控制。用户可以在不进行任何访问控制检查的情况下连接到您的部署,并执行读取,写入和 Management 操作。
Note
运行internal authentication和无 security.transitionToAuth的mongod或mongos要求 Client 端使用用户访问控制进行连接。在重新启动不带security.transitionToAuth的mongod或mongos之前,先使用适当的user更新 Client 端以连接到mongod或mongos。
security.
javascriptEnabled
- 类型:布尔值
默认:true
启用或禁用服务器端 JavaScript 执行。禁用后,您将无法使用执行 JavaScript 代码在服务器端执行的操作,例如$where查询运算符,mapReduce命令和db.collection.mapReduce()方法,group命令和db.collection.group()方法。
security.
redactClientLogData
- 类型:布尔值
3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
运行security.redactClientLogData的mongod或mongos在记录之前会删除伴随给定日志事件的任何消息。这样可以防止mongod或mongos将存储在数据库中的潜在敏感数据写入诊断日志。错误或操作代码,行号和源文件名等元数据仍在日志中可见。
security.redactClientLogData与静态加密和TLS/SSL(传输加密)结合使用可帮助遵守法规要求。
例如,MongoDB 部署可能在一个或多个集合中存储个人身份信息(PII)。 mongod或mongos记录事件,例如与 CRUD 操作,分片元数据等有关的事件。mongod或mongos可能会将 PII 公开为这些记录操作的一部分。与security.redactClientLogData一起运行的mongod或mongos会删除伴随这些事件的所有消息,然后再输出到日志,从而有效地删除了 PII。
由于缺少与日志事件相关的数据,对以security.redactClientLogData运行的mongod或mongos进行诊断可能会更加困难。有关security.redactClientLogData对日志输出的影响的示例,请参见process logging手册页。
在正在运行的mongod或mongos上,将setParameter与redactClientLogData参数一起使用以配置此设置。
security.
clusterIpSourceWhitelist
- 类型:列表
3.6 版的新功能。
IP 地址/ CIDR(无类域间路由)的范围是mongod验证来自副本集其他成员以及mongos实例(如果是分片群集的一部分)的身份验证请求的范围。 mongod验证原始 IP 是否在列表中显式或属于列表中的 CIDR 范围。如果 IP 地址不存在,则服务器不会验证mongod或mongos。
security.clusterIpSourceWhitelist对没有authentication的mongod无效。
security.clusterIpSourceWhitelist要求将每个 IPv4/6 地址或无类域间路由(CIDR)范围指定为 YAML 列表:
security:
clusterIpSourceWhitelist:
- 192.0.2.0/24
- 127.0.0.1
- ::1
Important
确保部署中的security.clusterIpSourceWhitelist包括 IP 地址或 CIDR 范围,其中包括每个副本集成员或mongos的 IP 地址,以确保群集组件之间的正常通信。
密钥 Management 配置选项
security:
enableEncryption: <boolean>
encryptionCipherMode: <string>
encryptionKeyFile: <string>
kmip:
keyIdentifier: <string>
rotateMasterKey: <boolean>
serverName: <string>
port: <string>
clientCertificateFile: <string>
clientCertificatePassword: <string>
serverCAFile: <string>
security.
enableEncryption
- 类型:布尔值
默认:false
版本 3.2 中的新增功能:为 WiredTiger 存储引擎启用加密。您必须设置为true
才能传递加密密钥和配置。
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
security.
encryptionCipherMode
- 类型:字符串
默认:AES256-CBC
3.2 版中的新功能。
用于静态加密的密码模式:
Mode | Description |
---|---|
AES256-CBC |
密码块链接模式下的 256 位高级加密标准 |
AES256-GCM |
Galois /计数器模式下的 256 位高级加密标准 |
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
security.
encryptionKeyFile
- 类型:字符串
3.2 版中的新功能。
通过* KMIP 以外的进程 Management 密钥时,本地密钥文件的路径。仅在通过除 KMIP 以外的其他过程 Management 密钥时设置。如果数据已使用 KMIP 加密,则 MongoDB 将引发错误。
要求security.enableEncryption为true
。
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
security.kmip.
keyIdentifier
- 类型:字符串
3.2 版中的新功能。
KMIP 服务器中现有密钥的唯一 KMIP 标识符。包括将与标识符关联的密钥用作系统密钥。您只能在首次为mongod实例启用加密时使用此设置。要求security.enableEncryption为 true。
如果未指定,MongoDB 将请求 KMIP 服务器创建一个新密钥以用作系统密钥。
如果 KMIP 服务器无法找到具有指定标识符的密钥,或者数据已使用密钥加密,则 MongoDB 将引发错误。
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
security.kmip.
rotateMasterKey
- 类型:布尔值
默认:false
3.2 版中的新功能。
如果为 true,请旋转主密钥并重新加密内部密钥库。
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
See also
security.kmip.
serverName
- 类型:字符串
3.2 版中的新功能。
运行 KMIP 服务器的密钥 Management 解决方案的主机名或 IP 地址。要求security.enableEncryption为 true。
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
security.kmip.
port
- 类型:字符串
默认:5696
3.2 版中的新功能。
KMIP 服务器正在监听的端口号。要求提供security.kmip.serverName。要求security.enableEncryption为 true。
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
security.kmip.
clientCertificateFile
- 类型:字符串
3.2 版中的新功能。
字符串,包含用于向 MongoDB 验证 KMIP 服务器的 Client 端证书的路径。要求提供security.kmip.serverName。
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
security.kmip.
clientCertificatePassword
- 类型:字符串
3.2 版中的新功能。
用来解密 Client 端证书(即security.kmip.clientCertificateFile)的密码,用于向 KMIP 服务器认证 MongoDB。仅当证书已加密时才使用该选项。
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
security.kmip.
serverCAFile
- 类型:字符串
3.2 版中的新功能。
CA 文件的路径。用于验证与 KMIP 服务器的安全 Client 端连接。
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
security.sasl Options
security:
sasl:
hostName: <string>
serviceName: <string>
saslauthdSocketPath: <string>
security.sasl.
hostName
- 类型:字符串
用于配置 SASL 和 Kerberos 身份验证的标准服务器域名。仅对于 SASL 和 Kerberos 的配置,SASL 主机名才覆盖主机名。
要使mongo shell 和其他 MongoDB 工具连接到新的hostName,请参见mongo shell 和其他工具中的gssapiHostName
选项。
security.sasl.
serviceName
- 类型:字符串
使用 SASL 的服务的注册名称。此选项使您可以按实例覆盖Kerberos主体名称的默认Kerberos服务名称部分。如果未指定,则默认值为mongodb
。
MongoDB 仅允许在启动时设置此选项。 setParameter无法更改此设置。
此选项仅在 MongoDB Enterprise 中可用。
Important
确保您的驱动程序支持备用服务名称。要使mongo shell 和其他 MongoDB 工具连接到新的serviceName,请参见gssapiServiceName
选项。
security.sasl.
saslauthdSocketPath
- 类型:字符串
saslauthd
的 UNIX 域套接字文件的路径。
security.ldap Options
security:
ldap:
servers: <string>
bind:
method: <string>
saslMechanisms: <string>
queryUser: <string>
queryPassword: <string>
useOSDefaults: <boolean>
transportSecurity: <string>
timeoutMS: <int>
userToDNMapping: <string>
authz:
queryTemplate: <string>
validateLDAPServerConfig: <boolean>
security.ldap.
servers
- 类型:字符串
3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
mongod或mongos对其进行身份验证的 LDAP 服务器,或确定授权用户对给定数据库执行的操作。如果指定的 LDAP 服务器具有任何复制实例,则可以在逗号分隔的列表中指定每个复制服务器的主机和端口。
如果您的 LDAP 基础结构将 LDAP 目录划分为多个 LDAP 服务器,则将* one * LDAP 服务器或其任何复制实例指定为security.ldap.servers。 MongoDB 支持RFC 4511 4.1.10中定义的以下 LDAP 引用。不要使用security.ldap.servers列出基础结构中的每个 LDAP 服务器。
可以使用setParameter在正在运行的mongod或mongos上配置此设置。
如果未设置,则mongod或mongos不能使用LDAP 认证或授权。
security.ldap.bind.
queryUser
- 类型:字符串
3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
当连接到 LDAP 服务器或在 LDAP 服务器上执行查询时,mongod或mongos绑定的身份。
仅在满足以下任一条件时才需要:
Using LDAP authorization.
使用 LDAP 查询security.ldap.userToDNMapping。
LDAP 服务器禁止匿名绑定
您必须将queryUser与queryPassword结合使用。
如果未设置,则mongod或mongos将不会尝试绑定到 LDAP 服务器。
可以使用setParameter在正在运行的mongod或mongos上配置此设置。
Note
Windows MongoDB 部署可以使用bindWithOSDefaults
而不是queryUser和queryPassword。您不能同时指定queryUser和bindWithOSDefaults
。
security.ldap.bind.
queryPassword
- 类型:字符串
3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
使用queryUser时用于绑定到 LDAP 服务器的密码。您必须将queryPassword与queryUser结合使用。
如果未设置,则mongod或mongos将不会尝试绑定到 LDAP 服务器。
可以使用setParameter在正在运行的mongod或mongos上配置此设置。
Note
Windows MongoDB 部署可以使用bindWithOSDefaults
而不是queryPassword和queryPassword。您不能同时指定queryPassword和bindWithOSDefaults
。
security.ldap.bind.
useOSDefaults
- 类型:布尔值
默认:false
3.4 版中的新增功能:MongoDB Enterprise 中仅适用于 Windows 平台。
连接到 LDAP 服务器时,允许mongod或mongos使用 Windows 登录凭据进行身份验证或绑定。
仅在以下情况下需要:
Using LDAP authorization.
使用 LDAP 查询username transformation。
LDAP 服务器禁止匿名绑定
使用useOSDefaults替换queryUser和queryPassword。
security.ldap.bind.
method
- 类型:字符串
默认:简单
3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
mongod或mongos方法用于对 LDAP 服务器进行身份验证。与queryUser
和queryPassword
一起使用以连接到 LDAP 服务器。
method支持以下值:
如果指定sasl
,则可以使用security.ldap.bind.saslMechanisms配置可用的 SASL 机制。 mongod或mongos默认使用DIGEST-MD5
机制。
security.ldap.bind.
saslMechanisms
- 类型:字符串
默认:DIGEST-MD5
3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
在对 LDAP 服务器进行身份验证时,可以使用逗号分隔的 SASL 机制mongod或mongos列表。 mongod或mongos与 LDAP 服务器必须在至少一种机制上达成共识。 mongod或mongos在运行时动态加载主机上安装的所有 SASL 机制库。
在mongod或mongos主机和远程 LDAP 服务器主机上为选定的 SASL 机制安装并配置适当的库。您的 os 可能默认包括某些 SASL 库。遵循与每个 SASL 机制相关的文档,以获取有关安装和配置的指导。
如果将GSSAPI
SASL 机制与Kerberos Authentication一起使用,请针对mongod或mongos主机验证以下内容:
Linux
-
KRB5_CLIENT_KTNAME
环境变量解析为主机的 Client 端Linux Keytab 文件的名称。有关 Kerberos 环境变量的更多信息,请遵循Kerberos documentation。
-
Client 端密钥表包含一个User Principal,供mongod或mongos在连接到 LDAP 服务器并执行 LDAP 查询时使用。
Windows
- 如果连接到 Active Directory 服务器,则 Windows Kerberos 配置会在用户登录到系统时自动生成Ticket-Granting-Ticket。将useOSDefaults设置为
true
,以允许mongod或mongos在连接到 Active Directory 服务器并执行查询时使用生成的凭据。
- 如果连接到 Active Directory 服务器,则 Windows Kerberos 配置会在用户登录到系统时自动生成Ticket-Granting-Ticket。将useOSDefaults设置为
将method设置为sasl
以使用此选项。
Note
有关 SASL 机制的完整列表,请参见IANA listing。遵循 LDAP 或 Active Directory 服务的文档,以识别与该服务兼容的 SASL 机制。
MongoDB 不是 SASL 机制库的来源,MongoDB 文档也不是用于安装或配置任何给定 SASL 机制的 Authority 来源。有关文档和支持,请遵循 SASL 机制库的供应商或所有者。
有关 SASL 的更多信息,请参考以下资源:
对于 Linux,请参阅Cyrus SASL 文档。
对于 Windows,请参阅Windows SASL 文档。
security.ldap.
transportSecurity
- 类型:字符串
默认:tls
3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
默认情况下,mongod或mongos创建到 LDAP 服务器的 TLS/SSL 安全连接。
对于 Linux 部署,必须在/etc/openldap/ldap.conf
文件中配置适当的 TLS 选项。os 的程序包 Management 器通过libldap
依赖关系在 MongoDB Enterprise 安装中创建此文件。有关更完整的说明,请参见ldap.conf OpenLDAP 文档中的TLS Options
文档。
对于 Windows 部署,必须将 LDAP 服务器 CA 证书添加到 Windows 证书 Management 工具中。该工具的确切名称和功能可能会因 os 版本而异。请参阅您的 Windows 版本的文档,以获取有关证书 Management 的更多信息。
将transportSecurity设置为none
以禁用mongod或mongos与 LDAP 服务器之间的 TLS/SSL。
Warning
将transportSecurity设置为none
会在mongod或mongos与 LDAP 服务器之间传输纯文本信息以及凭据。
security.ldap.
timeoutMS
- 类型:整数
默认:10000
3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
awaitLDAP 服务器响应请求的时间(以mongod或mongos毫秒为单位)。
如果失败的根源是连接超时,则增大timeoutMS的值可以防止 MongoDB 服务器与 LDAP 服务器之间的连接失败。减小timeoutMS的值可减少 MongoDBawaitLDAP 服务器响应的时间。
可以使用setParameter在正在运行的mongod或mongos上配置此设置。
security.ldap.
userToDNMapping
- 类型:字符串
3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
将提供给用于验证的mongod或mongos的用户名 Map 到 LDAP 专有名称(DN)。在以下情况下,您可能需要使用userToDNMapping将用户名转换为 LDAP DN:
通过简单的 LDAP 绑定执行 LDAP 身份验证,其中用户使用不是完整 LDAP DN 的用户名向 MongoDB 进行身份验证。
使用需要 DN 的LDAP 授权查询模板。
使用不同的身份验证机制(例如 x.509,kerberos)将要向 Mongo DB 进行身份验证的 Client 端的用户名转换为完整的 LDAP DN 以进行授权。
userToDNMapping期望用引号括起来的 JSON 字符串表示文档的有序数组。每个文档都包含一个正则表达式match
和用于转换传入用户名的substitution
或ldapQuery
模板。
数组中的每个文档具有以下形式:
{
match: "<regex>"
substitution: "<LDAP DN>" | ldapQuery: "<LDAP Query>"
}
Field | Description | Example |
---|---|---|
match |
ECMAScript 格式的正则表达式(regex)以与提供的用户名匹配。每个括号括起来的部分代表substitution 或ldapQuery 使用的正则表达式捕获组。 |
"(.+)ENGINEERING" "(.+)DBA" |
substitution |
LDAP 专有名称(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以给定的 Sequences 遍历数组中的每个文档,并针对match
过滤器检查身份验证用户名。如果找到匹配项,则mongod或mongos将应用转换并使用输出对用户进行身份验证。 mongod或mongos不检查数组中的其余文档。
如果给定文档与提供的身份验证名称不匹配,或者文档描述的转换失败,则mongod或mongoscontinue 浏览文档列表以查找其他匹配项。如果在任何文档中都找不到匹配项,则mongod或mongos返回错误。
Example
下面显示了两个转换文档。第一个文档与以_结尾的任何字符串匹配,将后缀之前的任何内容放入正则表达式捕获组。第二个文档与以@DBA
结尾的任何字符串匹配,将后缀之前的任何内容放入正则表达式捕获组。
Important
您必须将数组作为字符串传递给userToDNMapping。
"[
{
match: "(.+)@ENGINEERING.EXAMPLE.COM",
substitution: "cn={0},ou=engineering,dc=example,dc=com"
},
{
match: "(.+)@DBA.EXAMPLE.COM",
ldapQuery: "ou=dba,dc=example,dc=com??one?(user={0})"
}
]"
用户名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,则在尝试通过 LDAP 服务器对用户进行身份验证或授权时,mongod或mongos不会对用户名应用任何转换。
可以使用setParameter数据库命令在正在运行的mongod或mongos上配置此设置。
security.ldap.authz.
queryTemplate
- 类型:字符串
3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
mongod执行格式化为符合RFC4515和RFC4516的相对 LDAP 查询 URL,以获取经过身份验证的用户所属的 LDAP 组。该查询相对于security.ldap.servers中指定的一个或多个主机。
使用 URL 中的{USER}
占位符替换经过身份验证的用户名,如果指定了userToDNMapping,则使用转换后的用户名。
构造查询 URL 时,请确保 LDAP 参数的 Sequences 遵守 RFC4516:
[ dn [ ? [attributes] [ ? [scope] [ ? [filter] [ ? [Extensions] ] ] ] ] ]
如果您的查询包含属性,则mongod假定查询检索该实体所属的 DN 列表。
如果查询不包含属性,则mongod假定查询检索用户所属的所有实体。
对于查询返回的每个 LDAP DN,mongod在admin
数据库上为授权用户分配相应的角色。如果admin
数据库上的角色与 DN 完全匹配,则mongod授予用户角色和分配给该角色的特权。有关创建角色的更多信息,请参见db.createRole()方法。
Example
此 LDAP 查询返回 LDAP 用户对象的memberOf
属性中列出的所有组。
"{USER}?memberOf?base"
您的 LDAP 配置可能不包含memberOf
属性作为用户架构的一部分,可能具有用于报告组成员身份的其他属性,或者可能无法通过属性跟踪组成员身份。根据您自己的唯一 LDAP 配置配置查询。
如果未设置,则mongod无法授权使用 LDAP 的用户。
可以使用setParameter数据库命令在正在运行的mongod上配置此设置。
security.ldap.
validateLDAPServerConfig
- 类型:布尔值
默认:true
在 MongoDB Enterprise 中可用
一个标志,用于确定mongod或mongos实例是否在启动时检查LDAP server(s)的可用性:
版本 3.6.3 中的新功能。
setParameter Option
setParameter
- 设置一个或多个MongoDB 服务器参数中描述的参数
要在 YAML 配置文件中设置参数,请使用以下格式:
setParameter:
<parameter1>: <value1>
<parameter2>: <value2>
例如,要在配置文件中指定enableLocalhostAuthBypass:
setParameter:
enableLocalhostAuthBypass: false
LDAP Parameters
setParameter.
ldapUserCacheInvalidationInterval
- 类型:整数
默认:30
适用于使用LDAP Authorization的mongod个服务器。
外部用户缓存刷新之间的间隔mongod(以秒为单位)。 mongod刷新外部用户缓存后,下次 LDAP 授权的用户发出操作时,MongoDB 将从 LDAP 服务器重新获取授权数据。
增加指定的值会增加mongod的时间,并且 LDAP 服务器可能不同步,但会减少 LDAP 服务器上的负载。相反,减小指定的值将减少mongod时间,并且 LDAP 服务器可能不同步,同时增加 LDAP 服务器的负载。
setParameter:
ldapUserCacheInvalidationInterval: <int>
storage Options
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>
maxCacheOverflowFileSizeGB: <number>
collectionConfig:
blockCompressor: <string>
indexConfig:
prefixCompression: <boolean>
inMemory:
engineConfig:
inMemorySizeGB: <number>
storage.
dbPath
- 类型:字符串
Default :
/data/db
在 Linux 和 macOS 上在 Windows 上为
\data\db
mongod实例存储其数据的目录。
storage.dbPath设置仅适用于mongod。
Configuration Files
软件包 Management 器安装中包含的默认mongod.conf
配置文件对storage.dbPath
使用以下特定于平台的默认值:
Platform | Package Manager | 默认值storage.dbPath |
---|---|---|
RHEL/CentOS 和亚马逊 | yum |
/var/lib/mongo |
SUSE | zypper |
/var/lib/mongo |
Ubuntu 和 Debian | apt |
/var/lib/mongodb |
macOS | brew |
/usr/local/var/mongodb |
Linux 软件包初始化脚本不希望storage.dbPath更改为默认值。如果您使用 Linux 软件包并更改storage.dbPath,则必须使用自己的初始化脚本并禁用内置脚本。
storage.
indexBuildRetry
- 类型:布尔值
默认:true
指定mongod是否在下次启动时重建不完整的索引。这适用于mongod在关闭或在索引构建过程中停止后重新启动的情况。在这种情况下,mongod总是删除所有不完整的索引,然后默认情况下尝试重建它们。要阻止mongod重建索引,请将此选项设置为false
。
storage.indexBuildRetry设置仅适用于mongod。
storage.
repairPath
- 类型:字符串
默认:dbPath下的_tmp_repairDatabase_<num>
目录。
MongoDB 将在--repair操作期间使用的工作目录。 --repair
完成时,storage.repairPath目录为空,dbPath包含已修复的文件。
storage.repairPath设置仅适用于mongod。
仅适用于使用 MMAPv1 存储引擎的mongod实例。
storage.journal.
enabled
- 类型:布尔值
默认:在 64 位系统上为true
,在 32 位系统上为false
启用或禁用持久性journal,以确保数据文件保持有效和可恢复。仅当您指定storage.dbPath设置时,此选项才适用。 mongod默认启用日记功能。
storage.journal.enabled设置仅适用于mongod。
如果副本集的任何有投票权的成员都没有journaling运行(即运行内存存储引擎或禁用日记功能运行),则必须将writeConcernMajorityJournalDefault设置为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
的写入将导致日志的立即同步。有关影响 WiredTiger 同步频率的详细信息或其他条件,请参阅Journaling Process。
storage.journal.commitIntervalMs设置仅适用于mongod。
storage.
directoryPerDB
- 类型:布尔值
默认:false
当true
时,MongoDB 使用单独的目录存储每个数据库的数据。这些目录位于storage.dbPath目录下,每个子目录名称均与数据库名称相对应。
在版本 3.0 中进行了更改:要更改现有部署的storage.directoryPerDB选项,必须使用新的storage.directoryPerDB值 和 新的数据目录(storage.dbPath值)重新启动mongod实例,然后重新填充数据。
对于独立实例,可以在现有实例上使用mongodump,停止实例,使用新的storage.directoryPerDB值 和 重新启动新的数据目录,然后使用mongorestore填充新的数据目录。
对于副本集,您可以通过以下方式滚动更新:停止辅助成员,使用新的storage.directoryPerDB值 和 新的数据目录重新启动,并使用initial sync填充新的数据目录。要更新所有成员,请首先从辅助成员开始。然后,降级主要成员,并更新降级的成员。
storage.directoryPerDB设置仅适用于mongod。
storage.
syncPeriodSecs
- 类型:数字
默认:60
MongoDB 通过fsync操作将数据刷新到数据文件之前可以经过的时间。
请勿在生产系统上设置此值. 在几乎每种情况下,都应使用默认设置。
Warning
如果将storage.syncPeriodSecs设置为0
,则 MongoDB 不会将内存 Map 文件同步到磁盘。
mongod进程非常快地将数据写入日志,并懒惰地将数据写入数据文件。 storage.syncPeriodSecs对journal文件或journaling没有影响,但是如果storage.syncPeriodSecs设置为0
,日志将最终消耗所有可用的磁盘空间。如果出于测试目的将storage.syncPeriodSecs设置为0
,则还应将--nojournal设置为true
。
serverStatus命令通过backgroundFlushing字段报告后台刷新线程的状态。
storage.syncPeriodSecs设置仅适用于mongod。
storage.
engine
- 默认:
wiredTiger
- 默认:
3.0 版中的新功能。
在版本 3.2 中进行了更改:从 MongoDB 3.2 开始,默认为wiredTiger
。
mongod数据库的存储引擎。可用值包括:
Value | Description |
---|---|
mmapv1 |
指定MMAPv1 存储引擎。 |
wiredTiger |
指定WiredTiger 存储引擎。 |
inMemory |
指定内存中存储引擎。 |
版本 3.2 中的新功能:仅在 MongoDB Enterprise 中可用。
如果尝试使用storage.dbPath来启动mongod,而storage.dbPath包含由storage.engine指定的存储引擎以外的存储引擎生成的数据文件,则mongod将拒绝启动。
storage.mmapv1 Options
storage:
mmapv1:
preallocDataFiles: <boolean>
nsSize: <int>
quota:
enforced: <boolean>
maxFilesPerDB: <int>
smallFiles: <boolean>
journal:
debugFlags: <int>
commitIntervalMs: <num>
storage.mmapv1.
preallocDataFiles
- 类型:布尔值
默认:true
*仅适用于 MMAPv1 存储引擎。
启用或禁用数据文件的预分配。默认情况下,MongoDB 不会预分配数据文件。
storage.mmapv1.preallocDataFiles设置仅适用于mongod。
storage.mmapv1.
nsSize
- 类型:整数
默认:16
*仅适用于 MMAPv1 存储引擎。
名称空间文件(以.ns
结尾的文件)的默认大小。每个集合和索引都计为一个名称空间。
使用此设置可以控制新创建的名称空间文件的大小。此选项对现有文件没有影响。命名空间文件的最大大小为 2047 MB。 16 兆字节的默认值提供大约 24,000 个名称空间。
storage.mmapv1.nsSize设置仅适用于mongod。
storage.mmapv1.quota.
enforced
-
- Type *:布尔值
-
默认:false
*仅适用于 MMAPv1 存储引擎。
启用或禁用每个数据库可以具有的最大数据文件数量限制。使用storage.mmapv1.quota.enforced选项运行时,每个数据库最多有 8 个数据文件。使用storage.quota.maxFilesPerDB
调整配额。
storage.mmapv1.quota.enforced设置仅适用于mongod。
storage.mmapv1.quota.
maxFilesPerDB
- 类型:整数
默认:8
*仅适用于 MMAPv1 存储引擎。
每个数据库的数据文件数限制。 storage.mmapv1.quota.maxFilesPerDB选项要求您设置storage.quota.enforced
。
storage.mmapv1.quota.maxFilesPerDB设置仅适用于mongod。
storage.mmapv1.
smallFiles
- 类型:布尔值
默认:false
*仅适用于 MMAPv1 存储引擎。
true
时,MongoDB 使用较小的默认文件大小。 storage.mmapv1.smallFiles选项可减小数据文件的初始大小,并将最大大小限制为 512 MB。 storage.mmapv1.smallFiles还将每个journal文件的大小从 1 GB 减小到 128 MB。如果您有大量数据库,每个数据库都存储少量数据,请使用storage.mmapv1.smallFiles。
storage.mmapv1.smallFiles选项可能导致mongod实例创建大量文件,这可能会影响较大数据库的性能。
storage.mmapv1.smallFiles设置仅适用于mongod。
storage.mmapv1.journal.
debugFlags
- 类型:整数
*仅适用于 MMAPv1 存储引擎。
提供测试功能。不用于一般用途,在系统异常关闭的情况下会影响数据文件的完整性。
storage.mmapv1.journal.debugFlags选项仅适用于mongod。
storage.mmapv1.journal.
commitIntervalMs
- 类型:数字
从 3.2 版开始不推荐使用:MongoDB 3.2 不推荐使用storage.mmapv1.journal.commitIntervalMs设置。请改用storage.journal.commitIntervalMs。
不推荐使用的设置充当新storage.journal.commitIntervalMS
设置的别名,并且适用于 MMAPv1 或 WiredTiger 存储引擎。
storage.wiredTiger Options
storage:
wiredTiger:
engineConfig:
cacheSizeGB: <number>
journalCompressor: <string>
directoryForIndexes: <boolean>
maxCacheOverflowFileSizeGB: <number>
collectionConfig:
blockCompressor: <string>
indexConfig:
prefixCompression: <boolean>
storage.wiredTiger.engineConfig.
cacheSizeGB
- 类型:浮点
定义 WiredTiger 将用于所有数据的内部缓存的最大大小。索引构建(请参阅maxIndexBuildMemoryUsageMegabytes)消耗的内存与 WiredTiger 缓存内存分开。从 MongoDB 3.4 开始,这些值的范围可以从 0.25 GB 到 10000 GB,并且可以是浮点数。
从 MongoDB 3.4 开始,默认的 WiredTiger 内部缓存大小是以下两者中的较大者:
50%(RAM-1 GB),或
256 MB.
Note
在某些情况下,例如在容器中运行时,数据库的内存限制可能低于系统总内存。在这种情况下,此内存限制而不是系统总内存将用作最大可用 RAM。
要查看内存限制,请参阅hostInfo.system.memLimitMB。
避免将 WiredTiger 内部缓存的大小增加到其默认值以上。
通过 WiredTiger,MongoDB 可以利用 WiredTiger 内部缓存和文件系统缓存。
通过文件系统缓存,MongoDB 自动使用 WiredTiger 缓存或其他进程未使用的所有可用内存。
Note
storage.wiredTiger.engineConfig.cacheSizeGB限制了 WiredTiger 内部缓存的大小。os 将可用的可用内存用于文件系统缓存,从而允许压缩的 MongoDB 数据文件保留在内存中。此外,os 将使用任何可用的 RAM 来缓冲文件系统块和文件系统缓存。
为了容纳更多的 RAM 使用者,您可能必须减小 WiredTiger 内部缓存的大小。
默认的 WiredTiger 内部缓存大小值假定每台计算机只有一个mongod实例。如果一台机器包含多个 MongoDB 实例,则应减小设置以容纳其他mongod实例。
如果您在不能访问系统中所有可用 RAM 的容器(例如lxc
,cgroups
,Docker 等)中运行mongod,则必须将storage.wiredTiger.engineConfig.cacheSizeGB的值设置为小于该容器中可用 RAM 的值。容器。确切的数量取决于容器中运行的其他进程。参见memLimitMB。
storage.wiredTiger.engineConfig.
journalCompressor
- 默认:活泼
3.0.0 版中的新功能。
用于压缩 WiredTiger 日记数据的压缩类型。
可用的压缩机有:
有关更改日志压缩器的详细信息,请参见更换 WT Journal Compressor。
storage.wiredTiger.engineConfig.
directoryForIndexes
- 类型:布尔值
默认:false
3.0.0 版中的新功能。
当storage.wiredTiger.engineConfig.directoryForIndexes为true
时,mongod将索引和集合存储在 data(即storage.dbPath)目录下的单独子目录中。具体地说,mongod将索引存储在名为index
的子目录中,并将收集数据存储在名为collection
的子目录中。
通过使用符号链接,可以为索引指定其他位置。具体来说,当mongod实例未在运行时,请将index
子目录移动到目标位置,并在数据目录下创建一个名为index
的符号链接到新目标。
storage.wiredTiger.engineConfig.
maxCacheOverflowFileSizeGB
- 类型:浮点
指定“后备(或缓存溢出)表”文件WiredTigerLAS.wt
的最大大小(以 GB 为单位)。
该设置可以接受以下值:
Value | Description |
---|---|
0 |
默认值。如果设置为0 ,则文件大小不受限制。 |
数> = 0.1 | 最大大小(以 GB 为单位)。如果WiredTigerLAS.wt 文件超出此大小,则mongod退出并带有致命 assert。您可以清除WiredTigerLAS.wt 文件并重新启动mongod。 |
要在运行时更改最大大小,请使用wiredTigerMaxCacheOverflowSizeGB参数。
从 3.6.15 开始提供 3.6 系列
storage.wiredTiger.collectionConfig.
blockCompressor
- 默认:活泼
3.0.0 版中的新功能。
用于压缩集合数据的默认压缩类型。创建集合时,您可以在每个集合的基础上覆盖此设置。
可用的压缩机有:
storage.wiredTiger.collectionConfig.blockCompressor影响所有创建的收藏集。如果您在现有 MongoDB 部署上更改storage.wiredTiger.collectionConfig.blockCompressor的值,则所有新集合将使用指定的压缩器。现有集合将 continue 使用创建时指定的压缩器,或那时的默认压缩器。
storage.wiredTiger.indexConfig.
prefixCompression
- 默认:true
3.0.0 版中的新功能。
为索引数据启用或禁用prefix compression。
为storage.wiredTiger.indexConfig.prefixCompression指定true
以为索引数据启用prefix compression,或为false
禁用索引数据的前缀压缩。
storage.wiredTiger.indexConfig.prefixCompression设置会影响所有创建的索引。如果您在现有 MongoDB 部署上更改storage.wiredTiger.indexConfig.prefixCompression的值,则所有新索引都将使用前缀压缩。现有索引不受影响。
storage.inmemory Options
storage:
inMemory:
engineConfig:
inMemorySizeGB: <number>
storage.inMemory.engineConfig.
inMemorySizeGB
- 类型:浮点
默认:物理 RAM 的 50%减去 1 GB
在版本 3.4 中更改:值的范围可以从 256MB 到 10TB,并且可以是浮点数。
为内存存储引擎数据分配的最大内存量,包括索引,oplog(如果mongod是副本集,副本集或分片群集元数据的一部分)。
默认情况下,内存存储引擎使用 50%的物理 RAM 减去 1 GB。
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
operationProfiling Options
operationProfiling:
mode: <string>
slowOpThresholdMs: <int>
slowOpSampleRate: <double>
operationProfiling.
mode
- 类型:字符串
默认:off
指定哪些操作应为profiled。提供以下探查器级别:
Level | Description |
---|---|
off |
探查器已关闭,并且不收集任何数据。这是默认的探查器级别。 |
slowOp |
分析器收集的操作数据所花费的时间比slowms 的时间长。 |
all |
探查器收集所有操作的数据。 |
Important
分析可能会影响性能并与系统日志共享设置。在生产部署上配置和启用探查器之前,请仔细考虑所有性能和安全隐患。
有关潜在性能下降的更多信息,请参见Profiler Overhead。
operationProfiling.
slowOpThresholdMs
- 类型:整数
默认:100
- slow 操作时间阈值,以毫秒为单位。运行时间超过此阈值的操作被视为 slow *。
当logLevel设置为0
时,MongoDB 以slowOpSampleRate确定的速率将* slow *操作记录到诊断日志中。对于从版本 3.6.11 开始的 MongoDB 3.6 部署,副本集的第二副本将设置日志所有花费比慢操作阈值更长的时间的 oplog 条目消息,而与采样率无关。
在更高的logLevel设置下,所有操作都将显示在诊断日志中,而与它们的延迟无关,但以下情况除外:记录次要节点的操作日志 Importing 消息缓慢。辅助服务器仅记录慢速操作日志条目;增加logLevel不会记录所有操作日志条目。
See also
operationProfiling.slowOpThresholdMs设置仅适用于mongod。
operationProfiling.
slowOpSampleRate
- 类型:双
默认:1.0
- slow *操作的一部分,应该进行概要分析或记录。 operationProfiling.slowOpSampleRate接受 0 到 1 之间的值(包括 0 和 1)。
operationProfiling.slowOpSampleRate不会影响副本集的次要成员的缓慢的 oplog 条目日志记录。次要成员记录所有花费比慢速操作阈值更长的操作日志条目,而不考虑operationProfiling.slowOpSampleRate。
对于mongod个实例,operationProfiling.slowOpSampleRate影响诊断日志,如果启用,则将影响探查器。
replication Options
replication:
oplogSizeMB: <int>
replSetName: <string>
secondaryIndexPrefetch: <string>
enableMajorityReadConcern: <boolean>
replication.
oplogSizeMB
- 类型:整数
复制操作日志(即oplog)的最大大小(以兆字节为单位)。 mongod进程基于最大可用空间量创建oplog。对于 64 位系统,操作日志通常是可用磁盘空间的 5%。
mongod首次创建操作日志后,更改replication.oplogSizeMB选项将不会影响操作日志的大小。使用replSetResizeOplogManagement 命令来更改正在运行的mongod副本集成员的操作日志大小。 replSetResizeOplog使您可以动态调整操作日志的大小,而无需重新启动mongod进程。
有关更多信息,请参见Oplog Size。
replication.oplogSizeMB设置仅适用于mongod。
replication.
replSetName
- 类型:字符串
mongod所属的副本集的名称。副本集中的所有主机必须具有相同的集名称。
如果您的应用程序连接到多个副本集,则每个副本集应具有不同的名称。某些驱动程序通过副本集名称对副本集连接进行分组。
replication.replSetName设置仅适用于mongod。
replication.
secondaryIndexPrefetch
- 类型:字符串
默认:全部
Storage Engine Specific Feature
replication.secondaryIndexPrefetch仅可用于mmapv1
存储引擎。
在应用操作日志中应用操作之前,secondary replica set成员的索引已加载到内存中。默认情况下,从服务器将与操作相关的所有索引加载到内存中,然后再应用操作日志中的操作。
将此设置设置为以下之一:
Value | Description |
---|---|
none |
辅助节点不会将索引加载到内存中。 |
all |
次要加载与操作相关的所有索引。 |
_id_only |
除了已经存在的_id 索引之外,第二副本不会将其他索引加载到内存中。 |
replication.secondaryIndexPrefetch设置仅适用于mongod。
replication.
enableMajorityReadConcern
- 默认:true
*适用于 MongoDB 3.6.1-3.6.x *
从 MongoDB 3.6 开始,MongoDB 默认情况下启用对"majority"读取关注的支持。
对于 MongoDB 3.6.1-3.6.x,您可以禁用读取关注"majority",以防止存储高速缓存压力使具有三成员主次仲裁器(PSA)架构的部署无法实现。有关禁用阅读关注"majority"的更多信息,请参见禁用多数阅读关注。
要禁用,请将replication.enableMajorityReadConcern设置为 false。
Important
通常,除非必要,请避免禁用"majority"阅读关注。但是,如果您有一个具有主要-次要仲裁器(PSA)体系结构的三成员副本集或具有三成员 PSA 分片的分片群集,请禁用该功能以防止存储高速缓存压力使部署无法固定。
禁用"majority"读取关注会禁用对Change Streams的支持。
replication.enableMajorityReadConcern对 MongoDB 3.6.0 没有影响。
sharding Options
sharding:
clusterRole: <string>
archiveMovedChunks: <boolean>
mongod实例在分片群集中的角色。将此设置设置为以下之一:
Value | Description |
---|---|
configsvr |
以config server形式启动此实例。默认情况下,该实例从端口27019 开始。 |
shardsvr |
以shard形式启动此实例。默认情况下,该实例从端口27018 开始。 |
Note
设置sharding.clusterRole
要求mongod实例与复制一起运行。要将实例部署为副本集成员,请使用replSetName设置并指定副本集的名称。
sharding.clusterRole设置仅适用于mongod。
在 3.2 版中进行了更改:从 3.2 版开始,MongoDB 使用false
作为默认值。
auditLog Options
Note
仅在MongoDB Enterprise中可用。
auditLog:
destination: <string>
format: <string>
path: <string>
filter: <string>
auditLog.
destination
- 类型:字符串
2.6 版的新功能。
设置后,auditLog.destination启用auditing并指定mongos或mongod发送所有审核事件的位置。
auditLog.destination可以具有以下值之一:
Value | Description |
---|---|
syslog |
将审核事件以 JSON 格式输出到 syslog。在 Windows 上不可用。审核消息的系统日志严重性级别为info ,设施级别为user 。 |
syslog 消息限制可能导致审计消息被截断。审计系统不会在发生截断时检测到截断或错误。
| console
|以 JSON 格式将审核事件输出到stdout
。
| file
|以auditLog.format指定的格式将审核事件输出到auditLog.path指定的文件。
Note
仅在MongoDB Enterprise中可用。
auditLog.
format
- 类型:字符串
2.6 版的新功能。
如果destination为file
,则auditing的输出文件格式。 auditLog.format选项可以具有以下值之一:
Value | Description |
---|---|
JSON |
将审核事件以 JSON 格式输出到auditLog.path中指定的文件。 |
BSON |
将 BSON 二进制格式的审核事件输出到auditLog.path中指定的文件。 |
与将审计事件打印为 BSON 格式的文件相比,将审计事件打印为 JSON 格式的文件会使服务器性能下降更多。
Note
仅在MongoDB Enterprise中可用。
auditLog.
path
- 类型:字符串
2.6 版的新功能。
auditing的输出文件(如果destination的值为file
)。 auditLog.path选项可以采用完整路径名或相对路径名。
Note
仅在MongoDB Enterprise中可用。
auditLog.
filter
-
- Type *:文档的字符串表示形式
-
2.6 版的新功能。
用于限制操作类型和audit system记录的过滤器。该选项采用以下形式的查询文档的字符串表示形式:
{ <field1>: <expression1>, ... }
<field>
可以是审核消息中的任何字段,包括param文档中返回的字段。 <expression>
是查询条件表达式。
要指定审核过滤器,请将过滤器文档括在单引号中,以将文档作为字符串传递。
要在configuration file中指定审核过滤器,必须使用配置文件的 YAML 格式。
Note
仅在MongoDB Enterprise中可用。
snmp Options
Note
由于SERVER-29352,因此 macOS 上的 MongoDB Enterprise 不支持 SNMP。
snmp:
subagent: <boolean>
master: <boolean>
snmp.
subagent
- 类型:布尔值
当snmp.subagent为true
时,SNMP 作为子代理运行。有关更多信息,请参见在 Linux 上使用 SNMP 监视 MongoDB。
snmp.subagent设置仅适用于mongod。
snmp.
master
- 类型:布尔值
当snmp.master为true
时,SNMP 作为主机运行。有关更多信息,请参见在 Linux 上使用 SNMP 监视 MongoDB。
snmp.master设置仅适用于mongod。
mongos-only Options
在版本 3.4 中进行了更改:MongoDB 3.4 删除了sharding.chunkSize
和sharding.autoSplit
设置。
replication:
localPingThresholdMs: <int>
sharding:
configDB: <string>
replication.
localPingThresholdMs
- 类型:整数
默认:15
mongos用于确定哪个辅助副本集成员传递来自 Client 端的读取操作的 ping 时间(以毫秒为单位)。 15
的默认值对应于所有 Client 端drivers中的默认值。
mongos收到允许读取secondary成员的请求时,mongos将:
查找时间最短的集合中的成员。
构造一个副本集成员列表,该列表在该集合中最合适的成员的 ping 时间(15 毫秒)内。
如果您为replication.localPingThresholdMs选项指定一个值,则mongos将构造在此值所允许的延迟内的副本成员列表。
- 从此列表中选择一个成员以从中随机读取。
通过replication.localPingThresholdMs设置进行比较的成员使用的 ping 时间是最近一次 ping 时间的移动平均值,最多每 10 秒计算一次。因此,某些查询可能会达到阈值以上的成员,直到mongos重新计算平均值为止。
有关更多信息,请参见read preference文档的读取副本集的首选项部分。
在版本 3.2 中更改。
configuration servers代表sharded cluster。
从 MongoDB 3.2 开始,可将分片群集的配置服务器部署为replica set。副本集配置服务器必须运行WiredTiger 存储引擎。 MongoDB 3.2 不赞成将三个镜像mongod实例用于配置服务器。
指定配置服务器副本集名称以及配置服务器副本集的至少一个成员的主机名和端口。
sharding:
configDB: <configReplSetName>/cfg1.example.net:27019, cfg2.example.net:27019,...
分片群集的mongos实例必须指定相同的配置服务器副本集名称,但可以指定副本集不同成员的主机名和端口。
Windows 服务选项
processManagement:
windowsService:
serviceName: <string>
displayName: <string>
description: <string>
serviceUser: <string>
servicePassword: <string>
processManagement.windowsService.
serviceName
- 类型:字符串
默认:MongoDB
作为 Windows 服务运行时的服务名称mongos或mongod。将此名称与net start <name>
和net stop <name>
操作一起使用。
您必须将processManagement.windowsService.serviceName与--install
或--remove
选项结合使用。
processManagement.windowsService.
displayName
- 类型:字符串
默认:MongoDB
服务 Management 应用程序上为 MongoDB 列出的名称。
processManagement.windowsService.
description
- 类型:字符串
默认:MongoDB 服务器
您必须结合使用processManagement.windowsService.description和--install
选项。
对于包含空格的描述,必须将描述用引号引起来。
processManagement.windowsService.
serviceUser
- 类型:字符串
特定用户上下文中的mongos或mongod服务。该用户必须具有“作为服务登录”特权。
您必须结合使用processManagement.windowsService.serviceUser和--install
选项。
processManagement.windowsService.
servicePassword
- 类型:字符串
使用processManagement.windowsService.serviceUser选项运行时,<user>
表示mongos或mongod的密码。
您必须结合使用processManagement.windowsService.servicePassword和--install
选项。