mongod

在本页面

Synopsis

mongod是 MongoDB 系统的主要守护进程。它处理数据请求,Management 数据访问并执行后台 Management 操作。

本文档提供了mongod的所有命令行选项的完整概述。这些命令行选项主要对测试有用:在常规操作中,使用配置文件选项控制数据库的行为。

Options

  • mongod

Core Options

  • --help `,` `-h`

    • 返回有关 mongod 选项和用法的信息。
  • --version ``

    • 返回 mongod 版本号。
  • --config <filename> , -f <filename>

    • 指定运行时配置选项的配置文件。配置文件是 mongod 的运行时配置的首选方法。这些选项等效于命令行配置选项。有关更多信息,请参见配置文件选项

确保配置文件使用 ASCII 编码。 mongod 实例不支持使用非 ASCII 编码的配置文件,包括 UTF-8.

  • --verbose `,` `-v`

    • 增加在标准输出或日志文件中返回的内部报告的数量。通过多次包含该选项(例如-vvvvv)来提高-v形式的详细程度。
  • --quiet ``

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

此选项禁止显示:

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

  • --bind_ip <ip address>
    • 默认:localhost

Note

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

mongod 应该在其上侦听 Client 端连接的 IP 地址和/或完整的 Unix 域套接字路径。您可以将 mongod 附加到任何接口。要绑定到多个地址,请 Importing 一个用逗号分隔的值的列表。

Example

localhost,/tmp/mongod.sock

您可以指定 IPv4 和 IPv6 地址,也可以指定解析为 IPv4 或 IPv6 地址的主机名。

Example

localhost, 2001:0DB8:e132:ba26:0d5c:2774:e7f9:d513

Note

如果指定 IPv6 地址或将解析为 IPv6 地址的主机名设置为--bind_ip,则必须以--ipv6开头 mongod 以启用 IPv6 支持。将 IPv6 地址指定为--bind_ip不会启用 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

--bind_ip--bind_ip_all是互斥的。同时指定两个选项会导致 mongod 引发错误并终止。

  • --bind_ip_all ``
    • 3.6 版的新功能。

如果指定, mongod 实例将绑定到所有 IPv4 地址(即0.0.0.0)。如果 mongod--ipv6开头,则--bind_ip_all也会绑定到所有 IPv6 地址(即::)。

mongod 仅以--ipv6开头支持 IPv6.仅指定--bind_ip_all不会启用 IPv6 支持。

Warning

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

或者,您可以将--bind_ip选项设置为0.0.0.0,::以绑定到所有 IP 地址。

Note

--bind_ip--bind_ip_all是互斥的。也就是说,您可以指定一个或另一个,但不能两个都指定。

  • --clusterIpSourceWhitelist <string>
    • 3.6 版的新功能。

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

--clusterIpSourceWhitelist对没有authenticationmongod无效。

--clusterIpSourceWhitelist接受多个逗号分隔的 IPv4/6 地址或无类域间路由(CIDR)范围:

mongod --clusterIpSourceWhitelist 192.0.2.0/24,127.0.0.1,::1

Important

确保部署中的--clusterIpSourceWhitelist包括 IP 地址 CIDR 范围,其中包括每个副本集成员或mongos的 IP 地址,以确保群集组件之间的正常通信。

  • --ipv6 ``
    • 启用 IPv6 支持。 mongod 默认禁用 IPv6 支持。

设置--ipv6不会使 mongod **监听任何本地 IPv6 地址或接口。要将 mongod 配置为在 IPv6 接口上侦听,您必须执行以下任一操作:

  • --bind_ip配置一个或多个可解析为 IPv6 地址的 IPv6 地址或主机名,

  • --bind_ip_all设置为true

  • --listenBacklog <number>

    • 默认:目标系统SOMAXCONN常量

3.6 版的新功能。

侦听队列中可以存在的最大连接数。

Warning

使用此参数之前,请查阅本地系统的文档以了解限制和配置要求。

Important

为了防止出现未定义的行为,请为此参数指定一个值,该值介于1和本地系统SOMAXCONN常量之间。

listenBacklog参数的默认值在编译时设置为目标系统SOMAXCONN常量。 SOMAXCONN是* listen 系统调用的 backlog *参数记录的最大有效值。

某些系统可能会象征性地解释SOMAXCONN,而其他系统可能会以数字方式解释。在实践中实际使用的“监听积压”可能不同于对_常数或--listenBacklog的参数的任何数字解释,并且也可能受到 Linux 上net.core.somaxconn等系统设置的限制。

按照标准的标准,传递超过本地系统SOMAXCONN常量的listenBacklog参数的值是未定义的行为。较高的值可能会默默地被整数截断,可能被忽略,可能导致意外的资源消耗或产生其他不利后果。

根据经验,在工作负荷表现出连接峰值的系统上,本地系统可以比SOMAXCONN常量接受更高的* backlog *参数值,将listenBacklog参数设置为更高的值可以减少操作延迟。通过减少强制进入退避状态的连接数来减少 Client 端。

  • --maxConns <number>
    • mongod **可接受的最大同时连接数。如果此设置高于 os 配置的最大连接跟踪阈值,则该设置无效。

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

Note

在 2.6 版中进行了更改:MongoDB 删除了maxIncomingConnections设置的上限。

  • --logpath <path>
    • 将所有诊断日志记录信息发送到日志文件,而不是标准输出或主机的syslog系统。 MongoDB 在您指定的路径上创建日志文件。

默认情况下,MongoDB 将移动任何现有的日志文件,而不是覆盖它。要附加到日志文件,请设置--logappend选项。

  • --syslog ``
    • 将所有日志记录输出发送到主机的syslog系统,而不是标准输出或日志文件。 ,例如--logpath

Windows 上不支持--syslog选项。

Warning

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

  • --syslogFacility <string>
    • 默认:用户

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

  • --logappend ``

    • 当 mongod 实例重新启动时,将新条目追加到现有日志文件的末尾。如果没有此选项,mongod将备份现有日志并创建一个新文件。
  • --logRotate <string>

    • 默认:重命名

3.0.0 版中的新功能。

确定logRotate命令的行为。指定renamereopen

  • rename重命名日志文件。

  • reopen按照典型的 Linux/Unix 日志轮换行为关闭并重新打开日志文件。使用 Linux/Unix logrotateUtil 时,请使用reopen以避免日志丢失。

如果指定reopen,则还必须使用--logappend

  • --timeStampFormat <string>
    • 默认:iso8601-local

日志消息中时间戳的时间格式。指定以下值之一:

ValueDescription
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
  • --traceExceptions ``

    • 仅用于内部诊断。
  • --pidfilepath <path>

    • 指定一个文件位置来存储 mongod 进程的进程 ID(PID)。运行mongodmongos进程的用户必须能够写入此路径。如果未指定--pidfilepath选项,则该过程不会创建 PID 文件。此选项通常仅与--fork选项结合使用。

Linux

在 Linux 上,PID 文件 Management 通常由发行版的 init 系统负责:通常是/etc/init.d目录中的服务文件,或者是已systemctl注册的 systemd 单位文件。如果您未使用这些初始化系统之一,则仅使用--pidfilepath选项。有关更多信息,请参见适用于您的 os 的Installation Guide

macOS

在 macOS 上,PID 文件 Management 通常由brew处理。如果您不在 macOS 系统上使用brew,请仅使用--pidfilepath选项。有关更多信息,请参见适用于您的 os 的Installation Guide

除非下列条件之一成立,否则 mongod 进程始终在 UNIX 套接字上侦听:

2.6 版中的新功能:从官方.deb.rpm软件包安装的 mongod 默认将bind_ip配置设置为127.0.0.1

  • --unixSocketPrefix <path>
    • 默认:/ tmp

UNIX 套接字的路径。 --unixSocketPrefix仅适用于基于 Unix 的系统。

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

设置 UNIX 域套接字文件的权限。

--filePermissions仅适用于基于 Unix 的系统。

  • --fork ``
    • 启用daemon模式,该模式在后台运行 mongod 进程。默认情况下, mongod 不会作为守护程序运行:通常,您将通过--fork或使用处理守护进程的控制进程(例如upstartsystemd)将 mongod 作为守护程序运行。 。

Windows 上不支持--fork选项。

  • --auth ``
    • 启用授权以控制用户对数据库资源和操作的访问。启用授权后,MongoDB 要求所有 Client 端首先进行身份验证,以确定该 Client 端的访问权限。

通过mongo shell配置用户。如果不存在用户,则 localhost 接口将 continue 对数据库具有访问权限,直到您创建第一个用户为止。

有关更多信息,请参见Security

  • --noauth ``

    • 禁用身份验证。当前的默认值。存在是为了将来的兼容性和清晰度。
  • --transitionToAuth ``

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

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

Note

internal authentication --transitionToAuth一起运行的 mongod 要求 Client 端使用用户访问控制进行连接。更新 Client 端以使用适当的user连接到 mongod ,然后重新启动不带--transitionToAuthmongod

  • --cpu ``

    • 强制 mongod 进程每四秒钟报告一次写锁定中的 CPU 时间百分比。
  • --sysinfo ``

    • 返回诊断系统信息,然后退出。该信息提供页面大小,物理页面数和可用物理页面数。
  • --noscripting ``

    • 禁用脚本引擎。
  • --notablescan ``

    • 禁止需要收集扫描的操作。有关其他信息,请参见notablescan
  • --shutdown ``

--shutdown选项仅在 Linux 系统上可用。

有关其他关闭方法,另请参见停止 mongod 进程

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

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

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

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

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

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

  • --networkMessageCompressors <string>
    • 默认:活泼

3.4 版的新功能。

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

  • 部署的其他成员(如果实例是副本集或分片群集的一部分)

  • mongoShell

  • 支持OP_COMPRESSED消息格式的驱动程序。

MongoDB 支持以下压缩器:

  • snappy

  • zlib(在 MongoDB 3.6 或更高版本中可用)

从 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之间的消息不会被压缩。

  • --timeZoneInfo <path>
    • 加载时区数据库的完整路径。如果未提供此选项,则 MongoDB 将使用其内置时区数据库。

Linux 和 macOS 软件包随附的配置文件默认将时区数据库路径设置为/usr/share/zoneinfo

内置时区数据库是Olson/IANA 时区数据库的副本。它随 MongoDB 版本一起更新,但是时区数据库的发布周期与 MongoDB 的发布周期不同。可以从https://downloads.mongodb.org/olson_tz_db/timezonedb-latest.zip下载时区数据库的最新版本的副本。

wget https://downloads.mongodb.org/olson_tz_db/timezonedb-latest.zip
unzip timezonedb-latest.zip
mongod --timeZoneInfo timezonedb-2017b/
  • --transportLayer <string>
    • 默认:asio

3.6 版的新功能。

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

Warning

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

  • --serviceExecutor <string>
    • 默认:同步

3.6 版的新功能。

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

ValueDescription
synchronousmongod 使用同步网络并在每个连接的基础上 Management 其网络线程池。 MongoDB 的早期版本以这种方式 Management 线程。
adaptivemongod 使用带有自适应线程池的新实验性异步联网模式,该线程池根据每个请求 Management 线程。当活动连接数多于数据库请求数时,此模式应具有更一致的性能,并使用更少的资源。


Important





使用adaptive要求将--transportLayer设置为asio



|

LDAP 身份验证或授权选项

  • --ldapServers <host1>:<port>,<host2>:<port>,...,<hostN>:<port>
    • 3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

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

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

可以使用setParameter在运行中的 mongod 上配置此设置。

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

  • --ldapValidateLDAPServerConfig <boolean>
    • 在 MongoDB Enterprise 中可用

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

  • 如果true,则mongod实例执行可用性检查,并且仅在 LDAP 服务器可用时才 continue 启动。

  • 如果false,则mongod实例跳过可用性检查;即即使 LDAP 服务器不可用,实例也会启动。

版本 3.6.3 中的新功能。

  • --ldapQueryUser <string>
    • 3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

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

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

您必须将--ldapQueryUser--ldapQueryPassword结合使用。

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

可以使用setParameter在运行中的 mongod 上配置此设置。

Note

Windows MongoDB 部署可以使用--ldapBindWithOSDefaults而不是--ldapQueryUser--ldapQueryPassword。您不能同时指定--ldapQueryUser--ldapBindWithOSDefaults

  • --ldapQueryPassword <string>
    • 3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

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

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

可以使用setParameter在运行中的 mongod 上配置此设置。

Note

Windows MongoDB 部署可以使用--ldapBindWithOSDefaults而不是--ldapQueryPassword--ldapQueryPassword。您不能同时指定--ldapQueryPassword--ldapBindWithOSDefaults

  • --ldapBindWithOSDefaults <bool>
    • 默认:false

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

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

仅在以下情况下需要:

使用--ldapBindWithOSDefaults替换--ldapQueryUser--ldapQueryPassword

  • --ldapBindMethod <string>
    • 默认:简单

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

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

--ldapBindMethod支持以下值:

  • simple- mongod 使用简单身份验证。

  • sasl- mongod 使用 SASL 协议进行身份验证

如果指定sasl,则可以使用--ldapBindSaslMechanisms配置可用的 SASL 机制。 mongod 默认使用DIGEST-MD5机制。

  • --ldapBindSaslMechanisms <string>
    • 默认:DIGEST-MD5

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

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

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

如果将GSSAPI SASL 机制用于Kerberos Authentication,请对 mongod 主机验证以下内容:

  • Linux

  • Client 端密钥标签包含一个User Principal,供 mongod 在连接到 LDAP 服务器并执行 LDAP 查询时使用。

    • Windows

      • 如果连接到 Active Directory 服务器,则 Windows Kerberos 配置会在用户登录到系统时自动生成Ticket-Granting-Ticket。将--ldapBindWithOSDefaults设置为true以允许 mongod 在连接到 Active Directory 服务器并执行查询时使用生成的凭据。

--ldapBindMethod设置为sasl以使用此选项。

Note

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

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

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

  • --ldapTransportSecurity <string>
    • 默认:tls

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

默认情况下, mongod 创建到 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 的更多信息。

--ldapTransportSecurity设置为none以禁用 mongod 和 LDAP 服务器之间的 TLS/SSL。

Warning

--ldapTransportSecurity设置为none会在 mongod 和 LDAP 服务器之间传输明文信息和凭据。

  • --ldapTimeoutMS <long>
    • 默认:10000

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

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

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

可以使用setParameter在运行中的 mongod 上配置此设置。

  • --ldapUserToDNMapping <string>
    • 3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

将提供给** mongod 进行身份验证的用户名 Map 到 LDAP 专有名称(DN)。在以下情况下,您可能需要使用--ldapUserToDNMapping将用户名转换为 LDAP DN:

  • 通过简单的 LDAP 绑定执行 LDAP 身份验证,其中用户使用不是完整 LDAP DN 的用户名向 MongoDB 进行身份验证。

  • 使用需要 DN 的LDAP 授权查询模板

  • 使用不同的身份验证机制(例如 x.509,kerberos)将要向 Mongo DB 进行身份验证的 Client 端的用户名转换为完整的 LDAP DN 以进行授权。

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

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

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

Note

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

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

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

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

Example

下面显示了两个转换文档。第一个文档与以_结尾的任何字符串匹配,将后缀之前的任何内容放入正则表达式捕获组。第二个文档与以@DBA结尾的任何字符串匹配,将后缀之前的任何内容放入正则表达式捕获组。

Important

您必须将数组作为字符串传递给--ldapUserToDNMapping

"[
{
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})"

}

]"

用户名[email protected]的用户与第一个文档匹配。正则表达式捕获组{0}对应于字符串alice。结果输出为 DN "cn=alice,ou=engineering,dc=example,dc=com"

用户名[email protected]的用户与第二个文档匹配。正则表达式捕获组{0}对应于字符串bob。结果输出是 LDAP 查询"ou=dba,dc=example,dc=com??one?(user=bob)"mongod 对 LDAP 服务器执行此查询,返回结果"cn=bob,ou=dba,dc=example,dc=com"

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

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

  • --ldapAuthzQueryTemplate <string>
    • 3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。

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

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

构造查询 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 资源。

Storage Options

  • --storageEngine string
    • 默认wiredTiger

3.0 版中的新功能。

在版本 3.2 中进行了更改:从 MongoDB 3.2 开始,默认为wiredTiger

指定 mongod 数据库的存储引擎。可用值包括:

ValueDescription
mmapv1指定MMAPv1 存储引擎
wiredTiger指定WiredTiger 存储引擎
inMemory指定内存中存储引擎


版本 3.2 中的新功能:仅在 MongoDB Enterprise 中可用。

如果您尝试使用--dbpath启动 mongod ,其中包含存储引擎产生的数据文件,而不是--storageEngine指定的数据文件,则 mongod 将拒绝启动。

  • --dbpath <path>
    • 默认:Linux 和 macOS 上为/data/db,Windows 上为\data\db

mongod 实例存储其数据的目录。

如果使用 MongoDB 软件包 Management 器安装中随附的默认值configuration file,则相应的storage.dbPath设置将使用其他默认值。

在版本 3.0 中更改:--dbpath中的文件必须与--storageEngine中指定的存储引擎相对应。如果数据文件与--storageEngine不对应, mongod 将拒绝启动。

  • --directoryperdb ``
    • 使用单独的目录存储每个数据库的数据。这些目录位于--dbpath目录下,每个子目录名称均与数据库名称相对应。

在版本 3.0 中进行了更改:要更改现有部署的--directoryperdb选项,必须使用新的--directoryperdb 新的数据目录(--dbpath<new path>)重新启动mongod实例,然后重新填充数据。

  • 对于独立实例,可以在现有实例上使用mongodump,停止实例,使用新的--directoryperdb 重新启动新的数据目录,然后使用mongorestore填充新的数据目录。

  • 对于副本集,您可以通过以下方式滚动更新:停止辅助成员,使用新的--directoryperdb 新的数据目录重新启动,并使用initial sync填充新的数据目录。要更新所有成员,请首先从辅助成员开始。然后,降级主要成员,并更新降级的成员。

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

  • --noIndexBuildRetry ``
    • 阻止独立的 mongod 在下次启动时重建不完整的索引。这适用于 mongod 在关闭或在索引构建过程中停止后重新启动的情况。在这种情况下,mongod 始终删除所有不完整的索引,然后默认情况下尝试重建它们。要阻止 mongod 在启动时重建不完整的索引,请在命令行中包含此选项。

--noIndexBuildRetry不会阻止复制索引的构建。

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

  • --noprealloc ``
    • *仅适用于 MMAPv1 存储引擎。

从 2.6 版开始不推荐使用:默认情况下,MongoDB 不会预分配数据文件。存在该选项是为了实现兼容性。

禁用数据文件的预分配。

  • --nssize <value>
    • 默认:16

*仅适用于 MMAPv1 存储引擎。

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

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

  • --quota ``
    • *仅适用于 MMAPv1 存储引擎。

为每个数据库可以具有的数据文件数设置最大限制。使用--quota选项运行时,每个数据库最多有 8 个数据文件。使用--quotaFiles调整配额。

  • --quotaFiles <number>
    • 默认:8

*仅适用于 MMAPv1 存储引擎。

修改每个数据库的数据文件数限制。 --quotaFiles选项要求您设置--quota

  • --smallfiles ``
    • *仅适用于 MMAPv1 存储引擎。

设置 MongoDB 使用较小的默认文件大小。 --smallfiles选项可减小数据文件的初始大小,并将最大大小限制为 512 MB。 --smallfiles还将每个journal文件的大小从 1 GB 减小到 128 MB。如果您有大量数据库,每个数据库都存储少量数据,请使用--smallfiles

--smallfiles选项可以导致 mongod 实例创建大量文件,这可能会影响较大数据库的性能。

  • --syncdelay <value>
    • 默认:60

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

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

Warning

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

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

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

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

  • --upgrade ``
    • 如果需要,将--dbpath指定的文件的磁盘数据格式升级到最新版本。

如果数据文件为旧格式,则此选项仅影响 mongod 的操作。

在大多数情况下,您不应设置此值,因此可以对升级过程进行最大程度的控制。有关升级过程的更多信息,请参见 MongoDB release notes(在下载页面上)。

  • --repair ``
    • 在所有数据库上运行修复例程。这等效于在所有数据库上关闭并运行repairDatabase database 命令。

Warning

如果您在启用journaling的情况下运行,则几乎不需要运行repairDatabase,除非您需要从磁盘级数据损坏中恢复。如果发生异常关闭,服务器将能够自动将数据文件还原到干净状态。

在版本 2.1.2 中进行了更改。

如果您运行修复选项并且日志文件中包含数据,则 mongod 实例将拒绝启动。在这些情况下,您应该不带--repair选项的情况下启动 mongod ,这将允许 mongod 从日志中恢复数据。这样可以更快地完成,并且更有可能产生有效的数据文件。要在有日志文件的情况下 continue 进行修复操作,请彻底关闭 mongod 并使用--repair选项重新启动。

--repair选项将数据从源数据文件复制到repairPath中的新数据文件,然后用修复的数据文件替换原始数据文件。

  • --repairpath <path>
    • 默认dbPath下的_tmp_repairDatabase_<num>目录。

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

--repairpath必须在dbPath内。您可以指定到--repairpath的符号链接,以在其他文件系统上使用路径。

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

  • --journal ``
    • 启用持久性journal以确保数据文件保持有效和可恢复。仅当您指定--dbpath选项时,此选项才适用。 mongod 默认启用日记功能。

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

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

从版本 3.6.14 开始,如果副本集成员使用内存存储引擎(投票或不投票),但是副本集的writeConcernMajorityJournalDefault设置为 true,则副本集成员将记录启动警告。

  • --nojournal ``
    • 禁用journalingmongod 默认启用日记功能。

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

在版本 3.6 中,使用WiredTiger 存储引擎弃用了副本集成员--nojournal选项。

使用 WiredTiger storage engine副本集成员不应使用--nojournal选项。有关日记的更多信息,请参见Manage Journaling

  • --journalOptions <arguments>
    • *仅适用于 MMAPv1 存储引擎。

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

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

  • --journalCommitInterval <value>
    • 默认:100 或 30

在版本 3.2 中更改。

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

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

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

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

WiredTiger Options

  • --wiredTigerCacheSizeGB <float>
    • 定义 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

--wiredTigerCacheSizeGB限制了 WiredTiger 内部缓存的大小。os 将可用的可用内存用于文件系统缓存,从而允许压缩的 MongoDB 数据文件保留在内存中。此外,os 将使用任何可用的 RAM 来缓冲文件系统块和文件系统缓存。

为了容纳更多的 RAM 使用者,您可能必须减小 WiredTiger 内部缓存的大小。

默认的 WiredTiger 内部缓存大小值假定每台计算机只有一个mongod实例。如果一台机器包含多个 MongoDB 实例,则应减小设置以容纳其他mongod实例。

如果您在不能访问系统中所有可用 RAM 的容器(例如lxccgroups,Docker 等)中运行mongod,则必须将--wiredTigerCacheSizeGB的值设置为小于该容器中可用 RAM 的值。容器。确切的数量取决于容器中运行的其他进程。参见memLimitMB

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

该设置可以接受以下值:

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

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

从 3.6.15 开始提供 3.6 系列

  • --wiredTigerJournalCompressor <compressor>
    • 默认:活泼

3.0.0 版中的新功能。

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

可用的压缩机有:

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

  • --wiredTigerDirectoryForIndexes ``
    • 3.0.0 版中的新功能。

当您以--wiredTigerDirectoryForIndexes开头 mongod 时, mongod 将索引和集合存储在 data(即--dbpath)目录下的单独子目录中。具体来说, mongod 将索引存储在名为index的子目录中,并将收集数据存储在名为collection的子目录中。

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

  • --wiredTigerCollectionBlockCompressor <compressor>
    • 默认:活泼

3.0.0 版中的新功能。

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

可用的压缩机有:

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

  • --wiredTigerIndexPrefixCompression <boolean>
    • 默认:true

3.0.0 版中的新功能。

为索引数据启用或禁用prefix compression

--wiredTigerIndexPrefixCompression指定true以为索引数据启用prefix compression,或为false禁用索引数据的前缀压缩。

--wiredTigerIndexPrefixCompression设置会影响所有创建的索引。如果您在现有 MongoDB 部署上更改--wiredTigerIndexPrefixCompression的值,则所有新索引都将使用前缀压缩。现有索引不受影响。

Replication Options

  • --replSet <setname>
    • 配置复制。指定副本集名称作为该集的参数。副本集中的所有主机必须具有相同的集名称。

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

  • --oplogSize <value>
    • 指定复制操作日志(即oplog)的最大大小(以兆字节为单位)。 mongod 进程会根据可用的最大空间量创建一个oplog。对于 64 位系统,操作日志通常是可用磁盘空间的 5%。

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

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

  • --replIndexPrefetch ``
    • 默认:全部

Storage Engine Specific Feature

--replIndexPrefetch仅可用于mmapv1存储引擎。

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

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

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

*适用于 MongoDB 3.6.1-3.6.x *

从 MongoDB 3.6 开始,MongoDB 默认情况下启用对"majority"读取关注的支持。

对于 MongoDB 3.6.1-3.6.x,您可以禁用读取关注"majority",以防止存储高速缓存压力使具有三成员主次仲裁器(PSA)架构的部署无法实现。有关禁用阅读关注"majority"的更多信息,请参见禁用多数阅读关注

要禁用,请将--enableMajorityReadConcern设置为 false。

Important

通常,除非必要,请避免禁用"majority"阅读关注。但是,如果您有一个具有主要-次要仲裁器(PSA)体系结构的三成员副本集或具有三成员 PSA 分片的分片群集,请禁用该功能以防止存储高速缓存压力使部署无法固定。

禁用"majority"读取关注会禁用对Change Streams的支持。

--enableMajorityReadConcern对 MongoDB 3.6.0 没有影响。

Master-Slave Replication

这些选项提供对常规主-从数据库复制的访问。虽然此功能在 MongoDB 中仍然可以访问,但是副本集是数据库复制的首选配置。

自版本 3.6 起不推荐使用:MongoDB 3.6 不推荐使用主从复制。

自 MongoDB 3.2 起,分片群集组件已弃用主从复制。

  • --master ``

    • mongod 配置为作为复制master运行。
  • --slave ``

    • mongod 配置为作为复制slave运行。
  • --source <host><:port>

    • --slave选项一起使用时,--source选项指定此实例将复制的服务器。
  • --only <arg>

    • --slave选项一起使用时,--only选项仅指定要复制的单个database
  • --slavedelay <value>

    • 为了与--slave选项一起使用,--slavedelay选项配置了一个“延迟”(以秒为单位),此从站 await 从master节点应用操作。
  • --autoresync ``

    • --slave选项一起使用。设置后,如果_选项比主服务器落后 10 秒钟以上,则--autoresync选项允许该从属服务器自动重新同步。如果--oplogSize指定的 oplog 太小,则此设置可能会出现问题。

如果oplog的大小不足以存储主机的当前状态和从机的状态之间的变化差异,则此实例将强制自己不必要地重新同步。如果您未指定--autoresync,则从服务器将在十分钟内不尝试多次自动重新同步。

  • --fastsync ``
    • replica set复制的上下文中,如果已使用该集合中另一个成员的整个dbPath的最新副本作为该成员的种子,请设置此选项。否则,“ mongod”将尝试执行初始同步,就好像该成员是新成员一样。

Warning

如果数据未完全同步并且 mongod **以fastsync开头,则辅助节点或从属节点将与主节点永久不同步,这可能会导致严重的一致性问题。

分片群集选项

  • --configsvr ``
    • 如果启动配置服务器,则为必填项.

声明此 mongod 实例充当分片群集的config server。使用此选项运行时,Client 端(即其他群集组件)无法将数据写入configadmin以外的任何数据库。除非指定,带有此选项的 mongod 的默认端口是27019,默认--dbpath目录是/data/configdb

Important

从 3.4 开始,必须将配置服务器部署为副本集。不再支持将已弃用的镜像mongod实例用作配置服务器(SCCC)。

副本集配置服务器(CSRS)必须运行WiredTiger 存储引擎

--configsvr选项创建本地oplog

请勿将--configsvr选项与--shardsvr一起使用。配置服务器不能是分片服务器。

在版本 3.6.3 中更改:不要将--configsvrskipShardingConfigurationChecks参数一起使用。也就是说,如果暂时将mongod作为独立的维护操作启动,请包含参数skipShardingConfigurationChecks并排除--configsvr。维护完成后,删除skipShardingConfigurationChecks参数,然后以--configsvr重新启动。

  • --configsvrMode <string>
    • 仅在 MongoDB 3.2 版本中可用

如果设置为sccc,则表示将配置服务器部署为三个镜像的mongod实例,即使一个或多个配置服务器也是副本集的成员。 configsvrMode仅接受值sccc

如果未设置,则作为副本集运行的配置服务器期望使用“配置服务器副本集”协议来写入配置服务器,而不是“镜像 mongod”写入协议。

  • --shardsvr ``
    • 如果启动分片服务器,则为必填项.

将此“ mongod”实例配置为分片群集中的分片。这些实例的默认端口是27018

Important

从 MongoDB 3.6 开始,您必须将碎片部署为副本集。请参阅--replSet选项,以将 mongod 部署为副本集的一部分。

在版本 3.6.3 中更改:不要将--shardsvrskipShardingConfigurationChecks参数一起使用。也就是说,如果暂时将mongod作为独立的维护操作启动,请包含参数skipShardingConfigurationChecks并排除--shardsvr。维护完成后,删除skipShardingConfigurationChecks参数,然后以--shardsvr重新启动。

  • --moveParanoia ``
    • 如果指定,则在块迁移期间,将所有分片从该分片迁移的文档保存到--dbpathmoveChunk目录中。

MongoDB 不会自动删除保存在moveChunk目录中的数据。

  • --noMoveParanoia ``
    • 在 3.2 版中进行了更改:从 3.2 版开始,MongoDB 使用--noMoveParanoia作为默认值。

在块迁移期间,分片不会保存从该分片迁移的文档。

TLS/SSL Options

See

为 TLS/SSL 配置 mongod 和 mongos获取 MongoDB 支持的完整文档。

为**启用 TLS/SSL。

使用--sslOnNormalPorts时, mongod 需要对默认 MongoDB 端口或--port指定的端口上的所有连接进行 TLS/SSL 加密。默认情况下,禁用--sslOnNormalPorts

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

  • --sslMode <mode>
    • 2.6 版的新功能。

启用用于所有网络连接的 TLS/SSL 或混合 TLS/SSL。 --sslMode选项的参数可以是以下之一:

ValueDescription
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 配置

  • --sslPEMKeyFile <filename>
    • 指定同时包含 TLS/SSL 证书和密钥的.pem文件。使用相对或绝对路径指定.pem文件的文件名。

启用 TLS/SSL 时,必须指定--sslPEMKeyFile

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

  • --sslPEMKeyPassword <value>
    • 指定用于解密证书密钥文件的密码(即--sslPEMKeyFile)。仅当证书密钥文件已加密时,才使用--sslPEMKeyPassword选项。在所有情况下, mongod 都会从所有日志记录和报告输出中删除密码。

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

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

  • --clusterAuthMode <option>
    • 默认:keyFile

2.6 版的新功能。

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

ValueDescription
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 配置

  • --sslClusterFile <filename>
    • 2.6 版的新功能。

指定.pem文件,该文件包含群集或副本集的membership authentication的 x.509 证书密钥文件。

如果--sslClusterFile没有为内部群集身份验证指定.pem文件,则群集将使用--sslPEMKeyFile选项中指定的.pem文件。

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

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

  • --sslClusterPassword <value>
    • 2.6 版的新功能。

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

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

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

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

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

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

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

  • --sslClusterCAFile <filename>
    • 3.6.9 版中的新功能。

指定.pem文件,该文件包含来自证书颁发机构的根证书链,用于验证构建连接的 Client 端提供的证书。使用相对或绝对路径指定.pem文件的文件名。

如果--sslClusterCAFile未指定.pem文件来验证来自构建连接的 Client 端的证书,则群集将使用--sslCAFile选项中指定的.pem文件。

--sslClusterCAFile使您可以使用单独的证书颁发机构来验证 TLS 握手的 Client 端到服务器和服务器到 Client 端部分。

要求设置--sslCAFile

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

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

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

  • --sslAllowInvalidCertificates ``
    • 绕过群集中其他服务器上的 TLS/SSL 证书的验证检查,并允许使用无效的证书进行连接。

Note

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

使用--sslAllowInvalidCertificates设置时,MongoDB 会记录有关使用无效证书的警告。

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

  • --sslAllowInvalidHostnames ``
    • 3.0 版中的新功能。

连接到副本集或分片群集的其他成员以进行进程间身份验证时,请禁用 TLS/SSL 证书中的主机名验证。如果 mongod 证书中的主机名与配置的主机名不匹配,这将允许 mongod 连接到其他成员。

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

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

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

如果您的混合部署包含没有或不能向 mongod 颁发证书的 Client 端,请使用--sslAllowConnectionsWithoutCertificates选项。

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

  • --sslDisabledProtocols <protocol(s)>
    • 3.0.7 版中的新功能。

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

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

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

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

  • --sslFIPSMode ``
    • 指示**使用安装的 OpenSSL 库的 FIPS 模式。您的系统必须具有符合 FIPS 的 OpenSSL 库,才能使用--sslFIPSMode选项。

Note

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

Profiler Options

  • --profile <level>
    • 默认:0

配置database profiler级别。提供以下探查器级别:

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

Important

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

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

  • --slowms <integer>
    • 默认:100
  • slow 操作时间阈值,以毫秒为单位。运行时间超过此阈值的操作被视为 slow *。

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

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

  • --slowOpSampleRate <double>
    • 默认:1.0
  • slow *操作的一部分,应该进行概要分析或记录。 --slowOpSampleRate接受 0 到 1 之间的值(包括 0 和 1)。

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

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

Audit Options

  • --auditDestination ``
    • 启用auditing并指定 mongod 将所有审核事件发送到的位置。

--auditDestination可以具有以下值之一:

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


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

Note

仅在MongoDB Enterprise中可用。

  • --auditFormat ``
    • 2.6 版的新功能。

如果--auditDestinationfile,则指定auditing的输出文件格式。 --auditFormat选项可以具有以下值之一:

ValueDescription
JSON将审核事件以 JSON 格式输出到--auditPath中指定的文件。
BSON将 BSON 二进制格式的审核事件输出到--auditPath中指定的文件。

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

Note

仅在MongoDB Enterprise中可用。

  • --auditPath ``
    • 2.6 版的新功能。

如果--auditDestination的值为file,则指定auditing的输出文件。 --auditPath选项可以采用完整路径名或相对路径名。

Note

仅在MongoDB Enterprise中可用。

  • --auditFilter ``
    • 2.6 版的新功能。

指定用于限制操作类型audit system记录的过滤器。该选项采用以下形式的查询文档的字符串表示形式:

{ <field1>: <expression1>, ... }

<field>可以是审核消息中的任何字段,包括param文档中返回的字段。 <expression>查询条件表达式

要指定审核过滤器,请将过滤器文档括在单引号中,以将文档作为字符串传递。

要在configuration file中指定审核过滤器,必须使用配置文件的 YAML 格式。

Note

仅在MongoDB Enterprise中可用。

SNMP Options

Note

由于SERVER-29352,因此 macOS 上的 MongoDB Enterprise 支持 SNMP。

inMemory Options

  • --inMemorySizeGB <float>
    • 默认:物理 RAM 的 50%减去 1 GB

在版本 3.4 中更改:值的范围可以从 256MB 到 10TB,并且可以是浮点数。

内存存储引擎数据分配的最大内存量,包括索引,oplog(如果mongod是副本集,副本集或分片群集元数据的一部分)。

默认情况下,内存存储引擎使用 50%的物理 RAM 减去 1 GB。

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

加密密钥 Management 选项

  • --enableEncryption <boolean>
    • 默认:false

3.2 版中的新功能。

为 WiredTiger 存储引擎启用加密。您必须设置为true才能传递加密密钥和配置。

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

  • --encryptionCipherMode <string>
    • 默认:AES256-CBC

3.2 版中的新功能。

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

ModeDescription
AES256-CBC密码块链接模式下的 256 位高级加密标准
AES256-GCMGalois /计数器模式下的 256 位高级加密标准

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

  • --encryptionKeyFile <string>
    • 3.2 版中的新功能。

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

要求enableEncryptiontrue

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

  • --kmipKeyIdentifier <string>
    • 3.2 版中的新功能。

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

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

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

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

  • --kmipRotateMasterKey <boolean>
    • 默认:false

3.2 版中的新功能。

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

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

  • --kmipServerName <string>
    • 3.2 版中的新功能。

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

连接到 KMIP 服务器时,mongod验证指定的--kmipServerName是否与 KMIP 服务器提供的证书中的主题备用名称SAN(或者,如果不存在SAN,则为通用名称CN)匹配。如果存在SAN,则mongodCN不匹配。如果主机名与SAN(或CN)不匹配,则mongod将无法连接。

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

  • --kmipPort <number>
    • 默认:5696

3.2 版中的新功能。

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

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

  • --kmipClientCertificateFile <string>
    • 3.2 版中的新功能。

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

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

  • --kmipClientCertificatePassword <string>
    • 3.2 版中的新功能。

Client 端证书的密码(如果存在)已传递到kmipClientCertificateFile。用于向 KMIP 服务器认证 MongoDB。要求提供kmipClientCertificateFile

Enterprise Feature

仅在 MongoDB Enterprise 中可用。

  • --kmipServerCAFile <string>
    • 3.2 版中的新功能。

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