mongodb之(2)mongod.conf参数详解

1、系统日志(systemLog)

配置示例:

systemLog:
   verbosity: 0
   quiet: false
   traceAllExceptions: true
   syslogFacility: user
   path: /mongodb/log/mongo.log
   logAppend: false
   logRotate: rename
   destination: file
   timeStampFormat: iso8601-local
   component:
      accessControl:
         verbosity: 0
      command:
         verbosity: 0

选项说明:

名称 类型 默认值 说明
verbosity integer 0 日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
quiet boolean true "安静",此时mongod/mongos将会尝试减少日志的输出量。不建议在production环境下开启,否则将会导致跟踪错误比较困难。
syslogFacility string user 指定syslog日志信息的设备级别。需要指定--syslog来使用这个选项。
traceAllExceptions boolean true 打印异常详细信息。
path string logs/mongod.log 日志路径
logAppend boolean false 如果为true,当mongod/mongos重启后,将在现有日志的尾部继续添加日志。否则,将会备份当前日志文件,然后创建一个新的日志文件;默认为false。
logRotate string rename 日志“回转”,防止一个日志文件特别大,则使用logRotate指令将文件“回转”,可选值:1)rename:重命名日志文件,默认值;2)reopen:使用linux日志rotate特性,关闭并重新打开此日志文件,可以避免日志丢失,但是logAppend必须为true。
destination string file 日志输出目的地,可以指定为“ file”或者“syslog”,表述输出到日志文件,如果不指定,则会输出到标准输出中(standard output)
timeStampFormat string iso8601-local 日志信息输出的时间格式。1)ctime:输出时间格式如:Wed Dec 31 18:17:54.811;2)iso8601-utc:输出UTC时间格式,如: 1970-01-01T00:00:00.000Z;3)iso8601-local:输出ISO-8601格式的本地时间,如:1969-12-31T19:00:00.000-0500

2、系统组件日志(systemLog.component )

配置示例:

systemLog:
   component:
      accessControl:
         verbosity: 0
      command:
         verbosity: 0

      # COMMENT some component verbosity settings omitted for brevity

      replication:
         verbosity: 0
         election:
            verbosity: 0
         heartbeats:
            verbosity: 0
         initialSync:
            verbosity: 0
         rollback:
            verbosity: 0
      storage:
         verbosity: 0
         journal:
            verbosity: 0
         recovery:
            verbosity: 0
      write:
         verbosity: 0

选项说明:

名称 类型 默认值 说明
accessControl.verbosity integer 0 访问控制组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
command.verbosity integer 0 命令行处理组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
control.verbosity integer 0 控制组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
ftdc.verbosity integer 0 统计及状态组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
geo.verbosity integer 0 地理空间组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
index.verbosity integer 0 索引组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
network.verbosity integer 0 网络组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
query.verbosity integer 0 查询操作组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
replication.verbosity integer 0 复制集组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
replication.election.verbosity integer 0 复制集组件选举的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息。若此选项未设置,则其将使用replication.verbosity的级别。
replication.heartbeats.verbosity integer 0 复制集组件日志的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息。若此选项未设置,则其将使用replication.verbosity的级别。
replication.initialSync.verbosity integer 0 复制集初始化同步的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息。若此选项未设置,则其将使用replication.verbosity的级别。
replication.rollback.verbosity integer 0 复制集回滚的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息。若此选项未设置,则其将使用replication.verbosity的级别。
sharding.verbosity integer 0 分片组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
storage.verbosity integer 0 存储组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
storage.journal.verbosity integer 0 存储日志的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
storage.recovery.verbosity integer 0 存储恢复的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息
transaction.verbosity integer 0 事物组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息。若此选项未设置,则其将使用replication.verbosity的级别。
write.verbosity integer 0 写操作组件的日志级别:0为默认值,包含“info”信息;1~5,即大于0的值均会包含debug信息

3、进程管理(processManagement)

配置示例:

processManagement:
   fork: true
   pidFilePath: /var/mongo/pid.log
   timeZoneInfo: 

选项说明:

名称 类型 认值 说明
fork boolean false 是否以守护进程运行mongod或mongos。windows环境不支持此选项;
pidFilePath string 存储进程id的文件路径。一般与fork配合使用,当不指定此文件时将不会进行创建。
timeZoneInfo string user 时间时区信息。在linux系统中,若此参数未指定,则使用系统默认值。

4、网络(net)

配置示例:

net:
   port: 27017
   bindIp: localhost
   bindIpAll: false
   maxIncomingConnections: 30000
   wireObjectCheck: true
   ipv6: false
   unixDomainSocket:
      enabled: false
      pathPrefix: 
      filePermissions: 
   tls:
      certificateSelector: 
      clusterCertificateSelector: 
      mode: disabled
      certificateKeyFile: 
      certificateKeyFilePassword: 
      clusterFile: 
      clusterPassword: 
      CAFile: 
      clusterCAFile: 
      CRLFile:
      allowConnectionsWithoutCertificates: 
      allowInvalidCertificates:
      allowInvalidHostnames: 
      disabledProtocols: 
      FIPSMode: 
   compression:
      compressors:snappy,zstd,zlib
   serviceExecutor: adaptive

选项说明:

名称 类型 默认值 说明
port integer 27017 27017:mongod(非分片或配置服务器)或mongos的默认端口;27018 :当mongod作为分片服务器时;27019 :当mongod作为配置服务器时。
bindIp string localhost mongos或mongod监听的地址,其可以为域名或ip或Unix域套接字的完整路径。当绑定多个地址时,以逗号分隔。
bindIpAll boolean false 当设置为true时,mongo会绑定本地的所有ip地址。此选项与bindIp选项冲突,若同时配置两个参数,系统将会报异常。
maxIncomingConnections integer 65536 mongodb实例接受的最多连接数,如果高于操作系统接受的最大线程数,设置无效。此参数通常对mongos比较有用,当客户端对mongos创建连接池时。
wireObjectCheck boolean true 为true时,mongod或mongos会检查所有请求的BSON数据的合法性。当对象有比较多的层级嵌套时,此参数将会对mongo性能有一定影响。
ipv6 boolean false 当设置为true时,mongo将支持ipv6,其默认是不支持的。设置此参数为true,mongo并不会直接在本地ipv6上监听,需同时配置bindIp或bindIpAll参数。
unixDomainSocket.enabled boolean true true:是能在Unix套接字上监听。mongodb实例会一直监听UNIX socket,除非net.unixDomainSocket.enabled设置为true,bindIp没有设置,bindIp没有默认指定为127.0.0.1。
unixDomainSocket.pathPrefix string /tmp unix Socket所在的路径。
unixDomainSocket.filePermissions int 0700 设置套接字的SocketFile的访问权限。
tls.mode string 实现TLS用于mongo的网络连接。1)disabled:mongo不是有TLS;2)allowTLS:mongo不同系统之间连接不使用TLS,对客户端连接同时支持TLS和non-TLS。3)preferTLS:mongo不同系统之间连接使用TLS,对客户端连接同时支持TLS和non-TLS。4)requireTLS:系统只使用TLS的安全连接。
tls.certificateKeyFile string 包含CA和密码的.pem文件。当为类linux系统时,当使能TLS时,此参数必填;当为windows或macOS系统时,当使能TLS时,此参数或certificateSelector参数必填。
tls.certificateKeyFilePassword string CA证书的解码密码。
tls.certificateSelector string 在windows或macOS系统上,此参数或tls.certificateKeyFile参数二选一即可,这连个参数是互斥的,只能声明一个。
tls.clusterCertificateSelector string 在windows和MacOs中,此参数为tls.clusterFile的备选项,他们之间为互斥关系,只能二选一。
tls.clusterFile string 集群或复制集的.pem文件
clusterPassword string 集群或复制集的CA解码的密码。
tls.CAFile string .pem文件,其包含根证书链。
tls.clusterCAFile string .pem文件,包含客户端连接mongo的根证书链。
tls.CRLFile string .pem文件,包含了证书撤销列表。
tls.allowConnectionsWithoutCertificates boolean 客户端无需证书即可连接mongo服务器
tls.allowInvalidCertificates boolean 使能集群中其他服务器的TLS证书的验证检查,运行其他服务器使用无效的证书进行连接。
tls.allowInvalidHostnames boolean false true:当其他连接实例的证书的hostName非法时,mongo将允许其进行连接。
tls.disabledProtocols string 阻止mongo基于当前协议的TLS的连接处理。多个协议之间以逗号分隔。
tls.FIPSMode boolean 是否允许FIPS模式使用TLS库
compression.compressors string snappy,zstd,zlib 声明默认的压缩器。其将用于mongo服务器间的通信使用。
serviceExecutor string synchronous 声明mongo服务器处理客户端请求的线程和处理模式。synchronous:mongo使用同步网络并管理每个链接的线程池;adaptive:mongo使用异步网络模式,并使用自适应的线程池来管理客户端的连接。

5、安全选项(security)

配置示例:

security:
   keyFile: 
   clusterAuthMode: 
   authorization: 
   transitionToAuth: 
   javascriptEnabled:  
   redactClientLogData: 
   clusterIpSourceWhitelist:
     - 
   sasl:
      hostName: 
      serviceName: 
      saslauthdSocketPath: 
   enableEncryption: 
   encryptionCipherMode: 
   encryptionKeyFile: 
   kmip:
      keyIdentifier: 
      rotateMasterKey: 
      serverName: 
      port: 
      clientCertificateFile: 
      clientCertificatePassword: 
      clientCertificateSelector: 
      serverCAFile: 
   ldap:
      servers: 
      bind:
         method: 
         saslMechanisms: 
         queryUser: 
         queryPassword: 
         useOSDefaults: 
      transportSecurity: 
      timeoutMS: 
      userToDNMapping: 
      authz:
         queryTemplate: 

选项说明:

名称 类型 默认值 说明
keyFile string mongo实例直接互相通信的认证密码文件。
clusterAuthMode string keyFile mongo集群的认证模式。1)keyFile:使用keyFile选项表示的授权文件进行授权处理;2)sendKeyFile:用于滚动升级,发送一个认证keyFile,但同时可以keyFile和x.509认证;3)sendX509:用于滚动升级,发送一个x.509用于认证,但同时可以keyFile和x.509认证;4)x509:推荐使用,发送x.509文件用于认证,同时只接受x.509认证。
authorization string disabled disabled或者enabled,仅对mongod有效;表示是否开启用户访问控制(Access Control),即客户端可以通过用户名和密码认证的方式访问系统的数据,默认为“disabled”,即客户端不需要密码即可访问数据库数据。(限定客户端与mongod、mongos的认证)
transitionToAuth boolean false 运行mongo服务器在部署时直接通过认证或非认证方式进行互相连接。如若使用keyFile进行内部认证,则mongo会创建认证的连接到其他部署的mongo实例,若认证失败,则会使用非认证的连接替代。此选择为true无法保证强制的用户权限控制,用户可创建无无任何权限控制的连接到部署环境中,并进行读写及权限处理等操作。
javascriptEnabled boolean true 是否允许执行服务器端的JavaScript脚本,若不允许,则无法允许如$where、mapReduce等方法。
redactClientLogData boolean 此参数会阻止mongo在日志时打印出数据库中的敏感数据
clusterIpSourceWhitelist list 保存mongo复制集或集群的白名单的ip列表,若连接的服务不在白名单则不允许连接。若mongod以非认证方式启动,则此参数无效
enableEncryption boolean false 允许事物存储引擎的加密
encryptionCipherMode string AES256-CBC 用于加密的密码模式。1)AES256-CBC:256位高级加密标准的密码块链接模式;2)AES256-GCM:256位高级加密标准,在Galois/计数器模式只能在Linux上使用。
encryptionKeyFile string 当通过KMIP管理秘钥时的本地keyFile的路径。只有在nableEncryption设为true时有效

6、存储参数(storage)

配置示例:

storage:
   dbPath: 
   indexBuildRetry: 
   journal:
      enabled: 
      commitIntervalMs: 
   directoryPerDB: 
   syncPeriodSecs: 
   engine: 
   wiredTiger:
      engineConfig:
         cacheSizeGB: 
         journalCompressor: 
         directoryForIndexes: 
         maxCacheOverflowFileSizeGB: 
      collectionConfig:
         blockCompressor: 
      indexConfig:
         prefixCompression: 
   inMemory:
      engineConfig:
         inMemorySizeGB: 

选项说明:

名称 类型 默认值 说明
dbPath string /data/db mongod存储数据的目录,此参数只对mongod有效。
indexBuildRetry boolean true 指定数据库重启时是否继续重建未完成的索引。此种情况以防mongod在重建索引时关闭或停止。
journal.enabled boolean true 记录持久性的操作日志,保障数据文件的有效和可存储,防止数据丢失。
journal.commitIntervalMs number 100 journal日志操作的最大间隔时间。可以是1-500ms之间的值,低的值有助于持久化,但是会增加磁盘的额外负担。如若写操作带有“j:true”参数,将会使日志立即同步到journal中。如果强制mongod提交日志文件,可以指定j:true,指定后,时间变为原来的三分之一。
directoryPerDB boolean false 指定存储每个数据库文件到单独的数据目录。如果在一个已存在的系统使用该选项,需要事先把存在的数据文件移动到目录。
syncPeriodSecs number 60 mongodb文件刷新频率,尽量不要在生产环境下修改。若设置此参数为0,mongodb不会将内存映射文件同步到磁盘中。mongod能很快处理对journal日志的写,同时会延迟数据文件的写入。此参数对journal日志无效,但若设置为0,则journal会最终占用所有硬盘空间。如设置此参数是为了测试,则应该设置--nojournal为true
engine String wiredTiger mongodb的存储引擎。1)wiredTiger:声明为WiredTiger存储引擎;2)inMemory:声明为 In-Memory 存储引擎。
wiredTiger.engineConfig.cacheSizeGB float 定义WiredTiger 存储引擎用于内部数据缓存的最大值。用于索引的缓存是单独的,不包含在此部分。此缓存大小范围可设置为:0.25GB到10000GB。默认值为(系统内存值 - 1G)/2或256MB。
wiredTiger.engineConfig.journalCompressor String snappy 声明应用压缩WiredTiger 日志文件的压缩算法。1)none:无压缩;2)snappy;3)zlib;4)zstd (Available starting in MongoDB 4.2)
wiredTiger.engineConfig.directoryForIndexes boolean false 是否将索引和collections数据分别存储在dbPath下单独的目录中。即index数据保存“index”子目录,collections数据保存在“collection”子目录。默认值为false,仅对mongod有效。
wiredTiger.engineConfig.maxCacheOverflowFileSizeGB float 0 声明WiredTigerLAS.wt文件的最大值
wiredTiger.collectionConfig.blockCompressor string snappy 集合数据的压缩算法。声明应用压缩WiredTiger 日志文件的压缩算法。1)none:无压缩;2)snappy;3)zlib;4)zstd (Available starting in MongoDB 4.2)
wiredTiger.indexConfig.prefixCompression bool true 是能索引数据的前缀压缩算法。
inMemory.engineConfig.inMemorySizeGB float (RAM-1G)/2 in-memory存储引擎的最大内存。包括数据、索引、操作日志等。可设置范围为:256MB到10TB

7、性能分析器(operationProfiling )

配置示例:

operationProfiling:
   mode: slowOp
   slowOpThresholdMs: 200
   slowOpSampleRate: 1.0

选项说明:

名称 类型 默认值 说明
mode string off 数据库profiler级别,操作的性能信息将会被写入日志文件中。1)off:性能检测关闭,不会收集如何性能数据;2)slowOp:性能检测将会操作时间超过slowms的查询;3)all:性能检测器记录所有操作日志。检测器会影响性能并使用系统日志,在生产环境需注意。
slowOpThresholdMs integer 100 数据库profiler判定一个操作是“慢查询”的时间阀值,单位毫秒;mongod将会把慢查询记录到日志中,即使profiler被关闭。当profiler开启时,慢查询记录还会被写入“system.profile”这个系统级的collection中。请参看mongod profiler相关文档。默认值为100,此值只对mongod进程有效。当此值设置为0时,mongodb将以慢查询slowOpSampleRate设定的评率写入慢查询日志。
slowOpSampleRate double 1.0 性能检测器或日志的影响因子

8、复制集(replication)

8配置示例:

replication:
   oplogSizeMB: 1024
   replSetName: mongodb_test
   secondaryIndexPrefetch: 
   enableMajorityReadConcern: true

选项说明:

名称 类型 默认值 说明
oplogSizeMB integer replication操作日志的最大尺寸,单位:MB。mongod进程根据磁盘最大可用空间来创建oplog,比如64位系统,oplog为磁盘可用空间的5%,一旦mongod创建了oplog文件,此后再次修改oplogSizeMB将不会生效。此值不要设置的太小, 应该足以保存24小时的操作日志,以保证secondary有充足的维护时间;如果太小,secondary将不能通过oplog来同步数据,只能全量同步。
replSetName string “复制集”的名称,复制集中的所有mongd实例都必须有相同的名字,sharding分布式下,不同的sharding应该使用不同的replSetName,有些驱动会根据复制集的名字进行分组
enableMajorityReadConcern bool true 是否开启readConcern的级别为“majority”,默认为false;只有开启此选项,才能在read操作中使用“majority”。(3.2+版本)
secondaryIndexPrefetch string all 只对mmapv1存储引擎有效。复制集中的secondary,从oplog中运用变更操作之前,将会先把索引加载到内存中,默认情况下,secondaries首先将操作相关的索引加载到内存,然后再根据oplog应用操作。可选值:1)none:secondaries不将索引数据加载到内容;2)all:sencondaries将此操作有关的索引数据加载到内存;3)_id_only:只加载_id索引;
localPingThresholdMs Integer 15 ping时间,单位:毫秒,mongos用来判定将客户端read请求发给哪个secondary。仅对mongos有效。默认值为15,和客户端driver中的默认值一样。当mongos接收到客户端read请求,它将:1、找出复制集中ping值最小的member。2、将延迟值被此值允许的members,构建一个列表.3、从列表中随机选择一个member。ping值是动态值,每10秒计算一次。mongos将客户端请求转发给延迟较小(与此值相比)的某个secondary节点。

9、sharding架构(sharding)

配置示例:

sharding:
   clusterRole: mongo_test
   archiveMovedChunks: true
   autoSplit:true
   configDB:192.168.101.11
   chunkSize:128

选项说明:

名称 类型 默认值 说明
clusterRole string 在sharding集群中,此mongod实例的角色,可选值:1、configsvr:此实例为config server,此实例默认侦听27019端口;2、shardsvr:此实例为shard(分片),侦听27018端口;此配置仅对mongod有效。通常config server和sharding server需要使用各自的配置文件。
archiveMovedChunks boolean false 当chunks因为“负载平衡”而迁移到其他节点时,mongod是否将这些chunks归档,并保存在dbPath下“moveChunk”目录下,mongod不会删除moveChunk下的文件。
autoSplit boolean true 是否开启sharded collections的自动分裂,仅对mongos有效。如果所有的mongos都设定为false,那么collections数据增长但不能分裂成新的chunks。因为集群中任何一个mongos进程都可以触发split,所以此值需要在所有mongos行保持一致。仅对mongos有效。
configDB string 设定config server的地址列表,每个server地址之间以“,”分割,通常sharded集群中指定1或者3个config server。(生产环境,通常是3个config server,但1个也是可以的)。所有的mongos实例必须配置一样,否则可能带来不必要的问题。
chunkSize Integer 64 sharded集群中每个chunk的大小,单位:MB,默认为64,此值对于绝大多数应用而言都是比较理想的。chunkSize太大会导致分布不均,太小会导致分裂成大量的chunk而经常移动. 整个sharding集群中,此值需要保持一致,集群启动后修改此值将不再生效。

10、审计日志(auditLog)

配置示例:

auditLog:
   destination: 
   format: 
   path: 
   filter: 

选项说明:

名称 类型 默认值 说明
destination string syslog,以json格式保存身份验证到syslog,windows下不可用,serverity级别为info,facility级别为user。
format string 指定输出文件的格式JSON,输出json格式文件;BSON,输出bson二进制格式文件。
path string 如果--auditDestination的值为file,则该选项指定文件路径。
filter document 指定过滤系统身份验证的格式为:{ atype : }{ atype: , "param.db": }

11、snmp(snmp)

配置示例:

snmp:
   disabled: false
   subagent: false
   master: false

选项说明:

名称 类型 默认值 说明
disabled boolean false 是否使能SNMP访问mongod,此参数与 snmp.subagent 及 snmp.master互斥。
subagent boolean 运行SNMP为一个子代理。
master boolean 运行SNMP为一个主进程。

12、Mongos独有选项

配置示例:

replication:
   localPingThresholdMs: 

sharding:
   configDB: 

选项说明:

名称 类型 默认值 说明
localPingThresholdMs integer 15 mongos发送ping的时间间隔,当客户端选定副本集进行读操作时受影响。
configDB string 指定配置数据库。可以使用逗号分隔一到三个服务器。如果处于不同的位置,需要指定最近的一个。不能移除配置服务器,即使不可用或者离线了。

13、windows服务选项

配置示例:

processManagement:
   windowsService:
      serviceName: 
      displayName: 
      description: 
      serviceUser: 
      servicePassword: 

选项说明:

名称 类型 默认值 说明
windowsService.serviceName string MongoDB 指定mongodb服务名称。可以使用--install,--remove增加或删除。
windowsService.displayName string MongoDB 设置mongodb服务应用程序的名称。
windowsService.description string MongoDB Server 结合--install,必须指定该选项的值
windowsService.serviceUser string 指定运行mongodb服务的用户
windowsService.servicePassword string 指定运行mongodb服务的用户的密码

参考文档:

https://docs.mongodb.com/manual/reference/configuration-options/
https://docs.mongodb.com/manual/reference/configuration-file-settings-command-line-options-mapping/#conf-file-command-line-mapping
https://www.jianshu.com/p/f9f1454f251f
https://www.oudahe.com/p/50153/

你可能感兴趣的:(mongodb之(2)mongod.conf参数详解)