mongodb的配置文件详解()

官方地址  https://docs.mongodb.com/manual/reference/configuration-options/#configuration-file

以下页面描述了MongoDB 4.0中可用的配置选项。有关其他版本MongoDB的配置文件选项,请参阅相应版本的MongoDB手册。

配置文件

您可以使用配置文件在启动时配置mongodmongos实例。配置文件包含mongod与 mongos命令行选项等效的设置请参阅配置文件设置和命令行选项映射

使用配置文件可以简化管理mongod和 mongos选项,尤其适用于大规模部署。您还可以向配置文件添加注释以解释服务器的设置。

在Linux上,/etc/mongod.conf使用包管理器安装MongoDB时会包含默认配置文件。

在Windows上, 安装期间包含默认配置文件。<install directory>/bin/mongod.cfg

在macOS上,安装不包含默认配置文件; 相反,要使用配置文件,请创建一个文件。

文件格式

在2.6版中更改: MongoDB 2.6引入了基于YAML的配置文件格式。2.4配置文件的格式仍是向后兼容性。

MongoDB配置文件使用YAML格式 [1]

以下示例配置文件包含mongod 可以适应本地配置的几个设置:

注意

YAML不支持缩进的制表符:使用空格代替。

复制
复制
systemLog:
   destination: file
   path: "/var/log/mongodb/mongod.log"
   logAppend: true
storage:
   journal:
      enabled: true
processManagement:
   fork: true
net:
   bindIp: 127.0.0.1
   port: 27017
setParameter:
   enableLocalhostAuthBypass: false
...

包括在官方的MongoDB包的Linux软件包init脚本依赖于特定的值systemLog.pathstorage.dbPathprocessManagement.fork如果在默认配置文件中修改这些设置,则mongod可能无法启动。

[1] YAML是JSON的超集

使用配置文件

要配置mongodmongos使用配置文件,请使用--config选项或 -f选项指定配置文件,如以下示例所示:

例如,以下用途mongod --config <configuration file> mongos --config <configurationfile>

复制
复制
mongod --config /etc/mongod.conf

mongos --config /etc/mongos.conf

您还可以使用-f别名指定配置文件,如下所示:

复制
复制
mongod -f /etc/mongod.conf

mongos -f /etc/mongos.conf

如果您从软件包安装并使用系统的init脚本启动了MongoDB ,那么您已经在使用配置文件。

核心选项

systemLog选项

复制
复制
systemLog:
   verbosity: <int>
   quiet: <boolean>
   traceAllExceptions: <boolean>
   syslogFacility: <string>
   path: <string>
   logAppend: <boolean>
   logRotate: <string>
   destination: <string>
   timeStampFormat: <string>
   component:
      accessControl:
         verbosity: <int>
      command:
         verbosity: <int>

      # COMMENT additional component verbosity settings omitted for brevity
systemLog.verbosity

类型:整数

默认值:0

在3.0版中更改。

默认的日志信息 冗长级别的组件详细级别确定MongoDB输出信息和调试消息的数量

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。

要对命名组件使用不同的详细级别,请使用组件的详细程度设置。例如,使用systemLog.component.accessControl.verbosity专门为ACCESS组件设置详细级别

请参阅systemLog.component.<name>.verbosity特定组件详细程度设置的设置。

有关设置日志详细级别的各种方法,请参阅 配置日志详细级别

systemLog.quiet

输入:boolean

运行mongosmongod处于安静模式,试图限制输出量。

systemLog.quiet建议用于生产系统,因为它可以使在特定的连接变得更加困难跟踪问题。

systemLog.traceAllExceptions

输入:boolean

打印详细信息以进行调试。用于支持相关故障排除的其他日志记录。

systemLog.syslogFacility

输入:string

默认值:用户

将消息记录到syslog时使用的设施级别。您指定的值必须由操作系统的syslog实现支持。要使用此选项,您必须设置systemLog.destinationsyslog

systemLog.path

输入:string

日志文件的路径,mongod或者mongos应该发送所有诊断日志记录信息,而不是标准输出或主机的syslogMongoDB在指定的路径上创建日志文件。

Linux软件包init脚本不希望systemLog.path更改默认值。如果使用Linux软件包并进行更改systemLog.path,则必须使用自己的init脚本并禁用内置脚本。

systemLog.logAppend

输入:boolean

默认值:False

 实例重新启动true将新条目添加到现有日志文件的末尾mongosmongod将其添加到现有日志文件的末尾如果没有此选项,将备份现有日志并创建新文件。mongosmongodmongod

systemLog.logRotate

输入:string

默认值:重命名

版本3.0.0中的新功能。

logRotate命令的行为指定renamereopen

  • rename 重命名日志文件。

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

    如果指定reopen,则还必须设置systemLog.logAppendtrue

systemLog.destination

输入:string

MongoDB发送所有日志输出的目标。指定 filesyslog如果指定file,则还必须指定systemLog.path

如果未指定systemLog.destination,MongoDB会将所有日志输出发送到标准输出。

警告

syslog当它将消息记录,还不时的MongoDB发出消息后台生成时间戳。这可能导致日志条目的误导时间戳,尤其是在系统负载很重的情况下。我们建议使用file生产系统选项来确保准确的时间戳。

systemLog.timeStampFormat

输入:string

默认值:iso8601-local

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

描述
ctime 将时间戳显示为Wed Dec 31 18:17:54.811
iso8601-utc 以ISO-8601格式显示协调世界时(UTC)的时间戳。例如,在大纪元开始的纽约:1970-01-01T00:00:00.000Z
iso8601-local 以ISO-8601格式显示本地时间的时间戳。例如,在大纪元开始的纽约: 1969-12-31T19:00:00.000-0500

systemLog.component选项

复制
复制
systemLog:
   component:
      accessControl:
         verbosity: <int>
      command:
         verbosity: <int>

      # COMMENT some component verbosity settings omitted for brevity

      replication:
         verbosity: <int>
         heartbeats:
            verbosity: <int>
         rollback:
            verbosity: <int>
      storage:
         verbosity: <int>
         journal:
            verbosity: <int>
         recovery:
            verbosity: <int>
      write:
         verbosity: <int>
systemLog.component.accessControl.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与访问控制相关的组件的日志消息详细级别。ACCESS组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.command.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与命令相关的组件的日志消息详细级别。COMMAND组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.control.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与控制操作相关的组件的日志消息详细级别。CONTROL组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.ftdc.verbosity

类型:整数

默认值:0

版本3.2中的新功能。

与诊断数据收集操作相关的组件的日志消息详细级别。FTDC组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.geo.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与地理空间解析操作相关的组件的日志消息详细级别。GEO组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.index.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与索引操作相关的组件的日志消息详细级别。INDEX组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.network.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与网络操作相关的组件的日志消息详细级别。NETWORK组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.query.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与查询操作相关的组件的日志消息详细级别。QUERY组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.replication.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与复制相关的组件的日志消息详细级别。REPL组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.replication.heartbeats.verbosity

类型:整数

默认值:0

版本3.6中的新功能。

与心跳相关的组件的日志消息详细级别。REPL_HB组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.replication.rollback.verbosity

类型:整数

默认值:0

版本3.6中的新功能。

与回滚相关的组件的日志消息详细级别。ROLLBACK组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.sharding.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与分片相关的组件的日志消息详细级别。SHARDING组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.storage.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与存储相关的组件的日志消息详细级别。STORAGE组件。

如果systemLog.component.storage.journal.verbosity未设置,则systemLog.component.storage.verbositylevel也适用于日记组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.storage.journal.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与日记相关的组件的日志消息详细级别。JOURNAL组件。

如果systemLog.component.storage.journal.verbosity未设置,则日记记录组件具有与父存储组件相同的详细级别:即systemLog.component.storage.verbosity设置的 级别或默认的详细级别。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.storage.recovery.verbosity

类型:整数

默认值:0

4.0版中的新功能。

与恢复相关的组件的日志消息详细级别。RECOVERY组件。

如果systemLog.component.storage.recovery.verbosity未设置,则systemLog.component.storage.verbositylevel也适用于恢复组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.transaction.verbosity

类型:整数

默认值:0

版本4.0.2中的新功能。

与事务相关的组件的日志消息详细级别。TXN组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。
systemLog.component.write.verbosity

类型:整数

默认值:0

版本3.0中的新功能。

与写入操作相关的组件的日志消息详细级别。WRITE组件。

详细程度可以05

  • 0是MongoDB的默认日志详细级别,包括 信息性消息。
  • 15增加详细级别,以包括 调试消息。

processManagement选项

复制
复制
processManagement:
   fork: <boolean>
   pidFilePath: <string>
   timeZoneInfo: <string>
processManagement.fork

输入:boolean

默认值:False

启用在后台运行mongosmongod处理守护程序模式默认情况下mongosmongod不作为守护程序运行:通常通过使用或使用处理守护进程的控制进程(例如,运行mongosmongod作为守护程序 运行processManagement.forkupstartsystemd

Linux软件包init脚本不希望processManagement.fork更改默认值。如果使用Linux软件包并进行更改processManagement.fork,则必须使用自己的init脚本并禁用内置脚本。

processManagement.pidFilePath

输入:string

指定一个文件位置来保存的进程ID mongosmongod 过程,其中mongosmongod将写入其PID。这对于结合设置跟踪mongosmongod处理 非常有用processManagement.fork如果没有指定的processManagement.pidFilePath选项,则该进程不会创建PID文件。

processManagement.timeZoneInfo

输入:string

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

Linux和macOS包中包含的配置文件/usr/share/zoneinfo默认设置时区数据库路径

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

cloud选项

4.0版中的新功能。

复制
复制
cloud:
   monitoring:
      free:
         state: <string>
         tag: <string>
cloud.monitoring.free.state

输入:string

4.0版中的新功能:适用于MongoDB Community Edition。

启用或禁用免费的MongoDB云监控cloud.monitoring.free.state接受以下值:

runtime

默认。您可以在运行时启用或禁用免费监控。

要在运行时启用或禁用免费监控,请参阅 db.enableFreeMonitoring()db.disableFreeMonitoring()

要在运行时使用访问控制在运行时启用或禁用免费监视,用户必须具有所需的权限。查看db.enableFreeMonitoring()并 db.disableFreeMonitoring()了解详情。

on 启动时启用免费监控; 即注册免费监控。在启动时启用时,您无法在运行时禁用自由监视。
off 无论您之前是否注册过免费监控,都会在启动时禁用免费监控。在启动时禁用时,无法在运行时启用免费监视。

启用后,自由监控状态将保持启用状态,直到明确禁用。也就是说,每次启动服务器时都不需要重新启用。

有关相应的命令行选项,请参阅 --enableFreeMonitoring

cloud.monitoring.free.tag

输入:string

4.0版中的新功能:适用于MongoDB Community Edition。

用于描述环境上下文的可选标记 标签可以在启动时作为免费MongoDB云监控注册的一部分发送

有关相应的命令行选项,请参阅 --enableFreeMonitoringTag

net选项

复制
复制
net:
   port: <int>
   bindIp: <string>
   bindIpAll: <boolean>
   maxIncomingConnections: <int>
   wireObjectCheck: <boolean>
   ipv6: <boolean>
   unixDomainSocket:
      enabled: <boolean>
      pathPrefix: <string>
      filePermissions: <int>
   ssl:
      sslOnNormalPorts: <boolean>  # deprecated since 2.6
      certificateSelector: <string>
      clusterCertificateSelector: <string>
      mode: <string>
      PEMKeyFile: <string>
      PEMKeyPassword: <string>
      clusterFile: <string>
      clusterPassword: <string>
      CAFile: <string>
      clusterCAFile: <string>
      CRLFile: <string>
      allowConnectionsWithoutCertificates: <boolean>
      allowInvalidCertificates: <boolean>
      allowInvalidHostnames: <boolean>
      disabledProtocols: <string>
      FIPSMode: <boolean>
   compression:
      compressors: <string>
   serviceExecutor: <string>
net.port

类型:整数

默认值:27017

MongoDB实例侦听客户端连接的TCP端口。

net.bindIp

输入:string

默认值:localhost

注意

开始在MongoDB中3.6,mongosmongod绑定默认为localhost。请参见默认绑定到Localhost

主机名和/或IP地址和/或完整的Unix域套接字路径,mongos并且mongod应该监听客户端连接。您可以附加mongosmongod任何界面。要绑定到多个地址,请输入逗号分隔值列表。

localhost,/tmp/mongod.sock

小费

如果可能,请使用逻辑DNS主机名而不是IP地址,尤其是在配置副本集成员或分片集群成员时。逻辑DNS主机名的使用避免了由于IP地址更改而导致的配置更改。

警告

在绑定到其他IP地址之前,请考虑启用安全检查表中列出的访问控制和其他安全措施,以防止未经授权的访问。

要绑定到所有IPv4地址,请输入0.0.0.0

要绑定到所有IPv4和IPv6地址,请输入::,0.0.0.0 或者使用该net.bindIpAll设置。

注意

net.bindIp并且net.bindIpAll是相互排斥的。也就是说,您可以指定其中一个,但不能同时指定两者。

net.bindIpAll

输入:boolean

默认值:False

版本3.6中的新功能。

如果为true,则mongosmongod实例绑定到所有IP地址。当连接mongosmongod到可公开访问的接口,确保已实施适当的身份验证和防火墙的限制以保护数据库的完整性。

警告

在绑定到其他IP地址之前,请考虑启用安全检查表中列出的访问控制和其他安全措施,以防止未经授权的访问。

或者,将net.bindIp设置设置为 ::,0.0.0.0绑定到所有IP地址。

注意

net.bindIp并且net.bindIpAll是相互排斥的。也就是说,您可以指定其中一个,但不能同时指定两者。

net.maxIncomingConnections

类型:整数

默认值:65536

要接受mongosmongod将接受的最大同时连接数如果此设置高于操作系统配置的最大连接跟踪阈值,则此设置无效。

不要为此选项分配太低的值,否则在正常的应用程序操作期间会遇到错误。

mongos如果您有一个客户端创建多个连接并允许它们超时而不是关闭它们,这对于特别有用

在这种情况下,请设置maxIncomingConnections为略高于客户端创建的最大连接数或连接池的最大大小的值。

此设置可防止mongos在各个分上引起连接尖峰这些尖峰可能会破坏分片群集的操作和内存分配

net.wireObjectCheck

输入:boolean

默认值:True

何时truemongod或者mongos实例在收到客户端时验证所有请求,以防止客户端将格式错误或无效的BSON插入MongoDB数据库。

对于具有高度子文档嵌套的对象,net.wireObjectCheck可以对性能产生很小的影响。

net.ipv6

输入:boolean

默认值:False

启用或禁用IPv6支持。mongos或 mongod默认禁用IPv6支持。

net.unixDomainSocket选项

复制
复制
net:
   unixDomainSocket:
      enabled: <boolean>
      pathPrefix: <string>
      filePermissions: <int>
net.unixDomainSocket.enabled

输入:boolean

默认值:True

启用或禁用UNIX域套接字上的侦听。net.unixDomainSocket.enabled仅适用于基于Unix的系统。

如果net.unixDomainSocket.enabledtruemongos或者mongod监听Unix套接字上。

mongosmongod过程总是Unix套接字上监听,除非以下情况之一是真实的:

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

net.unixDomainSocket.pathPrefix

输入:string

默认值:/ tmp

UNIX套接字的路径。net.unixDomainSocket.pathPrefix仅适用于基于Unix的系统。

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

net.unixDomainSocket.filePermissions

输入:int

默认值0700

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

net.unixDomainSocket.filePermissions 仅适用于基于Unix的系统。

net.http选项

在版本3.6中更改: MongoDB 3.6删除了已弃用的net.http选项。自3.2版以来,这些选项已被弃用。

net.ssl选项

复制
复制
net:
   ssl:
      sslOnNormalPorts: <boolean>  # deprecated since 2.6
      mode: <string>
      PEMKeyFile: <string>
      PEMKeyPassword: <string>
      certificateSelector: <string>
      clusterCertificateSelector: <string>
      clusterFile: <string>
      clusterPassword: <string>
      CAFile: <string>
      clusterCAFile: <string>
      CRLFile: <string>
      allowConnectionsWithoutCertificates: <boolean>
      allowInvalidCertificates: <boolean>
      allowInvalidHostnames: <boolean>
      disabledProtocols: <string>
      FIPSMode: <boolean>
net.ssl.sslOnNormalPorts

输入:boolean

从2.6版开始不推荐使用:改为使用net.ssl.mode: requireSSL

mongos启用或禁用TLS / SSL mongod

对于默认MongoDB端口上的所有连接或指定的端口net.ssl.sslOnNormalPorts,使用mongosmongod要求TLS / SSL加密 net.port默认情况下,net.ssl.sslOnNormalPorts已禁用。

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.mode

输入:string

版本2.6中的新功能。

启用或禁用用于所有网络连接的TLS / SSL或混合TLS / SSL。net.ssl.mode设置的参数可以是以下之一:

描述
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身份验证,--sslCAFilessl.CAFile 必须指定,除非使用--sslCertificateSelector

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.PEMKeyFile

输入:string

注意

从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。见 net.ssl.certificateSelector

.pem同时包含TLS / SSL证书和密钥文件。

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.PEMKeyPassword

输入:string

用于解密证书密钥文件的密码(即 PEMKeyFile)。net.ssl.PEMKeyPassword仅在证书密钥文件已加密时才使用该选项。在所有情况下,mongosmongod将从所有日志记录和报告输出中编辑密码。

从MongoDB 4.0开始:

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.certificateSelector

输入:string

版本4.0中的新功能:在Windows和macOS上可用作替代版本net.ssl.PEMKeyFile

net.ssl.PEMKeyFilenet.ssl.certificateSelector选项是互斥的。您只能指定一个。

指定证书属性,以便从操作系统的证书存储中选择匹配的证书。

net.ssl.certificateSelector接受格式的参数,<property>=<value> 其中属性可以是以下之一:

属性值类型描述
subject ASCII字符串 证书上的主题名称或通用名称
thumbprint 十六进制字符

表示为十六进制的字节序列,用于通过SHA-1摘要标识公钥。

thumbprint有时被称为一个 fingerprint

net.ssl.clusterCertificateSelector

输入:string

版本4.0中的新功能:在Windows和macOS上可用作替代版本 net.ssl.clusterFile

net.ssl.clusterFilenet.ssl.clusterCertificateSelector选项是互斥的。您只能指定一个。

指定证书属性,以便从操作系统的证书存储中选择用于内部身份验证的匹配证书。

net.ssl.clusterCertificateSelector接受格式的参数,<property>=<value> 其中属性可以是以下之一:

属性值类型描述
subject ASCII字符串 证书上的主题名称或通用名称
thumbprint 十六进制字符

表示为十六进制的字节序列,用于通过SHA-1摘要标识公钥。

thumbprint有时被称为一个 fingerprint

net.ssl.clusterFile

输入:string

注意

从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。net.ssl.clusterCertificateSelector

.pem包含了X.509证书,密钥文件的文件会员认证 的集群或副本集。

如果net.ssl.clusterFile未指定.pem内部群集身份验证或备用 文件net.ssl.clusterCertificateSelector,则群集将使用设置中.pem指定的 文件PEMKeyFile或由net.ssl.certificateSelector返回的证书

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

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.clusterPassword

输入:string

版本2.6中的新功能。

用于解密指定的x.509证书密钥文件的密码--sslClusterFilenet.ssl.clusterPassword仅在证书密钥文件已加密时才使用该选项。在所有情况下,mongosmongod 将从所有日志记录和报告输出中编辑密码。

从MongoDB 4.0开始:

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.CAFile

输入:string

.pem包含证书颁发机构的根证书链文件。.pem使用相对路径或绝对路径指定文件的文件名 

从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。net.ssl.certificateSelector使用安全存储时,您不需要,但也可以指定net.ssl.CAFile

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.clusterCAFile

输入:string

版本4.0.3中的新增功能

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

如果net.ssl.clusterCAFile未指定.pem用于验证来自建立连接的客户端的证书的.pem文件,则群集将使用net.ssl.CAFile选项中指定文件

net.ssl.clusterCAFile 允许您使用单独的证书颁发机构来验证客户端到服务器和服务器到TLS握手的客户端部分。

从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。net.ssl.clusterCertificateSelector使用安全存储时,您不需要,但也可以指定net.ssl.clusterCAFile

需要net.ssl.CAFile设置。

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.CRLFile

输入:string

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

注意

从MongoDB 4.0开始,您无法net.ssl.CRLFile在macOS上指定net.ssl.certificateSelector改用。

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.allowConnectionsWithoutCertificates

输入:boolean

对于未提供证书的客户端,mongosmongod在建立连接时绕过TLS / SSL证书验证。

但是,对于提供证书的客户端,mongosmongod使用指定的根证书链执行证书验证, CAFile并拒绝具有无效证书的客户端。

net.ssl.allowConnectionsWithoutCertificates如果您的混合部署包含不能或不能向mongos提供证书的客户端,请使用该选项mongod

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.allowInvalidCertificates

输入:boolean

启用或禁用群集中其他服务器上的TLS / SSL证书的验证检查,并允许使用无效证书进行连接。

注意

从MongoDB 4.0开始,如果您指定 --sslAllowInvalidCertificates使用x.509身份验证,则无效证书仅足以建立TLS / SSL连接,但 不足以进行身份验证。ssl.allowInvalidCertificates: true

使用该net.ssl.allowInvalidCertificates设置时,MongoDB会记录有关使用无效证书的警告。

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.allowInvalidHostnames

输入:boolean

默认值:False

版本3.0中的新功能。

如果net.ssl.allowInvalidHostnamestrue,MongoDB的禁用TLS / SSL证书的主机名的验证,允许mongod连接到MongoDB的情况下,如果主机名的证书不指定主机名匹配。

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

net.ssl.disabledProtocols

输入:string

3.0.7版中的新功能。

阻止使用TLS / SSL运行的MongoDB服务器接受使用特定协议的传入连接。要指定多个协议,请使用逗号分隔的协议列表。

net.ssl.disabledProtocols识别以下协议:TLS1_0TLS1_1, TLS1_2,并开始在版本4.0.4(和3.6.9) TLS1_3

  • 在macOS上,您无法禁用TLS1_1和保留两者TLS1_0并 TLS1_2启用。例如,您必须至少禁用其他两个中的一个TLS1_0,TLS1_1
  • 要列出多个协议,请指定为逗号分隔的协议列表。例如TLS1_0,TLS1_1
  • 指定无法识别的协议将阻止服务器启动。
  • 指定的禁用协议会覆盖任何默认禁用的协议。

从版本4.0开始,如果系统上有TLS 1.1+,MongoDB将禁用TLS 1.0。要启用已禁用TLS 1.0,指定nonenet.ssl.disabledProtocols请参见禁用TLS 1.0

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

也可以看看

禁止协议

net.ssl.FIPSMode

输入:boolean

启用或禁用使用TLS / SSL库的FIPS模式为mongosmongod您的系统必须具有符合FIPS的库才能使用该net.ssl.FIPSMode选项。

注意

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

net.compression选项

复制
复制
net:
   compression:
      compressors: <string>
net.compression.compressors

默认值:snappy

版本3.4中的新功能。

指定用于此实例mongodmongos实例之间通信的默认压缩器

  • 如果实例是副本集或分片群集的一部分,则部署的其他成员
  • 一个mongo
  • 支持OP_COMPRESSED邮件格式的驱动程序

MongoDB支持以下压缩器:

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

在3.6和4.0版本mongod并 mongos默认启用网络压缩与 snappy作为压缩机。

要禁用网络压缩,请将值设置为disabled

重要

当双方都启用网络压缩时,将压缩消息。否则,各方之间的消息将被解压缩。

如果指定多个压缩器,则列出压缩器的顺序以及通信启动器都很重要。例如,如果mongoshell指定了以下网络压缩器zlib,snappymongod指定 snappy,zlib,则mongoshell和 mongoduses 之间的消息zlib

如果各方不共享至少一个公共压缩器,则各方之间的消息是未压缩的。例如,如果 mongoshell指定网络压缩器 zlibmongod指定snappy,则mongoshell和之间的消息mongod不会被压缩。

net.serviceExecutor

输入:string

默认值:同步

版本3.6中的新功能。

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

描述
synchronous mongosmongod使用同步网络和管理上的每个连接其网络的线程池。以前版本的MongoDB以这种方式管理线程。
adaptive mongosmongod与管理关于每个请求基础的线程的自适应线程池使用了新的实验性异步网络模式。当存在比数据库请求更多的非活动连接时,此模式应具有更一致的性能并使用更少的资源。

security选项

复制
复制
security:
   keyFile: <string>
   clusterAuthMode: <string>
   authorization: <string>
   transitionToAuth: <boolean>
   javascriptEnabled:  <boolean>
   redactClientLogData: <boolean>
   sasl:
      hostName: <string>
      serviceName: <string>
      saslauthdSocketPath: <string>
   enableEncryption: <boolean>
   encryptionCipherMode: <string>
   encryptionKeyFile: <string>
   kmip:
      keyIdentifier: <string>
      rotateMasterKey: <boolean>
      serverName: <string>
      port: <string>
      clientCertificateFile: <string>
      clientCertificatePassword: <string>
      clientCertificateSelector: <string>
      serverCAFile: <string>
   ldap:
      servers: <string>
      bind:
         method: <string>
         saslMechanisms: <string>
         queryUser: <string>
         queryPassword: <string>
         useOSDefaults: <boolean>
      transportSecurity: <string>
      timeoutMS: <int>
      userToDNMapping: <string>
      authz:
         queryTemplate: <string>
security.keyFile

输入:string

密钥文件的路径,用于存储MongoDB实例用于在分片集群副本集中相互进行身份验证的共享密钥 keyFile暗示 security.authorization有关更多信息,请参阅内部验证

security.clusterAuthMode

输入:string

默认值:keyFile

版本2.6中的新功能。

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

描述
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身份验证,--sslCAFilessl.CAFile 必须指定,除非使用--sslCertificateSelector

有关TLS / SSL和MongoDB的详细信息,请参阅 为客户端配置mords和mongos以及TLS / SSL和 TLS / SSL配置

security.authorization

输入:string

默认值:已禁用

启用或禁用基于角色的访问控制(RBAC)以管理每个用户对数据库资源和操作的访问。

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

描述
enabled 用户只能访问已被授予权限的数据库资源和操作。
disabled 用户可以访问任何数据库并执行任何操作。

有关更多信息,请参阅基于角色的访问控制

security.authorization设置仅适用于mongod

security.transitionToAuth

输入:boolean

默认值:False

在新版本3.4:允许mongodmongos接受和创造,并从其它身份验证和非认证连接mongod ,并mongos在部署实例。用于执行副本集或分片集群从非身份验证配置到内部身份验证的滚动转换需要指定内部身份验证机制,例如 security.keyFile

例如,如果使用密钥文件进行 内部验证中,mongodmongos创建具有任何经认证的连接mongodmongos 在部署使用匹配密钥文件。如果安全机制不匹配,则使用mongodmongos使用非认证连接。

mongodmongos运行security.transitionToAuth不会强制执行用户访问控制用户可以在没有任何访问控制检查的情况下连接到您的部署,并执行读取,写入和管理操作。

注意

mongodmongos运行内部身份验证无需 security.transitionToAuth客户端使用用户访问控制进行连接更新客户端连接到mongodmongos使用适当的用户 重新启动之前mongodmongos没有security.transitionToAuth

security.javascriptEnabled

输入:boolean

默认值:True

启用或禁用服务器端JavaScript执行禁用时,不能使用执行JavaScript代码的服务器端执行的操作,例如$where查询运算符,mapReduce 命令和db.collection.mapReduce()方法, group命令和db.collection.group() 方法。

security.redactClientLogData

输入:boolean

3.4版中的新功能:仅适用于MongoDB Enterprise。

一个mongodmongos与运行security.redactClientLogData重新编辑登录前伴随一个给定的日志事件的任何消息。这可以防止mongodmongos将存储在数据库中的潜在敏感数据写入诊断日志。日志中仍会显示错误或操作代码,行号和源文件名等元数据。

security.redactClientLogData静态加密和 TLS / SSL(传输加密)结合使用, 以帮助符合法规要求。

例如,MongoDB部署可能会在一个或多个集合中存储个人身份信息(PII)。mongodmongos记录的事件,如那些涉及CRUD操作,分片的元数据等,这是可能的mongod或者mongos可以暴露PII因为这些测井操作的一部分。mongodmongosrunning with security.redactClientLogData在输出到日志之前删除伴随这些事件的任何消息,从而有效地删除PII。

由于缺少与日志事件相关的数据,因此运行mongodmongos运行的诊断security.redactClientLogData可能更加困难。有关日志输出效果的示例,请参阅 进程日志记录手册页security.redactClientLogData

您可以在运行mongodmongos 使用setParameterdatabase命令时启用或禁用日志编辑

复制
复制
db.adminCommand(
  { setParameter: 1, redactClientLogData : true | false }
)

密钥管理配置选项

复制
复制
security:
   enableEncryption: <boolean>
   encryptionCipherMode: <string>
   encryptionKeyFile: <string>
   kmip:
      keyIdentifier: <string>
      rotateMasterKey: <boolean>
      serverName: <string>
      port: <string>
      clientCertificateFile: <string>
      clientCertificatePassword: <string>
      clientCertificateSelector: <string>
      serverCAFile: <string>
security.enableEncryption

输入:boolean

默认值:False

版本3.2中的新功能:为WiredTiger存储引擎启用加密。您必须设置为true传递加密密钥和配置。

企业特色

仅适用于MongoDB Enterprise。

security.encryptionCipherMode

输入:string

默认值AES256-CBC

版本3.2中的新功能。

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

模式描述
AES256-CBC 密码块链接模式下的256位高级加密标准
AES256-GCM

伽罗瓦/计数器模式下的256位高级加密标准

仅在Linux上可用。

在4.0版中更改: Windows上的MongoDB Enterprise不再支持AES256-GCM此密码现在仅在Linux上可用。

企业特色

仅适用于MongoDB Enterprise。

security.encryptionKeyFile

输入:string

版本3.2中的新功能。

通过KMIP 以外的进程管理密钥时本地密钥文件的路径仅在通过KMIP以外的流程管理密钥时设置。如果数据已使用KMIP加密,MongoDB将抛出错误。

需要security.enableEncryptiontrue

企业特色

仅适用于MongoDB Enterprise。

security.kmip.keyIdentifier

输入:string

版本3.2中的新功能。

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

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

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

企业特色

仅适用于MongoDB Enterprise。

security.kmip.rotateMasterKey

输入:boolean

默认值:False

版本3.2中的新功能。

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

企业特色

仅适用于MongoDB Enterprise。

也可以看看

KMIP主钥匙旋转

security.kmip.serverName

输入:string

版本3.2中的新功能。

运行KMIP服务器的密钥管理解决方案的主机名或IP地址。要求security.enableEncryption是真的。

企业特色

仅适用于MongoDB Enterprise。

security.kmip.port

输入:string

默认值:5696

版本3.2中的新功能。

KMIP服务器正在侦听的端口号。需要 security.kmip.serverName提供。要求security.enableEncryption是真的。

企业特色

仅适用于MongoDB Enterprise。

security.kmip.clientCertificateFile

输入:string

版本3.2中的新功能。

包含用于向MongipDB验证KMIP服务器的客户端证书的路径的字符串。需要security.kmip.serverName提供。

注意

从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。security.kmip.clientCertificateSelector

企业特色

仅适用于MongoDB Enterprise。

security.kmip.clientCertificatePassword

输入:string

版本3.2中的新功能。

用于解密客户端证书(即security.kmip.clientCertificateFile的密码 ,用于向MongipDB验证KMIP服务器。仅在证书已加密时使用该选项。

企业特色

仅适用于MongoDB Enterprise。

security.kmip.clientCertificateSelector

输入:string

版本4.0中的新功能:在Windows和macOS上可用作替代版本security.kmip.clientCertificateFile

security.kmip.clientCertificateFilesecurity.kmip.clientCertificateSelector选项是互斥的。您只能指定一个。

指定证书属性,以便从操作系统的证书存储中选择匹配的证书,以将MongoDB验证到KMIP服务器。

security.kmip.clientCertificateSelector接受格式的参数,<property>=<value> 其中属性可以是以下之一:

属性值类型描述
subject ASCII字符串 证书上的主题名称或通用名称
thumbprint 十六进制字符

表示为十六进制的字节序列,用于通过SHA-1摘要标识公钥。

thumbprint有时被称为一个 fingerprint

企业特色

仅适用于MongoDB Enterprise。

security.kmip.serverCAFile

输入:string

版本3.2中的新功能。

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

注意

从4.0开始,在macOS或Windows上,您可以使用操作系统安全存储中的证书而不是PEM密钥文件。security.kmip.clientCertificateSelector使用安全存储时,您不需要,但也可以指定security.kmip.serverCAFile

企业特色

仅适用于MongoDB Enterprise。

security.sasl选项

复制
复制
security:
   sasl:
      hostName: <string>
      serviceName: <string>
      saslauthdSocketPath: <string>
security.sasl.hostName

输入:string

用于配置SASL和Kerberos身份验证的完全限定服务器域名。SASL主机名仅覆盖SASL和Kerberos配置的主机名。

对于mongo外壳等的MongoDB工具连接到新的hostName,看 gssapiHostName在选项mongo壳和其他工具。

security.sasl.serviceName

输入:string

使用SASL注册的服务名称。此选项允许您 基于每个实例覆盖Kerberos主体名称的默认Kerberos 服务名称组件如果未指定,则默认值为mongodb

MongoDB仅允许在启动时设置此选项。将 setParameter不能更改此设置。

此选项仅在MongoDB Enterprise中可用。

重要

确保您的驱动程序支持备用服务名称。对于mongo外壳等的MongoDB工具连接到新的serviceName,看到的 gssapiServiceName选项。

security.sasl.saslauthdSocketPath

输入:string

UNIX域套接字文件的路径saslauthd

security.ldap选项

复制
复制
security:
   ldap:
      servers: <string>
      bind:
         method: <string>
         saslMechanisms: <string>
         queryUser: <string>
         queryPassword: <string>
         useOSDefaults: <boolean>
      transportSecurity: <string>
      timeoutMS: <int>
      userToDNMapping: <string>
      authz:
         queryTemplate: <string>
security.ldap.servers

输入:string

3.4版中的新功能:仅适用于MongoDB Enterprise。

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

如果LDAP基础结构将LDAP目录分区到多个LDAP服务器上,请将其任何复制实例指定一个 LDAP服务器security.ldap.serversMongoDB支持RFC 4511 4.1.10中定义的以下LDAP引用不要security.ldap.servers 用于列出基础架构中的每个LDAP服务器。

可以在运行mongodmongos使用时 配置此设置setParameter

如果未设置,mongodmongos无法使用LDAP身份验证或授权

security.ldap.bind.queryUser

输入:string

3.4版中的新功能:仅适用于MongoDB Enterprise。

身份与mongodmongos结合如,连接到或LDAP服务器上执行查询时。

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

您必须使用queryUserqueryPassword

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

可以在运行mongodmongos使用时 配置此设置setParameter

注意

Windows MongoDB部署可以使用bindWithOSDefaults 而不是queryUserqueryPassword你不能同时指定queryUser,并bindWithOSDefaults在同一时间。

security.ldap.bind.queryPassword

输入:string

3.4版中的新功能:仅适用于MongoDB Enterprise。

用于在使用时绑定到LDAP服务器的密码 queryUser您必须使用queryPassword与 queryUser

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

可以在运行mongodmongos使用时 配置此设置setParameter

注意

Windows MongoDB部署可以使用bindWithOSDefaults 而不是queryPasswordqueryPassword你不能同时指定queryPassword,并bindWithOSDefaults在同一时间。

security.ldap.bind.useOSDefaults

输入:boolean

默认值:False

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

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

仅在以下情况下需

使用useOSDefaults替换queryUser和 queryPassword

security.ldap.bind.method

输入:string

默认值:简单

3.4版中的新功能:仅适用于MongoDB Enterprise。

用于向LDAP服务器进行身份验证的方法mongodmongos用途。使用queryUserqueryPassword连接LDAP服务器。

method 支持以下值:

如果指定sasl,则可以使用配置可用的SASL机制security.ldap.bind.saslMechanismsmongodmongos默认使用DIGEST-MD5机制。

security.ldap.bind.saslMechanisms

输入:string

默认值:DIGEST-MD5

3.4版中的新功能:仅适用于MongoDB Enterprise。

逗号分隔的SASL机制列表,mongod或者mongos在对LDAP服务器进行身份验证时可以使用。mongodmongos与LDAP服务器必须同意在至少一种机制。mongodmongos 动态加载在运行时安装在主机上的任何SASL机制库。

安装和配置适当的库两者的所选择的SASL机构(一个或多个)mongodmongos主机和远程LDAP服务器主机。默认情况下,您的操作系统可能包含某些SASL库。请参阅与每个SASL机制关联的文档,以获取有关安装和配置的指导。

如果使用的是GSSAPI与使用SASL机制 Kerberos身份验证,验证了以下 mongodmongos主机:

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

设置methodsasl使用此选项。

注意

有关SASL机制的完整列表,请参阅 IANA列表请参阅LDAP或Active Directory服务的文档,以确定与服务兼容的SASL机制。

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

有关SASL的更多信息,请遵循以下资源:

security.ldap.transportSecurity

输入:string

默认值:tls

3.4版中的新功能:仅适用于MongoDB Enterprise。

默认情况下,mongodmongos创建与LDAP服务器的TLS / SSL安全连接。

对于Linux部署,您必须在/etc/openldap/ldap.conf文件中配置相应的TLS选项 您的操作系统的软件包管理器通过libldap依赖项创建此文件作为MongoDB Enterprise安装的一部分 查看文档中 的ldap.conf OpenLDAP的文档 进行更完整的说明。TLS Options

对于Windows部署,必须将LDAP服务器CA证书添加到Windows证书管理工具。该工具的确切名称和功能可能因操作系统版本而异。有关证书管理的更多信息,请参阅适用于您的Windows版本的文档。

设置transportSecuritynone禁用TLS / SSL之间mongodmongos和LDAP服务器。

警告

设置transportSecuritynone发送明文信息之间可能凭证mongodmongos和LDAP服务器。

security.ldap.timeoutMS

输入:int

默认值:10000

3.4版中的新功能:仅适用于MongoDB Enterprise。

以毫秒为单位mongodmongos应等待LDAP服务器响应请求的时间量。

timeoutMS如果失败源是连接超时,则增加值可能会阻止MongoDB服务器和LDAP服务器之间的连接失败。减少值会timeoutMS减少MongoDB等待LDAP服务器响应的时间。

可以在运行mongodmongos使用时 配置此设置setParameter

security.ldap.userToDNMapping

输入:string

3.4版中的新功能:仅适用于MongoDB Enterprise。

将提供给用户名mongodmongos用于身份验证的用户名映射到LDAP专有名称(DN)。userToDNMapping在以下情况下,您可能需要使用将用户名转换为LDAP DN:

  • 使用简单的LDAP绑定执行LDAP身份验证,其中用户使用不是完整LDAP DN的用户名对MongoDB进行身份验证。
  • 使用它需要DN。LDAP authorization query template
  • 使用不同的身份验证机制(例如x509,kerberos)将使用身份验证的客户端的用户名转换为完整的LDAP DN以进行授权。

userToDNMapping期望引用封闭的JSON字符串表示有序的文档数组。每个文档都包含一个正则表达式match以及用于转换传入用户名的模板substitutionldapQuery模板。

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

复制
复制
{
  match: "<regex>"
  substitution: "<LDAP DN>" | ldapQuery: "<LDAP Query>"
}
领域描述
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中。每个大括号括起来的数值都将由通过表达式从认证用户名中提取的相应正则表达式捕获组替换matchmongod或者mongos对LDAP服务器执行查询以检索经过身份验证的用户的LDAP DN。mongod或者只mongos需要一个返回的结果即可使转换成功,mongod或者mongos跳过此转换。 "ou=engineering,dc=example,dc=com??one?(user={0})"

注意

的解释 RFC4514, RFC4515, RFC4516,或LDAP查询超出范围的MongoDB的文档。请直接查看RFC或使用您首选的LDAP资源。

对于阵列中的每个文档,您必须使用substitution或 ldapQuery不能在同一文档中指定两者。

执行身份验证或授权,mongodmongos按给定顺序逐步遍历阵列中的每个文档时,请根据match过滤器检查身份验证用户名如果找到匹配项, mongodmongos应用转换并使用输出来验证用户。mongod或者mongos不检查数组中的剩余文档。

如果给定文档与提供的身份验证名称不匹配,或者文档描述的转换失败,mongod或者mongos继续通过文档列表以查找其他匹配项。如果在任何文档中找不到匹配项,mongodmongos返回错误。

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

重要

您必须将数组userToDNMapping作为字符串传递给它。

复制
复制
"[
   {
      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或者mongos对LDAP服务器执行此查询,返回结果 "cn=bob,ou=dba,dc=example,dc=com"

如果userToDNMapping未设置,mongodmongos在尝试针对LDAP服务器对用户进行身份验证或授权时不对用户名应用任何转换。

可以在运行mongodmongos使用 setParameterdatabase命令配置此设置

security.ldap.authz.queryTemplate

输入:string

3.4版中的新功能:仅适用于MongoDB Enterprise。

格式化的相对LDAP查询URL,符合RFC4515RFC4516mongod用于获取经过身份验证的用户所属的LDAP组。该查询与指定的主机相关security.ldap.servers

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

构造查询URL时,请确保LDAP参数的顺序遵循RFC4516:

复制
复制
[ dn  [ ? [attributes] [ ? [scope] [ ? [filter] [ ? [Extensions] ] ] ] ] ]

如果您的查询包含属性,则mongod假定查询检索此实体所属的DN。

如果查询不包含属性,则mongod假定查询检索用户所属的所有实体。

对于查询返回的每个LDAP DN,mongod为授权用户分配admin数据库上的相应角色如果admin数据库上的角色 与DN完全匹配,则mongod授予用户分配给该角色的角色和权限。有关db.createRole()创建角色的更多信息,请参阅 方法。

此LDAP查询返回LDAP用户对象memberOf属性中列出的所有组 

复制
复制
"{USER}?memberOf?base"

您的LDAP配置可能不包含memberOf作为用户架构一部分属性,可能拥有用于报告组成员身份的不同属性,或者可能不会通过属性跟踪组成员身份。根据您自己的唯一LDAP配置配置查询。

如果未设置,mongod则无法授权用户使用LDAP。

可以mongod使用 setParameterdatabase命令在运行时配置此设置

注意

RFC4515, RFC4516或LDAP查询的解释超出了MongoDB文档的范围。请直接查看RFC或使用您首选的LDAP资源。

setParameter选项

setParameter

设置MongoDB服务器参数中描述的MongoDB参数或 参数

要在YAML配置文件中设置参数,请使用以下格式:

复制
复制
setParameter:
   <parameter1>: <value1>
   <parameter2>: <value2>

例如,要enableLocalhostAuthBypass在配置文件中指定

复制
复制
setParameter:
   enableLocalhostAuthBypass: false

LDAP参数

setParameter.ldapUserCacheInvalidationInterval

输入:int

默认值:30

使用LDAP授权的服务器mongodmongos服务器一起使用

外部用户缓存刷新之间的间隔(以秒为单位)mongodmongos等待。外部用户缓存之后mongodmongos刷新下一个LDAP授权用户的操作,MongoDB从LDAP服务器重新获取授权数据。

增加指定的值会增加时间量, mongod或者mongosLDAP服务器可能不同步,但会减少LDAP服务器上的负载。相反,减小指定的值会减少时间,mongod或者mongos在增加LDAP服务器上的负载时LDAP服务器可能会不同步。

复制
复制
setParameter:
   ldapUserCacheInvalidationInterval: <int>

storage选项

复制
复制
storage:
   dbPath: <string>
   indexBuildRetry: <boolean>
   repairPath: <string>
   journal:
      enabled: <boolean>
      commitIntervalMs: <num>
   directoryPerDB: <boolean>
   syncPeriodSecs: <int>
   engine: <string>
   mmapv1:
      preallocDataFiles: <boolean>
      nsSize: <int>
      quota:
         enforced: <boolean>
         maxFilesPerDB: <int>
      smallFiles: <boolean>
      journal:
         debugFlags: <int>
         commitIntervalMs: <num>
   wiredTiger:
      engineConfig:
         cacheSizeGB: <number>
         journalCompressor: <string>
         directoryForIndexes: <boolean>
      collectionConfig:
         blockCompressor: <string>
      indexConfig:
         prefixCompression: <boolean>
   inMemory:
      engineConfig:
         inMemorySizeGB: <number>
storage.dbPath

输入:string

默认值/data/db在Linux和macOS上,\data\db在Windows上

mongod实例存储其数据的目录

如果使用程序包管理系统安装了MongoDB,请检查/etc/mongod.conf程序包提供的 文件以查看指定的目录。

storage.dbPath设置仅适用于mongod

Linux软件包init脚本不希望storage.dbPath更改默认值。如果使用Linux软件包并进行更改storage.dbPath,则必须使用自己的init脚本并禁用内置脚本。

storage.indexBuildRetry

输入:boolean

默认值:True

指定是否mongod在下次启动时重建不完整的索引。这适用于在mongod索引构建过程中关闭或停止后重新启动的情况在这种情况下,mongod始终删除任何不完整的索引,然后,默认情况下,尝试重建它们。要停止mongod 重建索引,请将此选项设置为false

在版本4.0中更改:该设置storage.indexBuildRetry不能与replication.replSetName一起使用 

storage.indexBuildRetry设置仅适用于mongod

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

storage.repairPath

输入:string

默认值_tmp_repairDatabase_<num>下的目录 dbPath

仅适用于MMAPv1存储引擎。

MongoDB在--repair操作期间将使用的工作目录 --repair完成后, storage.repairPath目录是空的,并且 dbPath包含了修复的文件。

storage.repairPath设置仅适用于mongod

storage.journal.enabled

输入:boolean

默认值true在64位系统上,false在32位系统上

启用或禁用持久性日志以确保数据文件保持有效和可恢复。此选项仅在您指定storage.dbPath设置时适用 mongod默认情况下启用日记功能。

storage.journal.enabled设置仅适用于mongod

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

从MongoDB 4.0开始,您无法指定--nojournal选项或使用WiredTiger存储引擎的副本集成员。storage.journal.enabled: false

storage.journal.commitIntervalMs

类型:数字

默认值:100或30

版本3.2中的新功能。

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

在MMAPv1上,如果日志与数据文件位于不同的块设备(例如,物理卷,RAID设备或LVM卷)上,则默认日志提交间隔为30毫秒。另外,在MMAPv1上,当一个写操作处于j:true挂起状态时,mongod将减少commitIntervalMs到设定值的三分之一。

在WiredTiger上,默认日志提交间隔为100毫秒。此外,写入j:true将导致日志的立即同步。

storage.journal.commitIntervalMs设置仅适用于mongod

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

storage.directoryPerDB

输入:boolean

默认值:False

true,MongoDB使用单独的目录来存储每个数据库的数据。目录位于storage.dbPath目录下,每个子目录名称对应于数据库名称。

在3.0版中更改:要更改storage.directoryPerDB现有部署选项,必须mongod使用新storage.directoryPerDB 值新数据目录(storage.dbPath值)重新启动实例,然后重新填充数据。

  • 对于独立实例,您可以mongodump在现有实例上使用,停止实例,使用新storage.directoryPerDB新数据目录重新启动 ,并用于 mongorestore填充新数据目录。
  • 对于副本集,您可以通过停止辅助成员,使用新storage.directoryPerDB 新数据目录重新启动来以滚动方式进行更新,并使用初始同步来填充新数据目录。要更新所有成员,请先从辅助成员开始。然后逐步降低主要成员,并更新降低成员。

storage.directoryPerDB设置仅适用于mongod

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

storage.syncPeriodSecs

类型:数字

默认值:60

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

不要在生产系统上设置此值。在几乎所有情况下,您都应该使用默认设置。

警告

如果设置storage.syncPeriodSecs0,MongoDB将不会将内存映射文件同步到磁盘。

mongod过程非常快速地将数据写入日志并且懒惰地写入数据文件。storage.syncPeriodSecs对没有任何影响 journal的文件或日志,但是如果storage.syncPeriodSecs设置为0杂志最终将消耗所有可用的磁盘空间。如果设置storage.syncPeriodSecs0用于测试目的,你也应该设置--nojournaltrue

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

storage.syncPeriodSecs设置仅适用于mongod

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

storage.engine

默认值wiredTiger

版本4.0中已更改: MongoDB不推荐使用MMAPv1存储引擎。

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

描述
wiredTiger 指定WiredTiger存储引擎
inMemory

指定内存存储引擎

3.2版中的新功能:仅适用于MongoDB Enterprise。

mmapv1 (在MongoDB 4.0中不推荐使用) 指定MMAPv1存储引擎

如果您尝试启动mongod一个 storage.dbPath包含通过比指定的其他存储引擎产生的数据文件storage.enginemongod 将拒绝启动。

storage.mmapv1选项

弃用

MongoDB 4.0弃用了MMAPv1存储引擎,并将在以后的版本中删除MMAPv1。要将MMAPv1存储引擎部署更改为 WiredTiger存储引擎,请参阅:

复制
复制
storage:
   mmapv1:
      preallocDataFiles: <boolean>
      nsSize: <int>
      quota:
         enforced: <boolean>
         maxFilesPerDB: <int>
      smallFiles: <boolean>
      journal:
         debugFlags: <int>
         commitIntervalMs: <num>
storage.mmapv1.preallocDataFiles

输入:boolean

默认值:True

仅适用于MMAPv1存储引擎。

启用或禁用数据文件的预分配。默认情况下,MongoDB不预先分配数据文件。

storage.mmapv1.preallocDataFiles设置仅适用于mongod

storage.mmapv1.nsSize

类型:整数

默认值:16

仅适用于MMAPv1存储引擎。

命名空间文件的默认大小,即以文件结尾的文件.ns每个集合和索引都算作命名空间。

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

storage.mmapv1.nsSize设置仅适用于mongod

storage.mmapv1.quota.enforced

类型:布尔值

默认值:false

仅适用于MMAPv1存储引擎。

启用或禁用每个数据库可以拥有的数字数据文件的最大限制。使用该storage.mmapv1.quota.enforced选项运行时,MongoDB每个数据库最多包含8个数据文件。使用调整配额 storage.quota.maxFilesPerDB

storage.mmapv1.quota.enforced设置仅适用于mongod

storage.mmapv1.quota.maxFilesPerDB

类型:整数

默认值:8

仅适用于MMAPv1存储引擎。

每个数据库的数据文件数限制。storage.mmapv1.quota.maxFilesPerDB 选项要求您设置storage.quota.enforced

storage.mmapv1.quota.maxFilesPerDB设置仅适用于mongod

storage.mmapv1.smallFiles

输入:boolean

默认值:False

仅适用于MMAPv1存储引擎。

true,MongoDB使用较小的默认文件大小。storage.mmapv1.smallFiles选项减少了数据文件的初始大小,并将最大大小限制为512 MB。storage.mmapv1.smallFiles还将每个日志 文件的大小从1千兆字节减少到128兆字节。使用storage.mmapv1.smallFiles,如果你有大量的数据库,每个保存数据少量。

storage.mmapv1.smallFiles选项可能导致mongod实例创建大量文件,这可能会影响较大数据库的性能。

storage.mmapv1.smallFiles设置仅适用于mongod

storage.mmapv1.journal.debugFlags

类型:整数

仅适用于MMAPv1存储引擎。

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

storage.mmapv1.journal.debugFlags选项仅适用于mongod

storage.mmapv1.journal.commitIntervalMs

类型:数字

从版本3.2开始不推荐使用 MongoDB 3.2弃用了该 storage.mmapv1.journal.commitIntervalMs设置。请 storage.journal.commitIntervalMs改用。

不推荐使用的设置充当新storage.journal.commitIntervalMS设置的别名, 并适用于MMAPv1或WiredTiger存储引擎。

storage.wiredTiger选项

复制
复制
storage:
   wiredTiger:
      engineConfig:
         cacheSizeGB: <number>
         journalCompressor: <string>
         directoryForIndexes: <boolean>
      collectionConfig:
         blockCompressor: <string>
      indexConfig:
         prefixCompression: <boolean>
storage.wiredTiger.engineConfig.cacheSizeGB

输入:float

WiredTiger将用于所有数据的内部缓存的最大大小。

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

从3.4开始,WiredTiger内部缓存默认使用较大的一个:

  • 50%(RAM - 1 GB),或
  • 256 MB。

例如,在总共4GB RAM的系统上,WiredTiger缓存将使用1.5GB的RAM()。相反,总共1.25 GB RAM的系统将为WiredTiger缓存分配256 MB,因为这超过总RAM的一半减去1千兆字节()。0.5 (4 GB -GB) 1.5 GB0.5 (1.25 GB GB) 128 MB 256 MB

避免将WiredTiger内部缓存大小增加到其默认值以上。

使用WiredTiger,MongoDB同时使用WiredTiger内部缓存和文件系统缓存。

通过文件系统缓存,MongoDB自动使用WiredTiger缓存或其他进程未使用的所有可用内存。

注意

storage.wiredTiger.engineConfig.cacheSizeGB限制WiredTiger内部高速缓存的大小。操作系统将使用可用的空闲内存用于文件系统缓存,这允许压缩的MongoDB数据文件保留在内存中。此外,操作系统将使用任何空闲RAM来缓冲文件系统块和文件系统缓存。

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

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

如果您mongod无法访问系统中所有可用RAM 的容器(例如lxc, cgroupsDocker等)中运行,则必须设置为小于容器中可用RAM量的值。确切的数量取决于容器中运行的其他进程。storage.wiredTiger.engineConfig.cacheSizeGB

storage.wiredTiger.engineConfig.journalCompressor

默认值:snappy

版本3.0.0中的新功能。

用于压缩WiredTiger日志数据的压缩类型。

可用的压缩机有:

storage.wiredTiger.engineConfig.directoryForIndexes

输入:boolean

默认值:false

版本3.0.0中的新功能。

storage.wiredTiger.engineConfig.directoryForIndexestruemongod存储在数据(即下单独子目录索引和集合storage.dbPath)目录。具体而言,mongod将索引存储在已命名的子目录中 index,并将集合数据存储在名为的子目录中 collection

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

storage.wiredTiger.collectionConfig.blockCompressor

默认值:snappy

版本3.0.0中的新功能。

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

可用的压缩机有:

storage.wiredTiger.collectionConfig.blockCompressor影响创建的所有集合。如果更改storage.wiredTiger.collectionConfig.blockCompressor现有MongoDB部署的值,则所有新集合都将使用指定的压缩器。现有集合将继续使用创建时指定的压缩器,或当时的默认压缩器。

storage.wiredTiger.indexConfig.prefixCompression

默认值:true

版本3.0.0中的新功能。

启用或禁用索引数据的前缀压缩

指定true索引数据storage.wiredTiger.indexConfig.prefixCompression启用前缀压缩,或false禁用索引数据的前缀压缩。

storage.wiredTiger.indexConfig.prefixCompression设置会影响所有创建的索引。如果更改storage.wiredTiger.indexConfig.prefixCompression现有MongoDB部署的值,则所有新索引都将使用前缀压缩。现有索引不受影响。

storage.inmemory选项

复制
复制
storage:
   inMemory:
      engineConfig:
         inMemorySizeGB: <number>
storage.inMemory.engineConfig.inMemorySizeGB

输入:float

默认值:物理RAM的50%减去1 GB

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

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

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

企业特色

仅适用于MongoDB Enterprise。

operationProfiling选项

复制
复制
operationProfiling:
   mode: <string>
   slowOpThresholdMs: <int>
   slowOpSampleRate: <double>
operationProfiling.mode

输入:string

默认值off

指定应分析哪些操作以下分析器级别可用:

水平描述
off 分析器已关闭,不会收集任何数据。这是默认的探查器级别。
slowOp 探查器收集的数据用于超过值的操作slowms
all 分析器收集所有操作的数据。

重要

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

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

operationProfiling.slowOpThresholdMs

类型:整数

默认值:100

慢的操作时间阈值,单位为毫秒。运行时间超过此阈值的操作被认为很慢

logLevel设置0为时,MongoDB 以确定的速率记录对诊断日志的慢速操作 slowOpSampleRate在更高的 logLevel设置下,无论延迟如何,所有操作都会显示在诊断日志中。

版本4.0中已更改:slowOpThresholdMs设置可用于mongodmongos在早期版本中,slowOpThresholdMs 仅适用于mongod

  • 对于mongod情况下,设定既影响诊断日志,如果启用,探查。
  • 对于mongos情况下,该设置会影响诊断日志,而不是探查,因为分析是不可用的mongos
operationProfiling.slowOpSampleRate

类型:双

默认值:1.0

应分析或记录慢速操作部分。 operationProfiling.slowOpSampleRate接受0到1之间的值,包括0和1。

版本4.0中已更改:slowOpSampleRate设置可用于mongodmongos在早期版本中,slowOpSampleRate 仅适用于mongod

  • 对于mongod情况下,设定既影响诊断日志,如果启用,探查。
  • 对于mongos情况下,该设置会影响诊断日志,而不是探查,因为分析是不可用的mongos

replication选项

复制
复制
replication:
   oplogSizeMB: <int>
   replSetName: <string>
   secondaryIndexPrefetch: <string>
   enableMajorityReadConcern: <boolean>
replication.oplogSizeMB

类型:整数

复制操作日志的最大大小(以兆字节为单位)(即oplog)。

注意

从MongoDB 4.0开始,oplog可以超过其配置的大小限制,以避免删除majority commit point

默认情况下,该mongod进程基于可用的最大空间量创建oplog对于64位系统,oplog通常占可用磁盘空间的5%。

一旦mongod第一次创建了oplog,更改replication.oplogSizeMB选项将不会影响oplog的大小。

要更改正在运行的副本集成员的oplog大小,请使用 replSetResizeOplog管理命令。replSetResizeOplog使您可以动态调整oplog的大小,而无需重新启动该mongod过程。

有关更多信息,请参阅Oplog大小

replication.oplogSizeMB设置仅适用于mongod

replication.replSetName

输入:string

作为其mongod一部分的副本集的名称副本集中的所有主机必须具有相同的集名称。

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

replication.replSetName设置仅适用于mongod

从MongoDB 4.0开始:

replication.secondaryIndexPrefetch

输入:string

默认值:全部

存储引擎特定功能

replication.secondaryIndexPrefetch仅适用于mmapv1 存储引擎。

从oplog应用操作之前副本集的辅助成员加载到内存中的索引默认情况下,在从oplog应用操作之前,辅助节点将与操作相关的所有索引加载到内存中。

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

描述
none 辅助节点不会将索引加载到内存中。
all 辅助节点加载与操作相关的所有索引。
_id_only 辅助节点不会在已存在的_id索引之外的内存中加载其他索引

replication.secondaryIndexPrefetch设置仅适用于mongod

replication.enableMajorityReadConcern

默认值:True

从MongoDB 3.6开始,MongoDB "majority"默认支持 读取问题。

对于MongoDB 4.0.3+和3.6.1+,您可以禁用读取问题, "majority"以防止存储缓存压力使用三成员主辅仲裁器(PSA)体系结构固定部署。有关禁用读取问题的详细信息"majority",请参阅 禁用读取关注点

要禁用,请设置replication.enableMajorityReadConcern为false。

重要

通常,"majority"除非必要否则请避免禁用读取问题。但是,如果您有一个具有主要辅助仲裁(PSA)体系结构的三成员副本集或具有三个成员PSA分片的分片集群,请禁用以防止存储缓存压力导致部署无法运行。

禁用"majority"读取问题会禁用对更改流的支持

禁用"majority"不会影响 多文档事务 ; 即,即使读取关注“多数”被禁用,您也可以为多文档事务指定读取关注“多数”。

replication.enableMajorityReadConcern 对MongoDB版本没有影响:4.0.0,4.0.1,4.0.2,3.6.0。

sharding选项

复制
复制
sharding:
   clusterRole: <string>
   archiveMovedChunks: <boolean>
sharding.clusterRole

输入:string

mongod实例在分片集群中的角色将此设置设置为以下之一:

描述
configsvr 将此实例作为配置服务器启动27019默认情况下,实例在端口上启动
shardsvr 启动此实例为碎片27018默认情况下,实例在端口上启动

注意

设置sharding.clusterRole要求mongod 实例使用复制运行。要将实例部署为副本集成员,请使用该replSetName 设置并指定副本集的名称。

sharding.clusterRole设置仅适用于mongod

sharding.archiveMovedChunks

输入:boolean

在3.2版中更改:3.2开始,MongoDB false用作默认值。

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

auditLog选项

注意

仅在MongoDB Enterprise 和MongoDB Atlas中可用

复制
复制
auditLog:
   destination: <string>
   format: <string>
   path: <string>
   filter: <string>
auditLog.destination

输入:string

版本2.6中的新功能。

设置后,auditLog.destination启用审核并指定所有审核事件的位置mongosmongod发送。

auditLog.destination 可以具有以下值之一:

描述
syslog

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

系统日志消息限制可能导致审计消息被截断。审计系统既不会检测到截断,也不会发生错误。

console 将审核事件输出为stdoutJSON格式。
file 将审计事件输出到以指定auditLog.path格式指定 的文件 auditLog.format

注意

仅在MongoDB Enterprise 和MongoDB Atlas中可用

auditLog.format

输入:string

版本2.6中的新功能。

输出文件的格式审核,如果destinationfile该 auditLog.format选项可以具有以下值之一:

描述
JSON 将JSON格式的审核事件输出到指定的文件中auditLog.path
BSON 将BSON二进制格式的审计事件输出到指定的文件中auditLog.path

将审核事件打印为JSON格式的文件会降低服务器性能,而不是以BSON格式打印到文件。

注意

仅在MongoDB Enterprise 和MongoDB Atlas中可用

auditLog.path

输入:string

版本2.6中的新功能。

输出文件的审核,如果 destination有值fileauditLog.path 选项可以采用完整路径名或相对路径名。

注意

仅在MongoDB Enterprise 和MongoDB Atlas中可用

auditLog.filter

类型:文档的字符串表示形式

版本2.6中的新功能。

该过滤器来限制类型的操作审计系统记录。该选项采用表单的查询文档的字符串表示形式:

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

<field>可以是在该监查消息的任何字段,包括字段中返回 PARAM文件。这 <expression>是一个查询条件表达式

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

要在配置文件中指定审计筛选器,必须使用配置文件的YAML格式。

注意

仅在MongoDB Enterprise 和MongoDB Atlas中可用

snmp选项

注意

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

复制
复制
snmp:
   subagent: <boolean>
   master: <boolean>
snmp.subagent

输入:boolean

如果snmp.subagenttrue,SNMP运行的子代理。有关更多信息,请参阅 在Linux上使用SNMP监控MongoDB

snmp.subagent设置仅适用于mongod

snmp.master

输入:boolean

snmp.mastertrue,SNMP运行作为一个主站。有关更多信息,请参阅 在Linux上使用SNMP监控MongoDB

snmp.master设置仅适用于mongod

mongos-only选项

在版本3.4中更改: MongoDB 3.4删除sharding.chunkSize和 sharding.autoSplit设置。

复制
复制
replication:
   localPingThresholdMs: <int>

sharding:
   configDB: <string>
replication.localPingThresholdMs

类型:整数

默认值:15

mongos用于确定哪些辅助副本集成员从客户端传递读取操作的ping时间(以毫秒为单位)默认值15对应于所有客户端驱动程序中的默认值

mongos收到允许读取辅助成员的请求时, mongos意愿:

  • 找到具有最低ping时间的集合的成员。

  • 构造一个副本集成员列表,该列表位于该集合中最近的合适成员的15毫秒的ping时间内。

    如果为该replication.localPingThresholdMs选项指定值mongos则将构造在此值允许的延迟范围内的副本成员列表。

  • 从此列表中随机选择要读取的成员。

用于成员的replication.localPingThresholdMs设置比较的ping时间是最近ping时间的移动平均值,最多每10秒计算一次。因此,某些查询可能会达到超过阈值的成员,直到mongos重新计算平均值。

有关 详细信息,请参阅读取首选项文档 的“ 读取副本集首选项”部分

sharding.configDB

输入:string

版本3.2中已更改。

配置服务器用于 分片群集

从MongoDB 3.2开始,可以将分片群集的配置服务器部署为副本集副本集配置服务器必须运行WiredTiger存储引擎MongoDB 3.2不赞成mongod为配置服务器使用三个镜像 实例。

指定配置服务器副本集名称以及配置服务器副本集的至少一个成员的主机名和端口。

复制
复制
sharding:
  configDB: <configReplSetName>/cfg1.example.net:27017, cfg2.example.net:27017,...

分片mongos群集实例必须指定相同的配置服务器副本集名称,但可以指定副本集的不同成员的主机名和端口。

Windows服务选项

复制
复制
processManagement:
   windowsService:
      serviceName: <string>
      displayName: <string>
      description: <string>
      serviceUser: <string>
      servicePassword: <string>
processManagement.windowsService.serviceName

输入:string

默认值:MongoDB

的服务名称mongosmongod作为Windows服务运行时。将此名称与和 操作一起使用。net start<name>net stop <name>

您必须processManagement.windowsService.serviceName--install--remove选项一起使用

processManagement.windowsService.displayName

输入:string

默认值:MongoDB

在服务管理应用程序上为MongoDB列出的名称。

processManagement.windowsService.description

输入:string

默认值:MongoDB服务器

运行mongosmongod服务说明。

您必须processManagement.windowsService.description--install选项一起使用 

对于包含空格的描述,必须将描述括在引号中。

processManagement.windowsService.serviceUser

输入:string

mongosmongod在某一用户的上下文中的服务。此用户必须具有“作为服务登录”权限。

您必须processManagement.windowsService.serviceUser--install选项一起使用 

processManagement.windowsService.servicePassword

输入:string

该密码<user>用于mongosmongod与运行时processManagement.windowsService.serviceUser选项。

您必须processManagement.windowsService.servicePassword--install选项一起使用 

 

 

 

配置文件设置和命令行选项映射

下表映射了配置文件设置以及相关mongod 和mongos命令行选项。

配置文件设置mongodmongos命令行选项
auditLog.destination
auditLog.filter
auditLog.format
auditLog.path
cloud.monitoring.free.state
cloud.monitoring.free.tag
net.bindIp
net.bindIpAll
net.compression.compressors
net.ipv6
net.maxIncomingConnections
net.port
net.serviceExecutor
net.ssl.allowConnectionsWithoutCertificates
net.ssl.allowInvalidCertificates
net.ssl.allowInvalidHostnames
net.ssl.CAFile
net.ssl.certificateSelector
net.ssl.clusterCAFile
net.ssl.clusterCertificateSelector
net.ssl.clusterFile
net.ssl.clusterPassword
net.ssl.CRLFile
net.ssl.disabledProtocols
net.ssl.FIPSMode
net.ssl.mode
net.ssl.PEMKeyFile
net.ssl.PEMKeyPassword
net.ssl.sslOnNormalPorts
net.unixDomainSocket.enabled
net.unixDomainSocket.filePermissions
net.unixDomainSocket.pathPrefix
net.wireObjectCheck  
operationProfiling.mode
operationProfiling.slowOpSampleRate
operationProfiling.slowOpThresholdMs
processManagement.fork
processManagement.pidFilePath
processManagement.timeZoneInfo
processManagement.windowsService.description
processManagement.windowsService.displayName
processManagement.windowsService.serviceName
processManagement.windowsService.servicePassword
processManagement.windowsService.serviceUser
replication.enableMajorityReadConcern
replication.localPingThresholdMs
replication.oplogSizeMB
replication.replSetName
replication.secondaryIndexPrefetch
security.authorization
security.clusterAuthMode
security.enableEncryption
security.encryptionCipherMode
security.encryptionKeyFile
security.javascriptEnabled
security.keyFile
security.kmip.clientCertificateFile
security.kmip.clientCertificatePassword
security.kmip.keyIdentifier
security.kmip.port
security.kmip.rotateMasterKey
security.kmip.serverCAFile
security.kmip.serverName
security.kmip.clientCertificateSelector
security.ldap.authz.queryTemplate
security.ldap.bind.method
security.ldap.bind.queryPassword
security.ldap.bind.queryUser
security.ldap.bind.saslMechanisms
security.ldap.bind.useOSDefaults
security.ldap.servers
security.ldap.timeoutMS
security.ldap.transportSecurity
security.ldap.userToDNMapping
security.redactClientLogData
security.sasl.hostName
security.sasl.saslauthdSocketPath
security.sasl.serviceName
security.transitionToAuth
setParameter
sharding.archiveMovedChunks
sharding.clusterRole
sharding.configDB
snmp.master
snmp.subagent
storage.dbPath
storage.directoryPerDB
storage.engine
storage.indexBuildRetry
storage.inMemory.engineConfig.inMemorySizeGB
storage.journal.commitIntervalMs
storage.journal.enabled
storage.mmapv1.journal.commitIntervalMs  
storage.mmapv1.journal.debugFlags
storage.mmapv1.nsSize
storage.mmapv1.preallocDataFiles
storage.mmapv1.quota.enforced
storage.mmapv1.quota.maxFilesPerDB
storage.mmapv1.smallFiles
storage.repairPath
storage.syncPeriodSecs
storage.wiredTiger.collectionConfig.blockCompressor
storage.wiredTiger.engineConfig.cacheSizeGB
storage.wiredTiger.engineConfig.directoryForIndexes
storage.wiredTiger.engineConfig.journalCompressor
storage.wiredTiger.indexConfig.prefixCompression
systemLog.component.accessControl.verbosity
systemLog.component.command.verbosity
systemLog.component.control.verbosity
systemLog.component.ftdc.verbosity
systemLog.component.geo.verbosity
systemLog.component.index.verbosity
systemLog.component.network.verbosity
systemLog.component.query.verbosity
systemLog.component.replication.heartbeats.verbosity
systemLog.component.replication.rollback.verbosity
systemLog.component.replication.verbosity
systemLog.component.sharding.verbosity
systemLog.component.storage.journal.verbosity
systemLog.component.storage.recovery.verbosity
systemLog.component.storage.verbosity
systemLog.component.write.verbosity
systemLog.destination
systemLog.logAppend
systemLog.logRotate
systemLog.path
systemLog.quiet
systemLog.syslogFacility
systemLog.timeStampFormat
systemLog.traceAllExceptions
systemLog.verbosity
posted on 2018-12-26 11:08  小朱配齐  阅读(7547)  评论(0编辑  收藏  举报