mongodb 配置文件解读

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/
https://www.jianshu.com/p/8f0c55dbfba1/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值