On this page
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 ,以尝试限制输出量。
此选项禁止显示:
replication activity
连接接受的事件
连接关闭事件
--port
<port>
- Default :
27017 (如果mongod不是分片成员或配置服务器成员)
27018 (如果mongod是shard member)
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 地址(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
--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 地址不存在,则服务器不会验证mongod或mongos。
--clusterIpSourceWhitelist对没有authentication的mongod无效。
--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选项。
Windows 上不支持--syslog选项。
Warning
syslog
守护程序在记录消息时(而不是在 MongoDB 发出消息时)会生成时间戳。这会导致误导日志条目的时间戳,尤其是在系统负载沉重的情况下。我们建议对生产系统使用--logpath选项,以确保准确的时间戳。
--syslogFacility
<string>
- 默认:用户
指定将消息记录到 syslog 时使用的工具级别。os 的 syslog 实现必须支持您指定的值。要使用此选项,必须启用--syslog选项。
--logappend
``- 当 mongod 实例重新启动时,将新条目追加到现有日志文件的末尾。如果没有此选项,mongod将备份现有日志并创建一个新文件。
--logRotate
<string>
- 默认:重命名
3.0.0 版中的新功能。
确定logRotate命令的行为。指定rename
或reopen
:
rename
重命名日志文件。reopen
按照典型的 Linux/Unix 日志轮换行为关闭并重新打开日志文件。使用 Linux/Unix logrotateUtil 时,请使用reopen
以避免日志丢失。
如果指定reopen
,则还必须使用--logappend。
--timeStampFormat
<string>
- 默认: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 |
--traceExceptions
``- 仅用于内部诊断。
--pidfilepath
<path>
- 指定一个文件位置来存储 mongod 进程的进程 ID(PID)。运行
mongod
或mongos
进程的用户必须能够写入此路径。如果未指定--pidfilepath选项,则该过程不会创建 PID 文件。此选项通常仅与--fork选项结合使用。
- 指定一个文件位置来存储 mongod 进程的进程 ID(PID)。运行
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。
--keyFile
<file>
- 指定密钥文件的路径,该密钥文件存储sharded cluster或replica set中 MongoDB 实例用来相互认证的共享密钥。 --keyFile表示--auth。有关更多信息,请参见Internal Authentication。
--setParameter
<options>
- 指定MongoDB 服务器参数中描述的 MongoDB 参数之一。您可以指定多个
setParameter
字段。
- 指定MongoDB 服务器参数中描述的 MongoDB 参数之一。您可以指定多个
--nounixsocket
``- 禁用在 UNIX 域套接字上的侦听。 --nounixsocket仅适用于基于 Unix 的系统。
除非下列条件之一成立,否则 mongod 进程始终在 UNIX 套接字上侦听:
未设置net.bindIp
net.bindIp未指定
127.0.0.1
2.6 版中的新功能:从官方.deb和.rpm软件包安装的 mongod 默认将bind_ip
配置设置为127.0.0.1
。
--unixSocketPrefix
<path>
- 默认:/ tmp
UNIX 套接字的路径。 --unixSocketPrefix仅适用于基于 Unix 的系统。
如果此选项没有值,则 mongod 进程将创建一个以/tmp
作为前缀的套接字。除非满足以下条件之一,否则 MongoDB 会在 UNIX 套接字上创建并侦听:
未设置net.bindIp
net.bindIp未指定
127.0.0.1
--filePermissions
<path>
- 默认:
0700
- 默认:
设置 UNIX 域套接字文件的权限。
--filePermissions仅适用于基于 Unix 的系统。
--fork
``
Windows 上不支持--fork选项。
--auth
``- 启用授权以控制用户对数据库资源和操作的访问。启用授权后,MongoDB 要求所有 Client 端首先进行身份验证,以确定该 Client 端的访问权限。
通过mongo shell配置用户。如果不存在用户,则 localhost 接口将 continue 对数据库具有访问权限,直到您创建第一个用户为止。
有关更多信息,请参见Security。
--noauth
``- 禁用身份验证。当前的默认值。存在是为了将来的兼容性和清晰度。
--transitionToAuth
``- 3.4 版的新增功能:允许 mongod 接受并创建与部署中其他mongod和mongos实例之间的经过身份验证和未经身份验证的连接。用于执行副本集或分片群集从 no-auth 配置到internal authentication的滚动过渡。需要指定internal authentication机制,例如--keyFile。
例如,如果将keyfiles用于internal authentication,则 mongod **使用匹配的密钥文件与部署中的任何mongod或mongos创建经过身份验证的连接。如果安全机制不匹配,则 mongod 将使用未经身份验证的连接。
与--transitionToAuth一起运行的 mongod 不会强制用户访问控制。用户可以在不进行任何访问控制检查的情况下连接到您的部署,并执行读取,写入和 Management 操作。
Note
与internal authentication和无 --transitionToAuth一起运行的 mongod 要求 Client 端使用用户访问控制进行连接。更新 Client 端以使用适当的user连接到 mongod ,然后重新启动不带--transitionToAuth的 mongod 。
--cpu
``- 强制 mongod 进程每四秒钟报告一次写锁定中的 CPU 时间百分比。
--sysinfo
``- 返回诊断系统信息,然后退出。该信息提供页面大小,物理页面数和可用物理页面数。
--noscripting
``- 禁用脚本引擎。
--notablescan
``- 禁止需要收集扫描的操作。有关其他信息,请参见notablescan。
--shutdown
``- --shutdown选项可以安全干净地终止 mongod 进程。使用此选项调用** mongod 时,必须直接设置--dbpath选项,也可以通过configuration file和--config选项设置。
--shutdown选项仅在 Linux 系统上可用。
有关其他关闭方法,另请参见停止 mongod 进程。
--redactClientLogData
``- 3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
运行--redactClientLogData的 mongod 将在记录之前删除伴随给定日志事件的任何消息。这样可以防止 mongod 将存储在数据库中的潜在敏感数据写入诊断日志。错误或操作代码,行号和源文件名等元数据仍在日志中可见。
--redactClientLogData与静态加密和TLS/SSL(传输加密)结合使用可帮助遵守法规要求。
例如,MongoDB 部署可能在一个或多个集合中存储个人身份信息(PII)。 mongod 记录事件,例如与 CRUD 操作,分片元数据等相关的事件。 mongod 可能会将 PII 公开为这些记录操作的一部分。与--redactClientLogData一起运行的 mongod 会删除所有伴随这些事件的消息,然后再输出到日志中,从而有效地删除了 PII。
由于缺少与日志事件相关的数据,对以--redactClientLogData运行的 mongod 进行诊断可能会更加困难。有关--redactClientLogData对日志输出的影响的示例,请参见process logging手册页。
在运行中的 mongod 上,将setParameter与redactClientLogData参数一起使用以配置此设置。
--networkMessageCompressors
<string>
- 默认:活泼
3.4 版的新功能。
指定用于在此 mongod 实例与以下对象之间进行通信的默认压缩器:
部署的其他成员(如果实例是副本集或分片群集的一部分)
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之间的消息不会被压缩。
--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/
See also
--transportLayer
<string>
- 默认:asio
3.6 版的新功能。
mongod 使用的网络实现。要恢复到 3.6 版之前的实现,请将此选项更改为legacy
。
Warning
除非 MongoDB 支持团队要求您更改它,否则请不要更改此设置。
--serviceExecutor
<string>
- 默认:同步
3.6 版的新功能。
确定 mongod 用于执行 Client 端请求的线程和执行模型。 --serviceExecutor
选项接受以下值之一:
Value | Description |
---|---|
synchronous |
mongod 使用同步网络并在每个连接的基础上 Management 其网络线程池。 MongoDB 的早期版本以这种方式 Management 线程。 |
adaptive |
mongod 使用带有自适应线程池的新实验性异步联网模式,该线程池根据每个请求 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 绑定的身份。
仅在满足以下任一条件时才需要:
Using LDAP authorization.
使用 LDAP 查询username transformation。
LDAP 服务器禁止匿名绑定
您必须将--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 登录凭据进行身份验证或绑定。
仅在以下情况下需要:
Using LDAP authorization.
使用 LDAP 查询username transformation。
LDAP 服务器禁止匿名绑定
使用--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
-
KRB5_CLIENT_KTNAME
环境变量解析为主机的 Client 端Linux Keytab 文件的名称。有关 Kerberos 环境变量的更多信息,请遵循Kerberos documentation。
-
Client 端密钥标签包含一个User Principal,供 mongod 在连接到 LDAP 服务器并执行 LDAP 查询时使用。
Windows
- 如果连接到 Active Directory 服务器,则 Windows Kerberos 配置会在用户登录到系统时自动生成Ticket-Granting-Ticket。将--ldapBindWithOSDefaults设置为
true
以允许 mongod 在连接到 Active Directory 服务器并执行查询时使用生成的凭据。
- 如果连接到 Active Directory 服务器,则 Windows Kerberos 配置会在用户登录到系统时自动生成Ticket-Granting-Ticket。将--ldapBindWithOSDefaults设置为
将--ldapBindMethod设置为sasl
以使用此选项。
Note
有关 SASL 机制的完整列表,请参见IANA listing。遵循 LDAP 或 Active Directory 服务的文档,以识别与该服务兼容的 SASL 机制。
MongoDB 不是 SASL 机制库的来源,MongoDB 文档也不是用于安装或配置任何给定 SASL 机制的 Authority 来源。有关文档和支持,请遵循 SASL 机制库的供应商或所有者。
有关 SASL 的更多信息,请参考以下资源:
对于 Linux,请参阅Cyrus SASL 文档。
对于 Windows,请参阅Windows 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
和用于转换传入用户名的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 对 LDAP 服务器执行查询以检索已认证用户的 LDAP DN。 mongod 仅需要一个返回的结果才能成功进行转换,或者 mongod 会跳过此转换。 "ou=engineering,dc=example, dc=com??one?(user={0})" |
对于数组中的每个文档,必须使用substitution
或ldapQuery
。您不能在同一文档中同时指定两者。
执行身份验证或授权时, 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})"
}
]"
用户名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 对 LDAP 服务器执行此查询,返回结果"cn=bob,ou=dba,dc=example,dc=com"
。
如果未设置--ldapUserToDNMapping,则在尝试对 LDAP 服务器进行身份验证或授权时, mongod 不会对用户名进行任何转换。
可以使用setParameter数据库命令在运行中的 mongod 上配置此设置。
--ldapAuthzQueryTemplate
<string>
- 3.4 版的新增功能:仅在 MongoDB Enterprise 中可用。
** mongod 执行以RFC4515和RFC4516格式格式化的相对 LDAP 查询 URL,以获取经过身份验证的用户所属的 LDAP 组。该查询相对于--ldapServers中指定的一个或多个主机。
使用 URL 中的{USER}
占位符替换经过身份验证的用户名,如果指定了username mapping,则使用转换后的用户名。
构造查询 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 上配置此设置。
Storage Options
--storageEngine
string
- 默认:
wiredTiger
- 默认:
3.0 版中的新功能。
在版本 3.2 中进行了更改:从 MongoDB 3.2 开始,默认为wiredTiger
。
指定 mongod 数据库的存储引擎。可用值包括:
Value | Description |
---|---|
mmapv1 |
指定MMAPv1 存储引擎。 |
wiredTiger |
指定WiredTiger 存储引擎。 |
inMemory |
指定内存中存储引擎。 |
版本 3.2 中的新功能:仅在 MongoDB Enterprise 中可用。
如果您尝试使用--dbpath启动 mongod ,其中包含存储引擎产生的数据文件,而不是--storageEngine指定的数据文件,则 mongod 将拒绝启动。
--dbpath
<path>
- 默认:Linux 和 macOS 上为
/data/db
,Windows 上为\data\db
- 默认:Linux 和 macOS 上为
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填充新的数据目录。要更新所有成员,请首先从辅助成员开始。然后,降级主要成员,并更新降级的成员。
--noIndexBuildRetry
``- 阻止独立的 mongod 在下次启动时重建不完整的索引。这适用于 mongod 在关闭或在索引构建过程中停止后重新启动的情况。在这种情况下,mongod 始终删除所有不完整的索引,然后默认情况下尝试重建它们。要阻止 mongod 在启动时重建不完整的索引,请在命令行中包含此选项。
--noIndexBuildRetry不会阻止复制索引的构建。
--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 进程非常快速地将数据写入日志,并懒惰地写入数据文件。 --syncdelay对journal文件或journaling无效,但是如果--syncdelay设置为0
,则日记将最终消耗所有可用的磁盘空间。如果出于测试目的将--syncdelay设置为0
,则还应将--nojournal设置为true
。
serverStatus命令通过backgroundFlushing字段报告后台刷新线程的状态。
--upgrade
``- 如果需要,将--dbpath指定的文件的磁盘数据格式升级到最新版本。
如果数据文件为旧格式,则此选项仅影响 mongod 的操作。
在大多数情况下,您不应设置此值,因此可以对升级过程进行最大程度的控制。有关升级过程的更多信息,请参见 MongoDB release notes(在下载页面上)。
--repair
``- 在所有数据库上运行修复例程。这等效于在所有数据库上关闭并运行repairDatabase database 命令。
Warning
在使用repairDatabase之前,请制作 dbpath 目录的备份副本。
避免对副本集运行repairDatabase。如果您要修复replica set成员,并且可以访问数据的完整副本(例如,最近的备份或replica set的完整成员),则应从该完整副本中恢复(请参见重新同步副本集的成员),并且 不 使用repairDatabase。
如果没有其他选择,则仅使用repairDatabase命令和相关的包装器,包括db.repairDatabase()和mongod --repair。这些操作将在修复过程中删除并且不会保存任何损坏的数据。
如果您在启用journaling的情况下运行,则几乎不需要运行repairDatabase,除非您需要从磁盘级数据损坏中恢复。如果发生异常关闭,服务器将能够自动将数据文件还原到干净状态。
在版本 2.1.2 中进行了更改。
如果您运行修复选项并且日志文件中包含数据,则 mongod 实例将拒绝启动。在这些情况下,您应该不带--repair选项的情况下启动 mongod ,这将允许 mongod 从日志中恢复数据。这样可以更快地完成,并且更有可能产生有效的数据文件。要在有日志文件的情况下 continue 进行修复操作,请彻底关闭 mongod 并使用--repair选项重新启动。
--repair选项将数据从源数据文件复制到repairPath中的新数据文件,然后用修复的数据文件替换原始数据文件。
--repairpath
<path>
- 默认:dbPath下的
_tmp_repairDatabase_<num>
目录。
- 默认:dbPath下的
指定在--repair操作期间 MongoDB 将使用的工作目录。 --repair
完成时,--repairpath目录为空,dbPath包含已修复的文件。
--repairpath必须在dbPath内。您可以指定到--repairpath的符号链接,以在其他文件系统上使用路径。
仅适用于使用 MMAPv1 存储引擎的mongod实例。
如果副本集的任何有投票权的成员都没有journaling运行(即运行内存存储引擎或禁用日记功能运行),则必须将writeConcernMajorityJournalDefault设置为false
。
从版本 3.6.14 开始,如果副本集成员使用内存存储引擎(投票或不投票),但是副本集的writeConcernMajorityJournalDefault设置为 true,则副本集成员将记录启动警告。
--nojournal
``- 禁用journaling。 mongod 默认启用日记功能。
在版本 3.6 中,使用WiredTiger 存储引擎弃用了副本集成员的--nojournal选项。
使用 WiredTiger storage engine的副本集成员不应使用--nojournal选项。有关日记的更多信息,请参见Manage Journaling。
--journalOptions
<arguments>
- *仅适用于 MMAPv1 存储引擎。
提供测试功能。不用于一般用途,在系统异常关闭的情况下会影响数据文件的完整性。
--journalCommitInterval
<value>
- 默认:100 或 30
在版本 3.2 中更改。
mongod 进程在日记操作之间允许的最长时间(以毫秒为单位)。取值范围是 1 到 500 毫秒。较低的值会增加日志的持久性,但会降低磁盘性能。默认的日志提交间隔为 100 毫秒。
在 MMAPv1 上,如果日志与数据文件位于不同的块设备(例如,物理卷,RAID 设备或 LVM 卷)上,则默认的日志提交间隔为 30 毫秒。此外,在 MMAPv1 上,当使用j:true
的写操作挂起时, mongod 将commitIntervalMs减小为设置值的三分之一。
在 WiredTiger 上,默认日志提交间隔为 100 毫秒。此外,包含或暗示j:true
的写入将导致日志的立即同步。有关影响 WiredTiger 同步频率的详细信息或其他条件,请参阅Journaling Process。
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 的容器(例如lxc
,cgroups
,Docker 等)中运行mongod,则必须将--wiredTigerCacheSizeGB的值设置为小于该容器中可用 RAM 的值。容器。确切的数量取决于容器中运行的其他进程。参见memLimitMB。
--wiredTigerMaxCacheOverflowFileSizeGB
<float>
- 指定“后备(或缓存溢出)表”文件
WiredTigerLAS.wt
的最大大小(以 GB 为单位)。
- 指定“后备(或缓存溢出)表”文件
该设置可以接受以下值:
Value | Description |
---|---|
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>
一旦 mongod 首次创建了操作日志,更改--oplogSize选项将不会影响操作日志的大小。使用replSetResizeOplogManagement 命令来更改运行中的 mongod 副本集成员的操作日志大小。 replSetResizeOplog使您可以动态调整操作日志的大小,而无需重新启动mongod进程。
有关更多信息,请参见Oplog Size。
--replIndexPrefetch
``- 默认:全部
Storage Engine Specific Feature
--replIndexPrefetch仅可用于mmapv1
存储引擎。
在应用操作日志中的操作之前,确定replica set的secondary个成员将哪些索引加载到内存中。默认情况下,从服务器将与操作相关的所有索引加载到内存中,然后再应用操作日志中的操作。
将此选项设置为以下之一:
Value | Description |
---|---|
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
选项指定此实例将复制的服务器。
- 与--slave选项一起使用时,
--only
<arg>
--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 端(即其他群集组件)无法将数据写入config
和admin
以外的任何数据库。除非指定,带有此选项的 mongod 的默认端口是27019
,默认--dbpath目录是/data/configdb
。
Important
从 3.4 开始,必须将配置服务器部署为副本集。不再支持将已弃用的镜像mongod实例用作配置服务器(SCCC)。
副本集配置服务器(CSRS)必须运行WiredTiger 存储引擎。
--configsvr选项创建本地oplog。
请勿将--configsvr选项与--shardsvr一起使用。配置服务器不能是分片服务器。
在版本 3.6.3 中更改:不要将--configsvr与skipShardingConfigurationChecks参数一起使用。也就是说,如果暂时将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 中更改:不要将--shardsvr与skipShardingConfigurationChecks参数一起使用。也就是说,如果暂时将mongod作为独立的维护操作启动,请包含参数skipShardingConfigurationChecks并排除--shardsvr。维护完成后,删除skipShardingConfigurationChecks参数,然后以--shardsvr重新启动。
--moveParanoia
``- 如果指定,则在块迁移期间,将所有分片从该分片迁移的文档保存到
--dbpath
的moveChunk
目录中。
- 如果指定,则在块迁移期间,将所有分片从该分片迁移的文档保存到
MongoDB 不会自动删除保存在moveChunk
目录中的数据。
--noMoveParanoia
``- 在 3.2 版中进行了更改:从 3.2 版开始,MongoDB 使用
--noMoveParanoia
作为默认值。
- 在 3.2 版中进行了更改:从 3.2 版开始,MongoDB 使用
TLS/SSL Options
See
为 TLS/SSL 配置 mongod 和 mongos获取 MongoDB 支持的完整文档。
--sslOnNormalPorts
``- 自 2.6 版起弃用:改为使用--sslMode requireSSL。
为**启用 TLS/SSL。
使用--sslOnNormalPorts时, mongod 需要对默认 MongoDB 端口或--port指定的端口上的所有连接进行 TLS/SSL 加密。默认情况下,禁用--sslOnNormalPorts。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslMode
<mode>
- 2.6 版的新功能。
启用用于所有网络连接的 TLS/SSL 或混合 TLS/SSL。 --sslMode选项的参数可以是以下之一:
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 配置。
--sslPEMKeyFile
<filename>
- 指定同时包含 TLS/SSL 证书和密钥的
.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
- 指定同时包含 TLS/SSL 证书和密钥的
启用 TLS/SSL 时,必须指定--sslPEMKeyFile。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslPEMKeyPassword
<value>
- 指定用于解密证书密钥文件的密码(即--sslPEMKeyFile)。仅当证书密钥文件已加密时,才使用--sslPEMKeyPassword选项。在所有情况下, mongod 都会从所有日志记录和报告输出中删除密码。
在 2.6 版中进行了更改:如果 PEM 文件中的私钥已加密并且您未指定--sslPEMKeyPassword选项,则 mongod 将提示您 Importing 密码。参见TLS/SSL 证书密码短语。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--clusterAuthMode
<option>
- 默认: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 配置。
--sslClusterFile
<filename>
- 2.6 版的新功能。
指定.pem
文件,该文件包含群集或副本集的membership authentication的 x.509 证书密钥文件。
如果--sslClusterFile没有为内部群集身份验证指定.pem
文件,则群集将使用--sslPEMKeyFile选项中指定的.pem
文件。
如果使用 x.509 身份验证,则必须指定--sslCAFile
或ssl.CAFile
。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslClusterPassword
<value>
- 2.6 版的新功能。
指定用于解密用--sslClusterFile
指定的 x.509 证书密钥文件的密码。仅当证书密钥文件已加密时,才使用--sslClusterPassword选项。在所有情况下, mongod 都会从所有日志记录和报告输出中删除密码。
如果 x.509 密钥文件已加密,并且您未指定--sslClusterPassword选项,则 mongod 将提示您 Importing 密码。参见TLS/SSL 证书密码短语。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslCAFile
<filename>
- 指定包含来自证书颁发机构的根证书链的
.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 配置。
--sslClusterCAFile
<filename>
- 3.6.9 版中的新功能。
指定.pem
文件,该文件包含来自证书颁发机构的根证书链,用于验证构建连接的 Client 端提供的证书。使用相对或绝对路径指定.pem
文件的文件名。
如果--sslClusterCAFile未指定.pem
文件来验证来自构建连接的 Client 端的证书,则群集将使用--sslCAFile选项中指定的.pem
文件。
--sslClusterCAFile使您可以使用单独的证书颁发机构来验证 TLS 握手的 Client 端到服务器和服务器到 Client 端部分。
要求设置--sslCAFile。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslCRLFile
<filename>
- 指定包含证书吊销列表的
.pem
文件。使用相对或绝对路径指定.pem
文件的文件名。
- 指定包含证书吊销列表的
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslAllowInvalidCertificates
``- 绕过群集中其他服务器上的 TLS/SSL 证书的验证检查,并允许使用无效的证书进行连接。
Note
从 MongoDB 3.6.6 开始,如果在使用 x.509 身份验证时指定--sslAllowInvalidCertificates
或ssl.allowInvalidCertificates: true
,则无效的证书仅足以构建 TLS/SSL 连接,而对于身份验证则“不足”。
使用--sslAllowInvalidCertificates设置时,MongoDB 会记录有关使用无效证书的警告。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslAllowInvalidHostnames
``- 3.0 版中的新功能。
连接到副本集或分片群集的其他成员以进行进程间身份验证时,请禁用 TLS/SSL 证书中的主机名验证。如果 mongod 证书中的主机名与配置的主机名不匹配,这将允许 mongod 连接到其他成员。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslAllowConnectionsWithoutCertificates
``- 对于不提供证书的 Client 端, mongod 在构建连接时会绕过 TLS/SSL 证书验证。
但是,对于提供证书的 Client 端, mongod 使用--sslCAFile
指定的根证书链执行证书验证,并拒绝具有无效证书的 Client 端。
如果您的混合部署包含没有或不能向 mongod 颁发证书的 Client 端,请使用--sslAllowConnectionsWithoutCertificates选项。
有关 TLS/SSL 和 MongoDB 的更多信息,请参阅为 TLS/SSL 配置 mongod 和 mongos和Client 端的 TLS/SSL 配置。
--sslDisabledProtocols
<protocol(s)>
- 3.0.7 版中的新功能。
防止运行 TLS/SSL 的 MongoDB 服务器接受使用一个或多个特定协议的传入连接。 --sslDisabledProtocols识别以下协议:TLS1_0
,TLS1_1
,TLS1_2
,并且从版本 3.6.9 TLS1_3
开始。
指定无法识别的协议将阻止服务器启动。
要指定多个协议,请使用逗号分隔的协议列表。
副本集和分片群集的成员必须至少说一种共同的协议。
See also
--sslFIPSMode
``- 指示**使用安装的 OpenSSL 库的 FIPS 模式。您的系统必须具有符合 FIPS 的 OpenSSL 库,才能使用--sslFIPSMode选项。
Note
兼容 FIPS 的 TLS/SSL 仅在MongoDB Enterprise中可用。有关更多信息,请参见为 FIPS 配置 MongoDB。
Profiler Options
--profile
<level>
- 默认:0
配置database profiler级别。提供以下探查器级别:
Level | Description |
---|---|
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不会记录所有操作日志条目。
See also
--slowOpSampleRate
<double>
- 默认:1.0
- slow *操作的一部分,应该进行概要分析或记录。 --slowOpSampleRate接受 0 到 1 之间的值(包括 0 和 1)。
--slowOpSampleRate不会影响副本集的次要成员的缓慢的 oplog 条目日志记录。次要成员记录所有花费比慢速操作阈值更长的操作日志条目,而不考虑--slowOpSampleRate。
对于mongod个实例,--slowOpSampleRate影响诊断日志,如果启用,则将影响探查器。
Audit Options
--auditDestination
``- 启用auditing并指定 mongod 将所有审核事件发送到的位置。
--auditDestination可以具有以下值之一:
Value | Description |
---|---|
syslog |
将审核事件以 JSON 格式输出到 syslog。在 Windows 上不可用。审核消息的系统日志严重性级别为info ,设施级别为user 。 |
syslog 消息限制可能导致审计消息被截断。审计系统不会在发生截断时检测到截断或错误。
| console
|以 JSON 格式将审核事件输出到stdout
。
| file
|以--auditFormat指定的格式将审核事件输出到--auditPath指定的文件。
Note
仅在MongoDB Enterprise中可用。
--auditFormat
``- 2.6 版的新功能。
如果--auditDestination是file
,则指定auditing的输出文件格式。 --auditFormat选项可以具有以下值之一:
Value | Description |
---|---|
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。
--snmp-subagent
``- 将 SNMP 作为子代理运行。有关更多信息,请参见在 Linux 上使用 SNMP 监视 MongoDB。
--snmp-master
``- 将 SNMP 作为主机运行。有关更多信息,请参见在 Linux 上使用 SNMP 监视 MongoDB。
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 版中的新功能。
用于静态加密的密码模式:
Mode | Description |
---|---|
AES256-CBC |
密码块链接模式下的 256 位高级加密标准 |
AES256-GCM |
Galois /计数器模式下的 256 位高级加密标准 |
Enterprise Feature
仅在 MongoDB Enterprise 中可用。
--encryptionKeyFile
<string>
- 3.2 版中的新功能。
通过* KMIP 以外的进程 Management 密钥时,本地密钥文件的路径。仅在通过除 KMIP 以外的其他过程 Management 密钥时设置。如果数据已使用 KMIP 加密,则 MongoDB 将引发错误。
要求enableEncryption
为true
。
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 中可用。
See also
--kmipServerName
<string>
- 3.2 版中的新功能。
运行 KMIP 服务器的密钥 Management 解决方案的主机名或 IP 地址。要求enableEncryption
为 true。
连接到 KMIP 服务器时,mongod验证指定的--kmipServerName是否与 KMIP 服务器提供的证书中的主题备用名称SAN
(或者,如果不存在SAN
,则为通用名称CN
)匹配。如果存在SAN
,则mongod与CN
不匹配。如果主机名与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 端连接。