参考 > 参考 > MongoDB软件包组件 > mongod
在本页面
mongod是MongoDB系统的主要守护进程。它处理数据请求,管理数据访问并执行后台管理操作。
本文档提供的所有命令行选项的完整概述mongod。这些命令行选项主要对测试有用:在常规操作中,使用配置文件选项来控制数据库的行为。
也可以看看
注意
从版本4.0开始,MongoDB在可用TLS 1.1+的系统上禁用对TLS 1.0加密的支持。有关更多详细信息,请参阅禁用TLS 1.0。
mongod¶从4.2版开始
--tlsClusterCAFile/ net.tls.clusterCAFile。(也适用于3.4.18 +,3.6.9 +,4.0.3 +)--help, -h¶返回有关mongod的选项和用法的信息。
--version¶返回mongod版本号。
--config <filename>, -f <filename>¶指定运行时配置选项的配置文件。配置文件是mongod的运行时配置的首选方法 。这些选项等效于命令行配置选项。有关更多信息,请参见配置文件选项。
确保配置文件使用ASCII编码。该mongod的 情况下不支持非ASCII编码,包括UTF-8的配置文件。
--configExpand <none|rest|exec>¶默认值:无
4.2版中的新功能。
在配置文件中启用扩展指令。扩展指令使您可以为配置文件选项设置外部来源的值。
--configExpand 支持以下扩展指令:
| 值 | 描述 |
|---|---|
none |
默认。mongod不会扩展扩展指令。 如果任何配置文件设置使用扩展指令,mongod将无法启动。 |
rest |
mongod__rest在解析配置文件时会扩展扩展指令。 |
exec |
mongod__exec在解析配置文件时会扩展扩展指令。 |
您可以将多个扩展指令指定为以逗号分隔的列表,例如。如果配置文件包含未指定的扩展指令,则mongod
将返回错误并终止。rest, exec--configExpand
有关扩展指令的更多信息,请参阅外部来源的配置文件值以获取配置文件。
--verbose, -v¶增加标准输出或日志文件中返回的内部报告的数量。-v通过多次包含选项来增加详细程度(例如)-vvvvv。
注意
从4.2版开始,MongoDB在日志消息中包括Debug冗长级别(1-5)。例如,如果详细级别为2,则MongoDB logs D2。在以前的版本中,MongoDB日志消息仅为D调试级别指定。
--port <port>¶默认值:
mongod不是分片成员或配置服务器成员,则为27017mongod是shard membermongod是config server memberMongoDB实例在其上侦听客户端连接的TCP端口。
--bind_ip <hostnames|ipaddresses|Unix domain socket paths>¶默认值:本地主机
注意
从MongoDB 3.6开始,默认情况下mongod绑定到localhost。请参阅默认绑定到本地主机。
mongod应该在其上侦听客户端连接的主机名和/或IP地址和/或完整的Unix域套接字路径。您可以将mongod附加到任何接口。要绑定到多个地址,请输入一个用逗号分隔的值的列表。
例
localhost,/tmp/mongod.sock
您可以指定IPv4和IPv6地址,也可以指定解析为IPv4或IPv6地址的主机名。
例
localhost, 2001:0DB8:e132:ba26:0d5c:2774:e7f9:d513
如果指定了
本地链接的IPv6地址
(fe80::/10),则必须将区域索引附加
到该地址(即fe80::<address>%<adapter-name>)。
例
localhost,fe80::a00:27ff:fee0:1fcf%enp0s3
小费
如果可能,请使用逻辑DNS主机名而不是IP地址,尤其是在配置副本集成员或分片群集成员时。逻辑DNS主机名的使用避免了由于IP地址更改而导致的配置更改。
有关IP绑定的更多信息,请参阅 IP绑定文档。
要绑定到所有IPv4地址,请输入0.0.0.0。
要绑定到所有IPv4和IPv6地址,请::,0.0.0.0在MongoDB 4.2中输入星号或以星号开头"*"(将星号括在引号中,以避免文件名模式扩展)。或者,使用
net.bindIpAll设置。
注意
--bind_ip并且--bind_ip_all是互斥的。同时指定这两个选项会使mongod引发错误并终止。--bind覆盖配置文件设置net.bindIp。--bind_ip_all¶3.6版的新功能。
如果指定,mongod实例将绑定到所有IPv4地址(即0.0.0.0)。如果mongod以开头
--ipv6,则--bind_ip_all还将绑定到所有IPv6地址(即::)。
mongod如果以开头,则仅支持IPv6 --ipv6。--bind_ip_all单独指定
不会启用IPv6支持。
有关IP绑定的更多信息,请参阅 IP绑定文档。
或者,您可以将--bind_ip选项设置为::,0.0.0.0
或从MongoDB 4.2开始,设置为星号"*"(将星号括在引号中,以避免文件名模式扩展)。
注意
--bind_ip并且--bind_ip_all是互斥的。也就是说,您可以指定一个,但不能两个都指定。
--clusterIpSourceWhitelist <string>¶3.6版的新功能。
IP地址/ CIDR(无类域间路由)的范围
列表,mongod可用来验证来自副本集其他成员(如果是分片群集的一部分)的mongos
实例的身份验证请求。该mongod验证发端IP是明确地在清单或属于列表中的一个CIDR范围。如果IP地址不存在,则服务器不会对mongod或进行身份验证
mongos。
--clusterIpSourceWhitelistmongod未经身份验证对启动
没有影响。
--clusterIpSourceWhitelist接受多个逗号分隔的IPv4 / 6地址或无类域间路由(CIDR)范围:
重要
确保--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版的新功能。
侦听队列中可以存在的最大连接数。
警告
使用此参数之前,请查阅本地系统的文档以了解限制和配置要求。
重要
为了防止出现未定义的行为,请为此参数指定一个介于1和之间的值以及本地系统SOMAXCONN
常数。
listenBacklog参数的默认值在编译时设置为目标系统SOMAXCONN常数。
SOMAXCONN是为监听系统调用的backlog参数记录的最大有效值。
一些系统可能SOMAXCONN象征性地解释,而另一些可能是数字性的。实际应用中的实际监听积压可能不同于对的SOMAXCONN常数或参数的任何数字解释--listenBacklog,并且可能还会受到系统设置(如net.core.somaxconn在Linux上)的约束。
按照标准的字母,传递listenBacklog超过SOMAXCONN本地系统常数的参数
值是未定义的行为。较高的值可能会默默地被整数截断,可能被忽略,可能导致意外的资源消耗或产生其他不利后果。
在工作负载上表现出连接峰值的系统上,根据经验可以知道,本地系统可以使用比常数更高的积压参数值,将参数SOMAXCONN设置listenBacklog为较高的值可以减少客户端观察到的操作等待时间,从而减少操作延迟。强制进入退避状态的连接数。
--maxConns <number>¶mongod可接受的最大同时连接数。如果此设置高于操作系统的配置的最大连接跟踪阈值,则此设置无效。
请勿为此选项分配太低的值,否则在正常的应用程序操作过程中会遇到错误。
--logpath <path>¶将所有诊断日志记录信息发送到日志文件,而不是标准输出或主机的syslog系统。MongoDB在您指定的路径上创建日志文件。
默认情况下,MongoDB将移动任何现有的日志文件,而不是覆盖它。要附加到日志文件,请设置--logappend选项。
--syslog¶将所有日志记录输出发送到主机的syslog系统,而不是标准输出或日志文件(--logpath)。
--syslogWindows不支持该选项。
警告
在syslog当它将消息记录,还不时的MongoDB发出消息后台生成时间戳。这会导致误导日志条目的时间戳,尤其是在系统负载沉重的情况下。我们建议--logpath对生产系统使用该选件,以确保准确的时间戳。
从4.2版开始,MongoDB 在其到的日志消息中包括该组件syslog。
--syslogFacility <string>¶默认值:用户
指定将消息记录到syslog时使用的工具级别。操作系统的syslog实现必须支持您指定的值。要使用此选项,必须启用该--syslog选项。
--logRotate <string>¶默认值:重命名
确定logRotate命令的行为。指定rename或reopen:
rename 重命名日志文件。
reopen按照典型的Linux / Unix日志轮换行为,关闭并重新打开日志文件。使用reopen使用的Linux / Unix logrotate的工具,以避免日志丢失时。
如果指定reopen,则还必须使用--logappend。
--timeStampFormat <string>¶缺省值:iso8601-local
日志消息中时间戳的时间格式。指定以下值之一:
| 值 | 描述 |
|---|---|
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)的文件位置。运行the mongod或mongos
process 的用户必须能够写入此路径。如果--pidfilepath未指定该选项,则该过程不会创建PID文件。该选项通常仅与该--fork选项结合使用。
在Linux上,PID文件管理通常由发行版的init系统负责:通常是/etc/init.d
目录中的服务文件,或已在中注册的systemd单位文件systemctl。仅--pidfilepath当您不使用这些初始化系统之一时才使用该选项。有关更多信息,请参见适用于您的操作系统的相应
安装指南。
macOs
在macOS上,PID文件管理通常由处理brew。仅--pidfilepath当您不在brewmacOS系统上使用时,才使用该选项。有关更多信息,请参见适用于您的操作系统的相应
安装指南。
--keyFile <file>¶指定密钥文件的路径,该密钥存储共享的机密,MongoDB实例使用这些共享的机密在分片群集或副本集中进行相互验证
。--keyFile暗示
--auth。有关更多信息,请参见内部/成员身份验证。
从MongoDB 4.2开始,用于内部成员身份验证的密钥文件使用YAML格式,以允许密钥文件中包含多个密钥。YAML格式接受以下内容:
YAML格式与使用文本文件格式的现有单键密钥文件兼容。
--setParameter <options>¶指定MongoDB服务器参数中描述的
MongoDB参数之一。您可以指定多个setParameter
字段。
--nounixsocket¶禁用在UNIX域套接字上的侦听。--nounixsocket仅适用于基于Unix的系统。
该mongod的过程总是Unix套接字上监听,除非以下情况之一是真实的:
--nounixsocket 被设置net.bindIp 没有设置net.bindIp没有指定localhost或其关联的IP地址--unixSocketPrefix <path>¶默认值:/ tmp
UNIX套接字的路径。--unixSocketPrefix仅适用于基于Unix的系统。
如果此选项没有值,则
mongod进程将创建一个带有/tmp前缀的套接字。除非满足以下条件之一,否则MongoDB会在UNIX套接字上创建并侦听:
net.unixDomainSocket.enabled 是 false--nounixsocket 被设置net.bindIp 没有设置net.bindIp没有指定localhost或其关联的IP地址--filePermissions <path>¶默认值:0700
设置UNIX域套接字文件的权限。
--filePermissions 仅适用于基于Unix的系统。
--fork¶启用在后台运行mongod进程的守护程序模式。默认情况下,mongod不会作为守护程序运行:通常,您将通过使用mongod--fork或通过使用处理守护程序的控制进程(例如upstart和systemd)来将mongod作为守护程序
运行。
--forkWindows不支持该选项。
--auth¶启用授权以控制用户对数据库资源和操作的访问。启用授权后,MongoDB要求所有客户端首先进行身份验证,以确定该客户端的访问权限。
通过mongo shell配置用户。如果不存在用户,则localhost接口将继续对数据库具有访问权限,直到您创建第一个用户为止。
有关 更多信息,请参见安全性。
--noauth¶禁用身份验证。当前的默认值。存在是为了将来的兼容性和清晰度。
--transitionToAuth¶在新版本3.4:允许的mongod为接受并创建认证和非认证连接,并从其他mongod
并mongos在部署实例。用于执行副本集或分片群集从无身份验证配置到内部身份验证的滚动过渡。需要指定内部验证机制,例如
--keyFile。
例如,如果使用密钥文件进行
内部身份验证,则mongod
使用匹配的密钥文件创建与任何部署mongod或mongos部署中的已认证连接。如果安全机制不匹配,则mongod将使用未经身份验证的连接。
运行的mongod--transitionToAuth不会强制执行用户访问控制。用户可以在不进行任何访问控制检查的情况下连接到您的部署,并执行读取,写入和管理操作。
注意
运行内部身份验证且无需客户端使用用户访问控制进行连接的mongod。更新客户端连接到mongod的使用适当的用户
之前重新启动的mongod没有。 --transitionToAuth--transitionToAuth
--cpu¶强制mongod进程每四秒钟报告一次写锁定中的CPU时间百分比。
--sysinfo¶返回诊断系统信息,然后退出。该信息提供页面大小,物理页面数和可用物理页面数。
--noscripting¶禁用脚本引擎。
--notablescan¶禁止需要收集扫描的操作。请参阅notablescan以获取更多信息。
--shutdown¶该--shutdown选件可以安全干净地终止mongod
进程。使用此选项调用mongod时,必须--dbpath直接设置该
选项,也可以通过
配置文件和该
--config选项来设置。
该--shutdown选项仅在Linux系统上可用。
有关其他关闭方法,另请参见Stop mongod Processes。
--redactClientLogData¶3.4版的新功能:仅在MongoDB Enterprise中可用。
一个mongod的与运行--redactClientLogData重新编辑任何消息记录之前伴随一个给定的日志事件。这可以防止mongod将存储在数据库中的潜在敏感数据写入诊断日志。错误或操作代码,行号和源文件名等元数据仍在日志中可见。
使用--redactClientLogData会同
在静态加密和
TLS / SSL(传输加密),以协助符合监管要求。
例如,MongoDB部署可能在一个或多个集合中存储个人身份信息(PII)。所述的mongod记录事件诸如那些涉及CRUD操作,分片的元数据等,这是可能的的mongod可以暴露PII因为这些测井操作的一部分。运行的mongod--redactClientLogData在输出到日志之前会删除所有伴随这些事件的消息,从而有效地删除PII。
由于缺少与日志事件相关的数据,因此在运行Mongod的mongod上进行诊断--redactClientLogData可能会更加困难。有关对日志输出的影响的示例,请参见
过程日志记录手册页--redactClientLogData。
在运行的mongod上,setParameter与
redactClientLogData参数一起使用以配置此设置。
--networkMessageCompressors <string>¶默认值:snappy,zstd,zlib
3.4版的新功能。
指定用于此mongod实例与以下对象之间的通信的默认压缩器:
mongo壳OP_COMPRESSED消息格式的驱动程序。MongoDB支持以下压缩器:
在版本3.6和4.0,mongod并
mongos默认启用网络压缩与
snappy作为压缩机。
开始于4.2版本,mongod和
mongos实例默认为两个snappy,zstd,zlib
压缩机,在这个顺序。
要禁用网络压缩,请将值设置为disabled。
重要
当双方都启用网络压缩时,消息将被压缩。否则,双方之间的消息将不被压缩。
如果指定多个压缩器,则列出压缩器的顺序以及通信启动器都很重要。例如,如果mongo外壳程序指定以下网络压缩程序zlib,snappy,并且mong