配置文件选项

在本页面

下一页描述了 MongoDB 3.6 中可用的配置选项。有关其他版本的 MongoDB 的配置文件选项,请参阅《 MongoDB 手册》的相应版本。

Configuration File

您可以在启动时使用配置文件配置mongodmongos实例。配置文件包含等效于mongodmongos命令行选项的设置。

使用配置文件使 Managementmongodmongos选项更加容易,尤其是对于大规模部署而言。您还可以在配置文件中添加 Comments,以解释服务器的设置。

File Format

在 2.6 版中进行了更改:MongoDB 2.6 引入了基于 YAML 的配置文件格式。 2 .4 配置文件格式保留用于向后兼容。

MongoDB 配置文件使用YAML格式[1]

以下 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.pathstorage.dbPathprocessManagement.fork的特定值。如果您在默认配置文件中修改这些设置,则mongod可能无法启动。

[1] YAML 是JSON的超集。

使用配置文件

要使用配置文件启动mongodmongos,请使用--config选项或-f选项指定配置文件,如以下示例所示:

以下示例使用mongod --configmongos --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

默认:0

在版本 3.0 中更改。

components的默认log message详细级别。详细程度决定了 MongoDB 输出的信息和调试条消息的数量。

详细级别的范围是05

要对命名组件使用不同的详细级别,请使用组件的详细设置。例如,使用systemLog.component.accessControl.verbosity专门为ACCESS组件设置详细级别。

有关特定组件详细程度的设置,请参见systemLog.component.<name>.verbosity设置。

有关设置日志详细级别的各种方法,请参见配置日志详细级别

在安静模式下运行mongosmongod,以尝试限制输出量。

不建议在生产系统中使用systemLog.quiet,因为它可能会使特定连接期间的跟踪问题更加困难。

打印详细信息以进行调试。用于与支持相关的故障排除的其他日志记录。

默认:用户

将消息记录到 syslog 时使用的工具级别。os 的 syslog 实现必须支持您指定的值。要使用此选项,必须将systemLog.destination设置为syslog

mongodmongos应该将所有诊断日志记录信息发送到的日志文件的路径,而不是标准输出或主机的syslog。 MongoDB 在指定路径创建日志文件。

Linux 软件包初始化脚本不希望systemLog.path更改为默认值。如果您使用 Linux 软件包并更改systemLog.path,则必须使用自己的初始化脚本并禁用内置脚本。

默认:false

true,__1 或mongod重新启动mongosmongod实例时,会将新条目追加到现有日志文件的末尾。如果没有此选项,mongod将备份现有日志并创建一个新文件。

默认:重命名

3.0.0 版中的新功能。

logRotate命令的行为。指定renamereopen

如果指定reopen,则还必须将systemLog.logAppend设置为true

MongoDB 将所有日志输出发送到的目标。指定filesyslog。如果指定file,则还必须指定systemLog.path

如果您未指定systemLog.destination,则 MongoDB 将所有日志输出发送到标准输出。

Warning

syslog守护程序在记录消息时生成时间戳,而不是在 MongoDB 发布消息时生成时间戳。这会导致误导日志条目的时间戳,尤其是在系统负载沉重的情况下。我们建议对生产系统使用file选项,以确保准确的时间戳。

默认: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>

默认:0

3.0 版中的新功能。

与访问控制有关的组件的日志消息详细级别。请参阅ACCESS组件。

详细级别的范围是05

默认:0

3.0 版中的新功能。

与命令相关的组件的日志消息详细级别。请参阅COMMAND组件。

详细级别的范围是05

默认:0

3.0 版中的新功能。

与控制操作有关的组件的日志消息详细级别。请参阅CONTROL组件。

详细级别的范围是05

默认:0

3.2 版中的新功能。

与诊断数据收集操作相关的组件的日志消息详细级别。请参阅FTDC组件。

详细级别的范围是05

默认:0

3.0 版中的新功能。

与地理空间解析操作相关的组件的日志消息详细级别。请参阅GEO组件。

详细级别的范围是05

默认:0

3.0 版中的新功能。

与索引操作相关的组件的日志消息详细级别。请参阅INDEX组件。

详细级别的范围是05

默认:0

3.0 版中的新功能。

与联网操作相关的组件的日志消息详细级别。请参阅NETWORK组件。

详细级别的范围是05

默认:0

3.0 版中的新功能。

与查询操作相关的组件的日志消息详细级别。请参阅QUERY组件。

详细级别的范围是05

默认:0

3.0 版中的新功能。

与复制相关的组件的日志消息详细级别。请参阅REPL组件。

详细级别的范围是05

默认:0

3.6 版的新功能。

与心跳相关的组件的日志消息详细级别。请参阅REPL_HB组件。

详细级别的范围是05

默认:0

3.6 版的新功能。

与回滚相关的组件的日志消息详细级别。请参阅ROLLBACK组件。

详细级别的范围是05

默认:0

3.0 版中的新功能。

与分片有关的组件的日志消息详细级别。请参阅SHARDING组件。

详细级别的范围是05

默认:0

3.0 版中的新功能。

与存储相关的组件的日志消息详细级别。请参阅STORAGE组件。

如果未设置systemLog.component.storage.journal.verbosity,则systemLog.component.storage.verbosity级别也适用于日记组件。

详细级别的范围是05

默认:0

3.0 版中的新功能。

与日记相关的组件的日志消息详细级别。请参阅JOURNAL组件。

如果未设置systemLog.component.storage.journal.verbosity,则日志记录组件的详细级别与父存储组件相同:即systemLog.component.storage.verbosity级别(如果已设置)或默认详细级别。

详细级别的范围是05

默认:0

3.0 版中的新功能。

与写操作有关的组件的日志消息详细级别。请参阅WRITE组件。

详细级别的范围是05

processManagement Options

processManagement:
   fork: <boolean>
   pidFilePath: <string>
   timeZoneInfo: <string>

默认:false

启用在后台运行mongosmongod进程的daemon模式。默认情况下mongosmongod不作为守护程序运行:通常,您将mongosmongod作为守护程序运行,可以通过使用processManagement.fork或通过处理守护进程的控制进程(例如upstartsystemd)来运行。

Windows 上不支持processManagement.fork选项。

Linux 软件包初始化脚本不希望processManagement.fork更改为默认值。如果您使用 Linux 软件包并更改processManagement.fork,则必须使用自己的初始化脚本并禁用内置脚本。

指定用于存储mongosmongod进程的进程 ID(PID)的文件位置。运行mongodmongos进程的用户必须能够写入此路径。如果未指定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

加载时区数据库的完整路径。如果未提供此选项,则 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>

Default :

MongoDB 实例在其上侦听 Client 端连接的 TCP 端口。

默认:localhost

Note

从 MongoDB 3.6 开始,默认情况下mongosmongod绑定到 localhost(127.0.0.1)。参见默认绑定到 localhost

mongosmongod应在其上侦听 Client 端连接的 IP 地址和/或完整的 Unix 域套接字路径。您可以将mongosmongod附加到任何接口。要绑定到多个地址,请 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:是开头mongosmongod以启用 IPv6 支持。将 IPv6 地址指定为net.bindIp不会启用 IPv6 支持。

如果指定链接本地 IPv6 地址(fe80::/10),则必须将zone index附加到该地址(即fe80::<address>%<adapter-name>)。

Example

localhost,fe80::a00:27ff:fee0:1fcf%enp0s3

Tip

为避免停机,请为每个配置服务器指定一个逻辑 DNS 名称(与服务器的物理或虚拟主机名无关)。如果没有逻辑 DNS 名称,移动或重命名配置服务器需要关闭分片群集中的每个mongodmongos实例。

Warning

绑定到非 localhost(例如可公开访问)的 IP 地址之前,请确保已保护群集免受未经授权的访问。有关安全建议的完整列表,请参见Security Checklist。至少考虑enabling authentication加强网络基础设施

要绑定到所有 IPv4 地址,请 Importing0.0.0.0

要绑定到所有 IPv4 和 IPv6 地址,请 Importing0.0.0.0,::,或者使用net.bindIpAll设置。

Note

net.bindIpnet.bindIpAll是互斥的。也就是说,您可以指定一个或另一个,但不能两个都指定。

默认:false

3.6 版的新功能。

如果为 true,则mongosmongod实例绑定到所有 IPv4 地址(即0.0.0.0)。如果mongosmongodnet.ipv6:是开头,则net.bindIpAll也会绑定到所有 IPv6 地址(即::)。

如果以net.ipv6:是开头,则mongosmongod仅支持 IPv6.仅指定net.bindIpAll不会启用 IPv6 支持。

Warning

绑定到非 localhost(例如可公开访问)的 IP 地址之前,请确保已保护群集免受未经授权的访问。有关安全建议的完整列表,请参见Security Checklist。至少考虑enabling authentication加强网络基础设施

或者,将net.bindIp设置为::,0.0.0.0以绑定到所有 IP 地址。

Note

net.bindIpnet.bindIpAll是互斥的。同时指定这两个选项会导致mongosmongod引发错误并终止。

默认:65536

mongosmongod可接受的最大同时连接数。如果此设置高于 os 配置的最大连接跟踪阈值,则该设置无效。

请勿为此选项分配太低的值,否则在正常的应用程序操作过程中会遇到错误。

如果您有一个创建多个连接并允许它们超时而不是关闭它们的 Client 端,这对于mongos尤其有用。

在这种情况下,请将maxIncomingConnections设置为稍高于 Client 端创建的最大连接数或连接池的最大大小的值。

此设置可防止mongos引起各个shards的连接尖峰。这样的尖峰可能会破坏sharded cluster的操作和内存分配。

默认:true

如果为true,则mongodmongos实例将在收到 Client 端后验证来自 Client 端的所有请求,以防止 Client 端将格式错误或无效的 BSON 插入 MongoDB 数据库中。

对于高度嵌套子文档的对象,net.wireObjectCheck对性能的影响很小。

默认:false

net.ipv6设置为true以启用 IPv6 支持。 mongos/mongod默认情况下禁用 IPv6 支持。

设置net.ipv6不会指导mongos/mongod侦听任何本地 IPv6 地址或接口。要将mongos/mongod配置为在 IPv6 接口上侦听,您必须:

net.unixDomainSocket Options

net:
   unixDomainSocket:
      enabled: <boolean>
      pathPrefix: <string>
      filePermissions: <int>

默认:true

在 UNIX 域套接字上启用或禁用侦听。 net.unixDomainSocket.enabled仅适用于基于 Unix 的系统。

net.unixDomainSocket.enabledtrue时,mongosmongod在 UNIX 套接字上侦听。

除非满足以下条件之一,否则mongosmongod进程始终在 UNIX 套接字上侦听:

2.6 版中的新功能:从官方.deb.rpm软件包安装的mongosmongodbind_ip配置默认情况下设置为127.0.0.1

默认:/ tmp

UNIX 套接字的路径。 net.unixDomainSocket.pathPrefix仅适用于基于 Unix 的系统。

如果此选项没有值,则mongosmongod进程将创建一个以/tmp作为前缀的套接字。除非满足以下条件之一,否则 MongoDB 会在 UNIX 套接字上创建并侦听:

默认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>

自 2.6 版起弃用:改为使用net.ssl.mode: requireSSL

mongosmongod启用或禁用 TLS/SSL。

对于net.ssl.sslOnNormalPortsmongosmongod要求对默认 MongoDB 端口或net.port指定的端口上的所有连接进行 TLS/SSL 加密。默认情况下,禁用net.ssl.sslOnNormalPorts

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

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 版开始,如果未指定--sslCAFilessl.CAFile并且未使用 x.509 身份验证,则在连接到启用了 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储。

如果使用 x.509 身份验证,则必须指定--sslCAFilessl.CAFile

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

包含 TLS/SSL 证书和密钥的.pem文件。使用相对或绝对路径指定.pem文件的文件名。

启用 TLS/SSL 时,必须指定net.ssl.PEMKeyFile

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

用于解密证书密钥文件的密码(即PEMKeyFile)。仅当证书密钥文件已加密时,才使用net.ssl.PEMKeyPassword选项。在所有情况下,mongosmongod都会从所有日志记录和报告输出中删除密码。

在 2.6 版中进行了更改:如果 PEM 文件中的私钥已加密并且您未指定net.ssl.PEMKeyPassword选项,则mongosmongod将提示您 Importing 密码。参见TLS/SSL 证书密码短语

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

2.6 版的新功能。

.pem文件,其中包含用于群集或副本集的membership authentication的 x.509 证书密钥文件。

如果net.ssl.clusterFile未为内部群集身份验证指定.pem文件,则群集将使用PEMKeyFile设置中指定的.pem文件。

如果使用 x.509 身份验证,则必须指定--sslCAFilessl.CAFile

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

2.6 版的新功能。

用于解密由--sslClusterFile指定的 x.509 证书密钥文件的密码。仅当证书密钥文件已加密时,才使用net.ssl.clusterPassword选项。在所有情况下,mongosmongod都会从所有日志记录和报告输出中删除密码。

如果 x.509 密钥文件已加密并且您未指定net.ssl.clusterPassword选项,则mongosmongod将提示您 Importing 密码。参见TLS/SSL 证书密码短语

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

包含来自证书颁发机构的根证书链的.pem文件。使用相对或绝对路径指定.pem文件的文件名。

从 3.4 版开始,如果未指定--sslCAFilessl.CAFile并且未使用 x.509 身份验证,则在连接到启用了 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储。

如果使用 x.509 身份验证,则必须指定--sslCAFilessl.CAFile

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

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 和 mongosClient 端的 TLS/SSL 配置

包含证书吊销列表的.pem文件。使用相对或绝对路径指定.pem文件的文件名。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

对于不提供证书的 Client 端,mongosmongod在构建连接时会绕过 TLS/SSL 证书验证。

但是,对于提供证书的 Client 端,mongosmongod使用CAFile指定的根证书链执行证书验证,并拒绝具有无效证书的 Client 端。

如果您的混合部署中包含没有或不能向mongosmongod颁发证书的 Client 端,请使用net.ssl.allowConnectionsWithoutCertificates选项。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

对群集中其他服务器上的 TLS/SSL 证书启用或禁用验证检查,并允许使用无效证书进行连接。

Note

从 MongoDB 3.6.6 开始,如果在使用 x.509 身份验证时指定--sslAllowInvalidCertificatesssl.allowInvalidCertificates: true,则无效的证书仅足以构建 TLS/SSL 连接,而对于身份验证则“不足”。

使用net.ssl.allowInvalidCertificates设置时,MongoDB 会记录有关使用无效证书的警告。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

默认:false

3.0 版中的新功能。

net.ssl.allowInvalidHostnamestrue时,MongoDB 禁用 TLS/SSL 证书中主机名的验证,如果它们的证书名与指定主机名不匹配,则允许mongod连接到 MongoDB 实例。

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

3.0.7 版中的新功能。

防止运行 TLS/SSL 的 MongoDB 服务器接受使用一个或多个特定协议的传入连接。 net.ssl.disabledProtocols识别以下协议:TLS1_0TLS1_1TLS1_2,并且从版本 3.6.9 TLS1_3开始。

指定无法识别的协议将阻止服务器启动。

要指定多个协议,请使用逗号分隔的协议列表。

副本集和分片群集的成员必须至少说一种共同的协议。

mongosmongod启用或禁用已安装的 OpenSSL 库的 FIPS 模式。您的系统必须具有符合 FIPS 的 OpenSSL 库,才能使用net.ssl.FIPSMode选项。

Note

兼容 FIPS 的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参见为 FIPS 配置 MongoDB

net.compression Option

net:
   compression:
      compressors: <string>

3.4 版的新功能。

指定用于此mongodmongos实例与以下对象之间的通信的默认压缩器:

MongoDB 支持以下压缩器:

从 3.6 版本开始mongodmongos默认启用snappy作为压缩器来启用网络压缩。

要禁用网络压缩,请将值设置为disabled

Important

当双方都启用网络压缩时,消息将被压缩。否则,双方之间的消息将不被压缩。

如果指定多个压缩器,则列出压缩器的 Sequences 以及通信启动器都很重要。例如,如果mongo shell 指定以下网络压缩器zlib,snappy,而mongod指定snappy,zlib,则mongo shell 和mongod之间的消息将使用zlib

如果各方不共享至少一个公共压缩器,则各方之间的消息将不被压缩。例如,如果mongo shell 指定了网络压缩器zlib,而mongod指定了snappy,则mongo shell 和mongod之间的消息不会被压缩。

默认:asio

3.6 版的新功能。

mongosmongod使用的网络实现。要恢复到 3.6 版之前的实现,请将此选项更改为legacy

Warning

除非 MongoDB 支持团队要求您更改它,否则请不要更改此设置。

默认:同步

3.6 版的新功能。

确定mongosmongod用于执行 Client 端请求的线程和执行模型。 --serviceExecutor选项接受以下值之一:

Value Description
synchronous mongosmongod使用同步网络并在每个连接的基础上 Management 其网络线程池。 MongoDB 的早期版本以这种方式 Management 线程。
adaptive mongosmongod使用带有自适应线程池的新实验性异步联网模式,该线程池根据每个请求 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>

密钥文件的路径,密钥文件存储sharded clusterreplica set中 MongoDB 实例用来相互认证的共享密钥。 keyFile表示security.authorization。有关更多信息,请参见Internal Authentication

默认:keyFile

2.6 版的新功能。

用于集群认证的认证方式。如果您使用内部 x.509 身份验证,请在此处指定。此选项可以具有以下值之一:

Value Description
keyFile 使用密钥文件进行身份验证。仅接受密钥文件。
sendKeyFile 用于滚动升级。发送密钥文件进行身份验证,但可以接受密钥文件和 x.509 证书。
sendX509 用于滚动升级。发送 x.509 证书进行身份验证,但可以接受密钥文件和 x.509 证书。
x509 推荐的。发送 x.509 证书进行身份验证,并且仅接受 x.509 证书。

从 3.4 版开始,如果未指定--sslCAFilessl.CAFile并且未使用 x.509 身份验证,则在连接到启用了 TLS/SSL 的服务器时将使用系统范围的 CA 证书存储。

如果使用 x.509 身份验证,则必须指定--sslCAFilessl.CAFile

有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongosClient 端的 TLS/SSL 配置

默认:禁用

启用或禁用基于角色的访问控制(RBAC),以控制每个用户对数据库资源和操作的访问。

将此选项设置为以下之一:

Value Description
enabled 用户只能访问已为其授予特权的数据库资源和操作。
disabled 用户可以访问任何数据库并执行任何操作。

有关更多信息,请参见基于角色的访问控制

security.authorization设置仅适用于mongod

默认:false

3.4 版的新增功能:允许mongodmongos接受并创建与部署中其他mongodmongos实例之间的经过身份验证和未经身份验证的连接。用于执行副本集或分片群集从无认证配置到internal authentication的滚动过渡。需要指定internal authentication机制,例如security.keyFile

例如,如果将keyfiles用于internal authentication,则mongodmongos使用匹配的密钥文件与部署中的任何mongodmongos创建经过身份验证的连接。如果安全机制不匹配,则mongodmongos会使用未经身份验证的连接。

security.transitionToAuth一起运行的mongodmongos不会强制用户访问控制。用户可以在不进行任何访问控制检查的情况下连接到您的部署,并执行读取,写入和 Management 操作。

Note

运行internal authentication security.transitionToAuthmongodmongos要求 Client 端使用用户访问控制进行连接。在重新启动不带security.transitionToAuthmongodmongos之前,先使用适当的user更新 Client 端以连接到mongodmongos

默认:true

启用或禁用服务器端 JavaScript 执行。禁用后,您将无法使用执行 JavaScript 代码在服务器端执行的操作,例如$where查询运算符,mapReduce命令和db.collection.mapReduce()方法,group命令和db.collection.group()方法。

3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

运行security.redactClientLogDatamongodmongos在记录之前会删除伴随给定日志事件的任何消息。这样可以防止mongodmongos将存储在数据库中的潜在敏感数据写入诊断日志。错误或操作代码,行号和源文件名等元数据仍在日志中可见。

security.redactClientLogData静态加密TLS/SSL(传输加密)结合使用可帮助遵守法规要求。

例如,MongoDB 部署可能在一个或多个集合中存储个人身份信息(PII)。 mongodmongos记录事件,例如与 CRUD 操作,分片元数据等有关的事件。mongodmongos可能会将 PII 公开为这些记录操作的一部分。与security.redactClientLogData一起运行的mongodmongos会删除伴随这些事件的所有消息,然后再输出到日志,从而有效地删除了 PII。

由于缺少与日志事件相关的数据,对以security.redactClientLogData运行的mongodmongos进行诊断可能会更加困难。有关security.redactClientLogData对日志输出的影响的示例,请参见process logging手册页。

在正在运行的mongodmongos上,将setParameterredactClientLogData参数一起使用以配置此设置。

3.6 版的新功能。

IP 地址/ CIDR(无类域间路由)的范围是mongod验证来自副本集其他成员以及mongos实例(如果是分片群集的一部分)的身份验证请求的范围。 mongod验证原始 IP 是否在列表中显式或属于列表中的 CIDR 范围。如果 IP 地址不存在,则服务器不会验证mongodmongos

security.clusterIpSourceWhitelist对没有authenticationmongod无效。

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>

默认:false

版本 3.2 中的新增功能:为 WiredTiger 存储引擎启用加密。您必须设置为true才能传递加密密钥和配置。

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

默认AES256-CBC

3.2 版中的新功能。

用于静态加密的密码模式:

Mode Description
AES256-CBC 密码块链接模式下的 256 位高级加密标准
AES256-GCM Galois /计数器模式下的 256 位高级加密标准

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

3.2 版中的新功能。

通过* KMIP 以外的进程 Management 密钥时,本地密钥文件的路径。仅在通过除 KMIP 以外的其他过程 Management 密钥时设置。如果数据已使用 KMIP 加密,则 MongoDB 将引发错误。

要求security.enableEncryptiontrue

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

3.2 版中的新功能。

KMIP 服务器中现有密钥的唯一 KMIP 标识符。包括将与标识符关联的密钥用作系统密钥。您只能在首次为mongod实例启用加密时使用此设置。要求security.enableEncryption为 true。

如果未指定,MongoDB 将请求 KMIP 服务器创建一个新密钥以用作系统密钥。

如果 KMIP 服务器无法找到具有指定标识符的密钥,或者数据已使用密钥加密,则 MongoDB 将引发错误。

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

默认:false

3.2 版中的新功能。

如果为 true,请旋转主密钥并重新加密内部密钥库。

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

3.2 版中的新功能。

运行 KMIP 服务器的密钥 Management 解决方案的主机名或 IP 地址。要求security.enableEncryption为 true。

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

默认:5696

3.2 版中的新功能。

KMIP 服务器正在监听的端口号。要求提供security.kmip.serverName。要求security.enableEncryption为 true。

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

3.2 版中的新功能。

字符串,包含用于向 MongoDB 验证 KMIP 服务器的 Client 端证书的路径。要求提供security.kmip.serverName

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

3.2 版中的新功能。

用来解密 Client 端证书(即security.kmip.clientCertificateFile)的密码,用于向 KMIP 服务器认证 MongoDB。仅当证书已加密时才使用该选项。

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

3.2 版中的新功能。

CA 文件的路径。用于验证与 KMIP 服务器的安全 Client 端连接。

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

security.sasl Options

security:
   sasl:
      hostName: <string>
      serviceName: <string>
      saslauthdSocketPath: <string>

用于配置 SASL 和 Kerberos 身份验证的标准服务器域名。仅对于 SASL 和 Kerberos 的配置,SASL 主机名才覆盖主机名。

要使mongo shell 和其他 MongoDB 工具连接到新的hostName,请参见mongo shell 和其他工具中的gssapiHostName选项。

使用 SASL 的服务的注册名称。此选项使您可以按实例覆盖Kerberos主体名称的默认Kerberos服务名称部分。如果未指定,则默认值为mongodb

MongoDB 仅允许在启动时设置此选项。 setParameter无法更改此设置。

此选项仅在 MongoDB Enterprise 中可用。

Important

确保您的驱动程序支持备用服务名称。要使mongo shell 和其他 MongoDB 工具连接到新的serviceName,请参见gssapiServiceName选项。

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>

3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

mongodmongos对其进行身份验证的 LDAP 服务器,或确定授权用户对给定数据库执行的操作。如果指定的 LDAP 服务器具有任何复制实例,则可以在逗号分隔的列表中指定每个复制服务器的主机和端口。

如果您的 LDAP 基础结构将 LDAP 目录划分为多个 LDAP 服务器,则将* one * LDAP 服务器或其任何复制实例指定为security.ldap.servers。 MongoDB 支持RFC 4511 4.1.10中定义的以下 LDAP 引用。不要使用security.ldap.servers列出基础结构中的每个 LDAP 服务器。

可以使用setParameter在正在运行的mongodmongos上配置此设置。

如果未设置,则mongodmongos不能使用LDAP 认证或授权

3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

当连接到 LDAP 服务器或在 LDAP 服务器上执行查询时,mongodmongos绑定的身份。

仅在满足以下任一条件时才需要:

您必须将queryUserqueryPassword结合使用。

如果未设置,则mongodmongos将不会尝试绑定到 LDAP 服务器。

可以使用setParameter在正在运行的mongodmongos上配置此设置。

Note

Windows MongoDB 部署可以使用bindWithOSDefaults而不是queryUserqueryPassword。您不能同时指定queryUserbindWithOSDefaults

3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

使用queryUser时用于绑定到 LDAP 服务器的密码。您必须将queryPasswordqueryUser结合使用。

如果未设置,则mongodmongos将不会尝试绑定到 LDAP 服务器。

可以使用setParameter在正在运行的mongodmongos上配置此设置。

Note

Windows MongoDB 部署可以使用bindWithOSDefaults而不是queryPasswordqueryPassword。您不能同时指定queryPasswordbindWithOSDefaults

默认:false

3.4 版中的新增功能:MongoDB Enterprise 中仅适用于 Windows 平台。

连接到 LDAP 服务器时,允许mongodmongos使用 Windows 登录凭据进行身份验证或绑定。

仅在以下情况下需要:

使用useOSDefaults替换queryUserqueryPassword

默认:简单

3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

mongodmongos方法用于对 LDAP 服务器进行身份验证。与queryUserqueryPassword一起使用以连接到 LDAP 服务器。

method支持以下值:

如果指定sasl,则可以使用security.ldap.bind.saslMechanisms配置可用的 SASL 机制。 mongodmongos默认使用DIGEST-MD5机制。

默认:DIGEST-MD5

3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

在对 LDAP 服务器进行身份验证时,可以使用逗号分隔的 SASL 机制mongodmongos列表。 mongodmongos与 LDAP 服务器必须在至少一种机制上达成共识。 mongodmongos在运行时动态加载主机上安装的所有 SASL 机制库。

mongodmongos主机和远程 LDAP 服务器主机上为选定的 SASL 机制安装并配置适当的库。您的 os 可能默认包括某些 SASL 库。遵循与每个 SASL 机制相关的文档,以获取有关安装和配置的指导。

如果将GSSAPI SASL 机制与Kerberos Authentication一起使用,请针对mongodmongos主机验证以下内容:

method设置为sasl以使用此选项。

Note

有关 SASL 机制的完整列表,请参见IANA listing。遵循 LDAP 或 Active Directory 服务的文档,以识别与该服务兼容的 SASL 机制。

MongoDB 不是 SASL 机制库的来源,MongoDB 文档也不是用于安装或配置任何给定 SASL 机制的 Authority 来源。有关文档和支持,请遵循 SASL 机制库的供应商或所有者。

有关 SASL 的更多信息,请参考以下资源:

默认:tls

3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

默认情况下,mongodmongos创建到 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以禁用mongodmongos与 LDAP 服务器之间的 TLS/SSL。

Warning

transportSecurity设置为none会在mongodmongos与 LDAP 服务器之间传输纯文本信息以及凭据。

默认:10000

3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

awaitLDAP 服务器响应请求的时间(以mongodmongos毫秒为单位)。

如果失败的根源是连接超时,则增大timeoutMS的值可以防止 MongoDB 服务器与 LDAP 服务器之间的连接失败。减小timeoutMS的值可减少 MongoDBawaitLDAP 服务器响应的时间。

可以使用setParameter在正在运行的mongodmongos上配置此设置。

3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

将提供给用于验证的mongodmongos的用户名 Map 到 LDAP 专有名称(DN)。在以下情况下,您可能需要使用userToDNMapping将用户名转换为 LDAP DN:

userToDNMapping期望用引号括起来的 JSON 字符串表示文档的有序数组。每个文档都包含一个正则表达式match和用于转换传入用户名的substitutionldapQuery模板。

数组中的每个文档具有以下形式:

{
  match: "<regex>"
  substitution: "<LDAP DN>" | ldapQuery: "<LDAP Query>"
}
Field Description Example
match ECMAScript 格式的正则表达式(regex)以与提供的用户名匹配。每个括号括起来的部分代表substitutionldapQuery使用的正则表达式捕获组。 "(.+)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表达式从身份验证用户名中提取的相应的正则表达式捕获组代替。 mongodmongos对 LDAP 服务器执行查询以检索已认证用户的 LDAP DN。 mongodmongos恰好需要一个返回的结果才能成功进行转换,或者mongodmongos跳过此转换。 "ou=engineering,dc=example, dc=com??one?(user={0})"

Note

RFC4514RFC4515RFC4516或 LDAP 查询的说明超出了 MongoDB 文档的范围。请直接查看 RFC 或使用您首选的 LDAP 资源。

对于数组中的每个文档,必须使用substitutionldapQuery。您不能在同一文档中同时指定两者。

执行身份验证或授权时,mongodmongos以给定的 Sequences 遍历数组中的每个文档,并针对match过滤器检查身份验证用户名。如果找到匹配项,则mongodmongos将应用转换并使用输出对用户进行身份验证。 mongodmongos不检查数组中的其余文档。

如果给定文档与提供的身份验证名称不匹配,或者文档描述的转换失败,则mongodmongoscontinue 浏览文档列表以查找其他匹配项。如果在任何文档中都找不到匹配项,则mongodmongos返回错误。

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)"mongodmongos对 LDAP 服务器执行此查询,并返回结果"cn=bob,ou=dba,dc=example,dc=com"

如果未设置userToDNMapping,则在尝试通过 LDAP 服务器对用户进行身份验证或授权时,mongodmongos不会对用户名应用任何转换。

可以使用setParameter数据库命令在正在运行的mongodmongos上配置此设置。

3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

mongod执行格式化为符合RFC4515RFC4516的相对 LDAP 查询 URL,以获取经过身份验证的用户所属的 LDAP 组。该查询相对于security.ldap.servers中指定的一个或多个主机。

使用 URL 中的{USER}占位符替换经过身份验证的用户名,如果指定了userToDNMapping,则使用转换后的用户名。

构造查询 URL 时,请确保 LDAP 参数的 Sequences 遵守 RFC4516:

[ dn  [ ? [attributes] [ ? [scope] [ ? [filter] [ ? [Extensions] ] ] ] ] ]

如果您的查询包含属性,则mongod假定查询检索该实体所属的 DN 列表。

如果查询不包含属性,则mongod假定查询检索用户所属的所有实体。

对于查询返回的每个 LDAP DN,mongodadmin数据库上为授权用户分配相应的角色。如果admin数据库上的角色与 DN 完全匹配,则mongod授予用户角色和分配给该角色的特权。有关创建角色的更多信息,请参见db.createRole()方法。

Example

此 LDAP 查询返回 LDAP 用户对象的memberOf属性中列出的所有组。

"{USER}?memberOf?base"

您的 LDAP 配置可能不包含memberOf属性作为用户架构的一部分,可能具有用于报告组成员身份的其他属性,或者可能无法通过属性跟踪组成员身份。根据您自己的唯一 LDAP 配置配置查询。

如果未设置,则mongod无法授权使用 LDAP 的用户。

可以使用setParameter数据库命令在正在运行的mongod上配置此设置。

Note

RFC4515RFC4516或 LDAP 查询的说明超出了 MongoDB 文档的范围。请直接查看 RFC 或使用您首选的 LDAP 资源。

默认:true

在 MongoDB Enterprise 中可用

一个标志,用于确定mongodmongos实例是否在启动时检查LDAP server(s)的可用性:

版本 3.6.3 中的新功能。

setParameter Option

要在 YAML 配置文件中设置参数,请使用以下格式:

setParameter:
   <parameter1>: <value1>
   <parameter2>: <value2>

例如,要在配置文件中指定enableLocalhostAuthBypass

setParameter:
   enableLocalhostAuthBypass: false

LDAP Parameters

默认:30

适用于使用LDAP Authorizationmongod个服务器。

外部用户缓存刷新之间的间隔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>

Default :

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,则必须使用自己的初始化脚本并禁用内置脚本。

默认:true

指定mongod是否在下次启动时重建不完整的索引。这适用于mongod在关闭或在索引构建过程中停止后重新启动的情况。在这种情况下,mongod总是删除所有不完整的索引,然后默认情况下尝试重建它们。要阻止mongod重建索引,请将此选项设置为false

storage.indexBuildRetry设置仅适用于mongod

不适用于使用内存存储引擎mongod实例。

默认dbPath下的_tmp_repairDatabase_<num>目录。

MongoDB 将在--repair操作期间使用的工作目录。 --repair完成时,storage.repairPath目录为空,dbPath包含已修复的文件。

storage.repairPath设置仅适用于mongod

仅适用于使用 MMAPv1 存储引擎的mongod实例。

默认:在 64 位系统上为true,在 32 位系统上为false

启用或禁用持久性journal,以确保数据文件保持有效和可恢复。仅当您指定storage.dbPath设置时,此选项才适用。 mongod默认启用日记功能。

storage.journal.enabled设置仅适用于mongod

不适用于使用内存存储引擎mongod实例。

如果副本集的任何有投票权的成员都没有journaling运行(即运行内存存储引擎或禁用日记功能运行),则必须将writeConcernMajorityJournalDefault设置为false

默认:100 或 30

3.2 版中的新功能。

mongod进程在两次日记操作之间允许的最长时间(以毫秒为单位)。取值范围是 1 到 500 毫秒。较低的值会增加日志的持久性,但会降低磁盘性能。默认的日志提交间隔为 100 毫秒。

在 MMAPv1 上,如果日志与数据文件位于不同的块设备(例如,物理卷,RAID 设备或 LVM 卷)上,则默认的日志提交间隔为 30 毫秒。此外,在 MMAPv1 上,当对j:true的写操作未决时,mongodcommitIntervalMs减小为设置值的三分之一。

在 WiredTiger 上,默认日志提交间隔为 100 毫秒。此外,包含或暗示j:true的写入将导致日志的立即同步。有关影响 WiredTiger 同步频率的详细信息或其他条件,请参阅Journaling Process

storage.journal.commitIntervalMs设置仅适用于mongod

不适用于使用内存存储引擎mongod实例。

默认:false

true时,MongoDB 使用单独的目录存储每个数据库的数据。这些目录位于storage.dbPath目录下,每个子目录名称均与数据库名称相对应。

在版本 3.0 中进行了更改:要更改现有部署的storage.directoryPerDB选项,必须使用新的storage.directoryPerDB 新的数据目录(storage.dbPath值)重新启动mongod实例,然后重新填充数据。

storage.directoryPerDB设置仅适用于mongod

不适用于使用内存存储引擎mongod实例。

默认:60

MongoDB 通过fsync操作将数据刷新到数据文件之前可以经过的时间。

请勿在生产系统上设置此值. 在几乎每种情况下,都应使用默认设置。

Warning

如果将storage.syncPeriodSecs设置为0,则 MongoDB 不会将内存 Map 文件同步到磁盘。

mongod进程非常快地将数据写入日志,并懒惰地将数据写入数据文件。 storage.syncPeriodSecsjournal文件或journaling没有影响,但是如果storage.syncPeriodSecs设置为0,日志将最终消耗所有可用的磁盘空间。如果出于测试目的将storage.syncPeriodSecs设置为0,则还应将--nojournal设置为true

serverStatus命令通过backgroundFlushing字段报告后台刷新线程的状态。

storage.syncPeriodSecs设置仅适用于mongod

不适用于使用内存存储引擎mongod实例。

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>

默认:true

*仅适用于 MMAPv1 存储引擎。

启用或禁用数据文件的预分配。默认情况下,MongoDB 不会预分配数据文件。

storage.mmapv1.preallocDataFiles设置仅适用于mongod

默认:16

*仅适用于 MMAPv1 存储引擎。

名称空间文件(以.ns结尾的文件)的默认大小。每个集合和索引都计为一个名称空间。

使用此设置可以控制新创建的名称空间文件的大小。此选项对现有文件没有影响。命名空间文件的最大大小为 2047 MB。 16 兆字节的默认值提供大约 24,000 个名称空间。

storage.mmapv1.nsSize设置仅适用于mongod

默认:false

*仅适用于 MMAPv1 存储引擎。

启用或禁用每个数据库可以具有的最大数据文件数量限制。使用storage.mmapv1.quota.enforced选项运行时,每个数据库最多有 8 个数据文件。使用storage.quota.maxFilesPerDB调整配额。

storage.mmapv1.quota.enforced设置仅适用于mongod

默认:8

*仅适用于 MMAPv1 存储引擎。

每个数据库的数据文件数限制。 storage.mmapv1.quota.maxFilesPerDB选项要求您设置storage.quota.enforced

storage.mmapv1.quota.maxFilesPerDB设置仅适用于mongod

默认: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

*仅适用于 MMAPv1 存储引擎。

提供测试功能。不用于一般用途,在系统异常关闭的情况下会影响数据文件的完整性。

storage.mmapv1.journal.debugFlags选项仅适用于mongod

从 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>

定义 WiredTiger 将用于所有数据的内部缓存的最大大小。索引构建(请参阅maxIndexBuildMemoryUsageMegabytes)消耗的内存与 WiredTiger 缓存内存分开。从 MongoDB 3.4 开始,这些值的范围可以从 0.25 GB 到 10000 GB,并且可以是浮点数。

从 MongoDB 3.4 开始,默认的 WiredTiger 内部缓存大小是以下两者中的较大者:

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 的容器(例如lxccgroups,Docker 等)中运行mongod,则必须将storage.wiredTiger.engineConfig.cacheSizeGB的值设置为小于该容器中可用 RAM 的值。容器。确切的数量取决于容器中运行的其他进程。参见memLimitMB

3.0.0 版中的新功能。

用于压缩 WiredTiger 日记数据的压缩类型。

可用的压缩机有:

有关更改日志压缩器的详细信息,请参见更换 WT Journal Compressor

默认:false

3.0.0 版中的新功能。

storage.wiredTiger.engineConfig.directoryForIndexestrue时,mongod将索引和集合存储在 data(即storage.dbPath)目录下的单独子目录中。具体地说,mongod将索引存储在名为index的子目录中,并将收集数据存储在名为collection的子目录中。

通过使用符号链接,可以为索引指定其他位置。具体来说,当mongod实例未在运行时,请将index子目录移动到目标位置,并在数据目录下创建一个名为index的符号链接到新目标。

指定“后备(或缓存溢出)表”文件WiredTigerLAS.wt的最大大小(以 GB 为单位)。

该设置可以接受以下值:

Value Description
0 默认值。如果设置为0,则文件大小不受限制。
数> = 0.1 最大大小(以 GB 为单位)。如果WiredTigerLAS.wt文件超出此大小,则mongod退出并带有致命 assert。您可以清除WiredTigerLAS.wt文件并重新启动mongod

要在运行时更改最大大小,请使用wiredTigerMaxCacheOverflowSizeGB参数。

从 3.6.15 开始提供 3.6 系列

3.0.0 版中的新功能。

用于压缩集合数据的默认压缩类型。创建集合时,您可以在每个集合的基础上覆盖此设置。

可用的压缩机有:

storage.wiredTiger.collectionConfig.blockCompressor影响所有创建的收藏集。如果您在现有 MongoDB 部署上更改storage.wiredTiger.collectionConfig.blockCompressor的值,则所有新集合将使用指定的压缩器。现有集合将 continue 使用创建时指定的压缩器,或那时的默认压缩器。

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>

默认:物理 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>

默认off

指定哪些操作应为profiled。提供以下探查器级别:

Level Description
off 探查器已关闭,并且不收集任何数据。这是默认的探查器级别。
slowOp 分析器收集的操作数据所花费的时间比slowms的时间长。
all 探查器收集所有操作的数据。

Important

分析可能会影响性能并与系统日志共享设置。在生产部署上配置和启用探查器之前,请仔细考虑所有性能和安全隐患。

有关潜在性能下降的更多信息,请参见Profiler Overhead

默认:100

logLevel设置为0时,MongoDB 以slowOpSampleRate确定的速率将* slow *操作记录到诊断日志中。对于从版本 3.6.11 开始的 MongoDB 3.6 部署,副本集的第二副本将设置日志所有花费比慢操作阈值更长的时间的 oplog 条目消息,而与采样率无关。

在更高的logLevel设置下,所有操作都将显示在诊断日志中,而与它们的延迟无关,但以下情况除外:记录次要节点的操作日志 Importing 消息缓慢。辅助服务器仅记录慢速操作日志条目;增加logLevel不会记录所有操作日志条目。

operationProfiling.slowOpThresholdMs设置仅适用于mongod

默认:1.0

operationProfiling.slowOpSampleRate不会影响副本集的次要成员的缓慢的 oplog 条目日志记录。次要成员记录所有花费比慢速操作阈值更长的操作日志条目,而不考虑operationProfiling.slowOpSampleRate

对于mongod个实例,operationProfiling.slowOpSampleRate影响诊断日志,如果启用,则将影响探查器。

replication Options

replication:
   oplogSizeMB: <int>
   replSetName: <string>
   secondaryIndexPrefetch: <string>
   enableMajorityReadConcern: <boolean>

复制操作日志(即oplog)的最大大小(以兆字节为单位)。 mongod进程基于最大可用空间量创建oplog。对于 64 位系统,操作日志通常是可用磁盘空间的 5%。

mongod首次创建操作日志后,更改replication.oplogSizeMB选项将不会影响操作日志的大小。使用replSetResizeOplogManagement 命令来更改正在运行的mongod副本集成员的操作日志大小。 replSetResizeOplog使您可以动态调整操作日志的大小,而无需重新启动mongod进程。

有关更多信息,请参见Oplog Size

replication.oplogSizeMB设置仅适用于mongod

mongod所属的副本集的名称。副本集中的所有主机必须具有相同的集名称。

如果您的应用程序连接到多个副本集,则每个副本集应具有不同的名称。某些驱动程序通过副本集名称对副本集连接进行分组。

replication.replSetName设置仅适用于mongod

默认:全部

Storage Engine Specific Feature

replication.secondaryIndexPrefetch仅可用于mmapv1存储引擎。

在应用操作日志中应用操作之前,secondary replica set成员的索引已加载到内存中。默认情况下,从服务器将与操作相关的所有索引加载到内存中,然后再应用操作日志中的操作。

将此设置设置为以下之一:

Value Description
none 辅助节点不会将索引加载到内存中。
all 次要加载与操作相关的所有索引。
_id_only 除了已经存在的_id索引之外,第二副本不会将其他索引加载到内存中。

replication.secondaryIndexPrefetch设置仅适用于mongod

*适用于 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>

2.6 版的新功能。

设置后,auditLog.destination启用auditing并指定mongosmongod发送所有审核事件的位置。

auditLog.destination可以具有以下值之一:

Value Description
syslog 将审核事件以 JSON 格式输出到 syslog。在 Windows 上不可用。审核消息的系统日志严重性级别为info,设施级别为user


syslog 消息限制可能导致审计消息被截断。审计系统不会在发生截断时检测到截断或错误。
| console |以 JSON 格式将审核事件输出到stdout
| file |以auditLog.format指定的格式将审核事件输出到auditLog.path指定的文件。

Note

仅在MongoDB Enterprise中可用。

2.6 版的新功能。

如果destinationfile,则auditing的输出文件格式。 auditLog.format选项可以具有以下值之一:

Value Description
JSON 将审核事件以 JSON 格式输出到auditLog.path中指定的文件。
BSON 将 BSON 二进制格式的审核事件输出到auditLog.path中指定的文件。

与将审计事件打印为 BSON 格式的文件相比,将审计事件打印为 JSON 格式的文件会使服务器性能下降更多。

Note

仅在MongoDB Enterprise中可用。

2.6 版的新功能。

auditing的输出文件(如果destination的值为file)。 auditLog.path选项可以采用完整路径名或相对路径名。

Note

仅在MongoDB Enterprise中可用。

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.subagenttrue时,SNMP 作为子代理运行。有关更多信息,请参见在 Linux 上使用 SNMP 监视 MongoDB

snmp.subagent设置仅适用于mongod

snmp.mastertrue时,SNMP 作为主机运行。有关更多信息,请参见在 Linux 上使用 SNMP 监视 MongoDB

snmp.master设置仅适用于mongod

mongos-only Options

在版本 3.4 中进行了更改:MongoDB 3.4 删除了sharding.chunkSizesharding.autoSplit设置。

replication:
   localPingThresholdMs: <int>

sharding:
   configDB: <string>

默认:15

mongos用于确定哪个辅助副本集成员传递来自 Client 端的读取操作的 ping 时间(以毫秒为单位)。 15的默认值对应于所有 Client 端drivers中的默认值。

mongos收到允许读取secondary成员的请求时,mongos将:

如果您为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>

默认:MongoDB

作为 Windows 服务运行时的服务名称mongosmongod。将此名称与net start <name>net stop <name>操作一起使用。

您必须将processManagement.windowsService.serviceName--install--remove选项结合使用。

默认:MongoDB

服务 Management 应用程序上为 MongoDB 列出的名称。

默认:MongoDB 服务器

运行mongosmongod服务描述。

您必须结合使用processManagement.windowsService.description--install选项。

对于包含空格的描述,必须将描述用引号引起来。

特定用户上下文中的mongosmongod服务。该用户必须具有“作为服务登录”特权。

您必须结合使用processManagement.windowsService.serviceUser--install选项。

使用processManagement.windowsService.serviceUser选项运行时,<user>表示mongosmongod的密码。

您必须结合使用processManagement.windowsService.servicePassword--install选项。

首页