mongod 和 mongos 命令行参数
核心选项
-h, --help显示所有可用的选项--version显示版本信息--config <filename>, -f <filename>指定配置文件路径--configExpand <none|rest|exec>4.2 版本新增,启用在配置文件中使用扩展指令。 扩展指令允许您为配置文件选项设置外部来源的值。none默认,mongodb不扩展扩展指令。 如果任何配置文件设置使用扩展指令,mongod将无法启动。restmongod在解析配置文件时扩展__rest扩展指令。execmongod在解析配置文件时扩展__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_all3.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禁用授权。当前的默认值。--transitionToAuth3.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。--outputConfig4.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>指定解开.pemkey 文件的密码。--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 版本可用
--auditDestinationsyslog、console、file。启用审计并指定审计日志保存的路径。--auditFormat审计日志的格式,JSON或者BSON。--auditPath如果--auditDestination指定了file,则需要通过这个选项指定具体保存路径。--auditFilter审计日志过滤特定操作。
mongos 分片集群选项
--configdb <replicasetName>/<config1>,<config2>...指定配置服务器和分片集群。--localThreshold默认 15。mongos会将读操作发送给复制集中ping时间小于这个值的mongod实例。