核心选项
-h, --help
显示所有可用的选项--version
显示版本信息--config <filename>, -f <filename>
指定配置文件路径--configExpand <none|rest|exec>
4.2 版本新增,启用在配置文件中使用扩展指令。 扩展指令允许您为配置文件选项设置外部来源的值。none
默认,mongodb
不扩展扩展指令。 如果任何配置文件设置使用扩展指令,mongod
将无法启动。rest
mongod
在解析配置文件时扩展__rest
扩展指令。exec
mongod
在解析配置文件时扩展__exec
扩展指令。
您可以将多个扩展指令指定为逗号分隔的列表,例如 rest,exec
如果配置文件包含未指定给 --configExpand
的扩展指令,则
mongod
返回错误并终止。
主要目的:用于从外部获取一些动态的配置值(比如运行命令获取-exec,或者通过 http 请求获取-rest)。
--verbose, -v
增加在标准输出或日志文件中返回的内部报告数量。 通过多次包含选项来增加-v
形式的详细程度(例如-vvvvv
。)--quiet
在尝试限制输出量的安静模式下运行 mongodb。(不会记录数据库命令的输出、复制集活动信息、连接建立事件、连接关闭事件)--port <port>
指定端口。默认 27017,如果是分片机器默认是 27018,如果是 config server 默认是 27019。--bind_ip <hostnames|ipaddresses|Unix domain socket paths>
默认localhost
。可以指定多个,如:localhost,/tmp/mongod.sock
。如果用ipv6
的地址,启动的时候需要使用--ipv6
选项。监听所有的 ipv4 地址,使用0.0.0.0
。监听所有的 ipv6 地址,使用::
。--bind_ip_all
3.6 新增。如果指定了这个选项,mongod
实例绑定到0.0.0.0
,如果使用了--ipv6
选项,则绑定到::
。只是指定--bind_ip_all
的时候不会绑定到 ipv6 的::
。
不能同时指定
--bind_ip
和--bind_ip_all
。
--clusterIpSourceAllowlist <string>
mongod
验证来自副本集其他成员的身份验证请求的 IP 地址/CIDR(无类别域间路由)范围列表,以及mongos
实例(如果是分片集群的一部分)。mongod
验证原始 IP 是否明确在列表中或属于列表中的 CIDR 范围。 如果 IP 地址不存在,则服务器不会对mongod
或mongos
进行身份验证。--clusterIpSourceWhitelist <string>
5.0 废弃。使用--clusterIpSourceAllowlist
代替。--ipv6
启用 ipv6 支持。默认不支持 ipv6。指定这个选项的时候,还需要通过--bind_ip
来指定一个 ipv6 地址,又或者使用--bind_ip_all
来绑定到::
。--listenBacklog <number>
3.6 版本新增,目标系统的SOMAXCONN
常量。listen queue 中可以存在的最大连接数。为了防止未定义行为出现,指定的数值必须位于 1 跟系统的SOMAXCONN
之间的一个数。--maxConns <number>
最大连接数--logpath <path>
日志路径。默认情况下,mongod
会创建一个新的文件,如果我们在再次启动的时候想以追加的方式写入日志,可以加上--logappend
选项。--syslog
将所有日志输出到系统日志而不是日志文件(--logpath
),windows 不支持。(4.2)--syslogFacility <string>
指定将消息记录到syslog
时使用的工具级别。 您指定的值必须由您的操作系统的syslog
实现支持。 要使用此选项,您必须启用--syslog
选项。--logappend
当mongod
实例重新启动时,将新条目附加到现有日志文件的末尾。 如果没有此选项,mongod
将备份现有日志并创建一个新文件。--logRotate <string>
默认rename
。确定轮换服务器日志和/或审计日志时logRotate
命令的行为。 可选值为rename
或reopen
。
rename
重命名日志文件。
reopen
关闭并重新打开日志文件,当使用 Unix/Linux 的
logrotate
工具时使用 reopen
可以防止日志丢失。如果指定了 reopen
,你必须同时使用
--logappend
选项。
--timeStampFormat <string>
默认iso8601-local
,日志里面的时间戳格式。
iso8601-utc
例子:1970-01-01T00:00:00.000Z
iso8601-local
例子:1969-12-31T19:00:00.000-05:00
--traceExceptions
仅供内部诊断使用--pidfilepath <path>
指定保存mongod
进程 pid 文件的路径。运行 mongod 或者 mongos 进程的用户必须有这个路径的写权限。如果不指定这个选项,则进程不会创建 PID 文件。此选项通常仅与--fork
选项结合使用才有用。
在 Linux 上,PID 文件管理通常由发行版的初始化系统负责,如
/etc/init.d
或者systemctl
。只有当你没有使用这些初始化系统的时候,才使用--pidfilepath
选项。
在 macOS 上,PID 文件通常由
brew
来处理。只有当你没有使用brew
的时候才使用--pidfilepath
选项。
--keyFile <file>
指定密钥文件的路径,该文件存储MongoDB
实例用于在分片集群或副本集中相互验证的共享密钥。--keyFile
意味着--auth
。--setParameter <options>
指定 MongoDB 服务器参数 中描述的 MongoDB 参数之一。 您可以指定多个 setParameter 字段。--nounixsocket
禁用侦听 UNIX 域套接字。--nounixsocket
仅适用于基于 Unix 的系统。mongod
进程会一直监听 unix 套接字,除非以下几个条件任意一个满足:--nounixsocket
被设置net.bindIp
没有设置net.bindIp
没有指定localhost
或者它关联的 IP 地址
从官方的 .deb
或者 .rpm
安装包安装的
mongod
进程默认的 bind_ip
为
127.0.0.1
。
--unixSocketPrefix <path>
默认/tmp
。仅用于基于 Unix 的系统。指定保存进程 socket 文件的路径。mongod
进程会创建并监听 unix 套接字,除非以下几个条件任意一个满足:net.unixDomainSocket.enabled
被设置为false
- 其他几个条件同
--nounixsocket
的几个条件。
--filePermissions <path>
默认0700
。指定 UNIX 域套接字的权限。仅用于 UNIX 类系统。--fork
启用在后台运行mongod
进程的守护进程模式。 默认情况下,mongod
不作为守护进程运行:通常,您将mongod
作为守护进程运行,通过使用--fork
或使用处理守护进程的控制进程(例如,与upstart
和systemd
一样)。
使用 --fork
选项要求您使用以下其中一项配置
mongod
的日志输出:--logpath
,--syslog
。
--fork
选项不支持 windows。
--auth
启用授权以控制用户对数据库资源和操作的访问。 启用授权后,MongoDB
要求所有客户端首先对自己进行身份验证,以确定客户端的访问权限。通过mongo shell
配置用户。 如果不存在用户,localhost 将可以继续访问数据库,直到您创建第一个用户。--noauth
禁用授权。当前的默认值。--transitionToAuth
3.4 新增。允许mongod
接受并创建与部署中的其他mongod
和mongos
实例之间的经过身份验证和未经身份验证的连接。 用于执行副本集或分片集群从无身份验证配置到内部身份验证的滚动转换。 需要指定内部身份验证机制,例如--keyFile
。
例如,如果使用密钥文件进行内部身份验证,则 mongod
会使用匹配的密钥文件与部署中的任何 mongod
或
mongos
创建经过身份验证的连接。 如果安全机制不匹配,则
mongod
会使用未经身份验证的连接。
使用 --transitionToAuth
运行的 mongod
不会强制执行用户访问控制。
用户无需任何访问控制检查即可连接到您的部署并执行读取、写入和管理操作。
--cpu
强制mongod
进程每四秒报告一次写锁中 CPU 时间的百分比。--sysinfo
返回诊断系统信息,然后退出。 该信息提供页大小、物理页数和可用物理页数。--noscripting
禁用脚本引擎--notablescan
禁止需要集合扫描的操作。--shutdown
--shutdown
选项干净安全地终止mongod
进程。 使用此选项调用mongod
时,您必须直接或通过配置文件和--config
选项设置--dbpath
选项。仅在 Linux 系统可用。--networkMessageCompressors <string>
指定在mongod
实例之间数据传输的压缩算法(又或者是在分片之间、复制集之间、mongoshell
、支持OP_COMPRESSED
消息格式的驱动)。在 3.6 和 4.0 版本里面,mongod
和mongos
使用snappy
作为默认的网络传输压缩算法。从 4.2 版本开始,mongod
和mongos
默认支持snappy,zstd,zlib
三种压缩算法。如果不想使用网络压缩,可以将这个选项设置为disabled
。
注意:
如果指定了多个压缩算法,会从通信发起者里面按顺序获取第一个共同的压缩算法(跟接受通信的一方)。比如
mongosh
指定了压缩算法为zlib,snappy
,而mongod
指定的压缩算法为snappy,zlib
, 那么在mongosh
跟mongod
之间的通信将会使用zlib
。
如果通信双方没有共同的压缩算法,则将不会使用传输压缩。
--timeZoneInfo <path>
从中加载时区数据库的完整路径。 如果未提供此选项,则 MongoDB 将使用其内置时区数据库。默认是/usr/share/zoneinfo
。--outputConfig
4.2 新增。输出mongod
实例的配置选项(以 yaml 格式)。
存储选项
--storageEngine string
存储引擎,默认wiredTiger
。如果您尝试使用--dbpath
启动mongod
,其中包含由--storageEngine
指定的存储引擎以外的存储引擎生成的数据文件,mongod
将拒绝启动。--dbpath
在 Linux 上默认为/data/db
,windows 上为\data\db
。指定mongod
实例存储数据的目录。如果是使用配置文件,则对应的配置项为storage.dbPath
。在--dbpath
路径的文件对应的存储引擎必须跟--storageEngine
一致,否则会启动失败。--directoryperdb
使用单独的目录来存储每个数据库的数据。 目录在--dbpath
目录下,每个子目录名对应数据库名。--syncdelay <value>
控制多长时间使用fsync
操作同步变动到磁盘。如果设置为 0,MongoDB 将不会同步数据到磁盘。 不要在生产环境使用这个选项,在几乎所有情况下使用默认设置即可。--upgrade
更新磁盘里的文件格式。--repair
在mongod
实例上的所有数据库执行修复程序。--journal
启用持久性日志以确保数据文件保持有效和可恢复。 此选项仅在您指定--dbpath
选项时适用。mongod
默认启用日志功能。--nojournal
禁用日志功能。--journalCommitInterval <value>
mongod
进程允许在日志操作之间的最长时间(以毫秒为单位)。 值的范围可以从 1 到 500 毫秒。 较低的值会增加日志的持久性,但会降低磁盘性能。
WiredTiger 选项
--wiredTigerCacheSizeGB <float>
定义 WiredTiger 将用于所有数据的内部缓存的最大大小。 索引构建消耗的内存(请参阅 maxIndexBuildMemoryUsageMegabytes)与 WiredTiger 缓存内存是分开的。
从 3.4 开始,默认的值是 50% of (RAM - 1 GB)
和
256MB
中较大的那一个。避免将其设置为比默认值更大的值。通过
WiredTiger,MongoDB 使用 WiredTiger
内部缓存和文件系统缓存。通过文件系统缓存,MongoDB 自动使用 WiredTiger
缓存或其他进程未使用的所有空闲内存。
--wiredTigerCacheSizeGB
限制了 WiredTiger
内部缓存的大小。
操作系统会将可用的空闲内存用于文件系统缓存,这允许压缩的 MongoDB
数据文件保留在内存中。 此外,操作系统将使用任何空闲 RAM
来缓冲文件系统块和文件系统缓存。
为了容纳额外的 RAM 使用者,您可能需要减少 WiredTiger 内部缓存大小。
默认的值假设了你的系统仅有一个 mongod
实例在运行,如果你需要在一台机器上运行多个 mongod
实例,则需要减少 --wiredTigerCacheSizeGB
配置值。如果运行在容器中,则也需要设置为比容器可用内存更小的值。
--wiredTigerMaxCacheOverflowFileSizeGB <float>
4.4 版本废弃。--wiredTigerJournalCompressor <compressor>
默认 snappy。指定压缩 WiredTiger 日志数据的算法。--wiredTigerDirectoryForIndexes
指定这个选项的时候,mongod
会将集合和索引保存到不同目录中。--wiredTigerCollectionBlockCompressor <compressor>
默认 snappy,指定集合的压缩算法。--wiredTigerIndexPrefixCompression <boolean>
默认 true。启用或禁用索引数据的前缀压缩。
复制集选项
--replSet <setname>
4.0 新增。配置复制。 指定副本集名称作为此集的参数。 副本集中的所有主机必须具有相同的集名称。有多个复制集的时候,每个复制集的名字必须不一样。--oplogSize <value>
指定复制集 oplog 的最大大小,单位 M。--oplogMinRetentionHours <value>
4.4 新增。指定保留 oplog 条目的最小小时数,其中十进制值表示小时的分数。 例如,值 1.5 表示一小时三十分钟。必须大于等于0。默认 0。就是 oplog 到达最大大小之后,超过这个时间的日志需要被删除。--enableMajorityReadConcern
默认 true。
分片集群选项
--configsvr
作为集群的配置服务器启动的时候使用。配置服务器只能读写config
和admin
数据库。默认端口为 27019。默认的--dbpath
为/data/configdb
,除非另外指定。从 3.4 开始,你必须将配置服务器作为复制集部署。不能和--shardsvr
同时使用。配置服务器不能作为分片服务器。--configsvrMode <string>
只在 3.2 可用。--shardsvr
作为分片服务器启动。默认端口为 27018。从 3.6 开始,你必须将分片服务器作为复制集部署。--moveParanoia
如果指定,则在块迁移期间,分片会将从该分片迁移的所有文档保存到--dbpath
的moveChunk
目录中。MongoDB 不会自动删除保存在moveChunk
目录中的数据。--noMoveParanoia
从 3.2 开始,默认使用--noMoveParanoia
。在块迁移期间,分片不保存从分片迁移的文档。
TLS 选项
--tlsMode <mode>
启用 TLS 支持。disabled
不使用 TLS。allowTLS
服务器之间不使用 TLS,对于即将到来的连接,可以使用或者不使用 TLS。preferTLS
服务器之间使用 TLS,对于即将到来的连接,可以使用或者不使用 TLS。requireTLS
必须使用 TLS。--tlsCertificateKeyFile <filename>
指定包含了 TLS 证书和 key 的.pem
文件路径。--tlsCertificateKeyFilePassword <value>
指定解开.pem
key 文件的密码。--clusterAuthMode <option>
默认 keyFile。用于集群认证的认证方式。--tlsClusterFile <filename>
指定包含用于集群或副本集成员身份验证的 x.509 证书密钥文件的 .pem 文件。--tlsCertificateSelector <parameter>=<value>
指定证书属性,以便从操作系统的证书存储中选择匹配的证书以用于 TLS。--tlsClusterCertificateSelector <parameter>=<value>
指定证书属性,以便从操作系统的证书存储中选择匹配的证书以用于内部 x.509 成员身份验证。
profiler 选项
--profile <level>
0,默认值,不收集任何数据。1 收集慢查询操作。2 记录所有操作。--slowms <integer>
默认 100,单位毫秒。慢查询时间,超过这个时间的操作被视作慢查询。--slowOpSampleRate <double>
默认 1.0。应该分析或记录的慢速操作的比例。--slowOpSampleRate
接受 0 到 1 之间的值,包括 0 和 1。
审计选项
MongoDB Enterprise 版本可用
--auditDestination
syslog
、console
、file
。启用审计并指定审计日志保存的路径。--auditFormat
审计日志的格式,JSON
或者BSON
。--auditPath
如果--auditDestination
指定了file
,则需要通过这个选项指定具体保存路径。--auditFilter
审计日志过滤特定操作。
mongos 分片集群选项
--configdb <replicasetName>/<config1>,<config2>...
指定配置服务器和分片集群。--localThreshold
默认 15。mongos
会将读操作发送给复制集中ping
时间小于这个值的mongod
实例。