转【MongoDB 配置篇】MongoDB 配置文件详解
目录
MongoDB实例的运行离不开相应的参数配置,比如对数据库存放路径dbpath的配置,对于参数的配置,可以在命令行以选项的形式进行配置,也可以将配置信息列入配置文件进行配置。但是,使用配置文件将会使对mongod和mongos的管理变得更加容易,本篇将会对配置文件进行详细的讲解。
1 数据库环境
[mongod@strong ~]$ mongod --versiondb version v4.2.0 git version: a4b751dcf51dd249c5865812b390cfd1c0129c30 OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013 allocator: tcmalloc modules: none build environment: distmod: rhel62 distarch: x86_64 target_arch: x86_64
2 配置文件
2.1 配置文件格式
MongoDB配置文件使用YAML的格式。
2.2 配置文件的使用
对于配置文件的使用,在mongod或mongos中指定--config或-f选项。
1)指定--config选项
[mongod@strong ~]$ mongod --config /etc/mongo.cnf
2)指定-f选项
[mongod@strong ~]$ mongod -f /etc/mongo.cnf
3 配置文件核心选项
3.1 systemLog选项
1)选项
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
2)说明
-
verbosity:默认为0,值范围为0-5,用于输出日志信息的级别,值越大,输出的信息越多;
-
quiet:mongod或mongos运行的模式,在该模式下限制输出的信息,不推荐使用该模式;
-
traceAllExceptions:打印详细信息以便进行调试;
-
path:日志文件的路径,mongod或mongos会将所有诊断日志信息发送到该位置,而不是标准输出或主机的syslog上;
-
logAppend:默认为false,若设为true,当mongod或mongos实例启动时,会将新的条目追加到已存在的日志文件,否则,mongod会备份已存在的日志,并创建新的日志文件;
-
destination:指定日志输出的目的地,具体值为file或syslog,若设置为file,需指定path,该选项未指定,则将所有日志输出到标准输出;
-
timeStampFormat:日志信息中的时间格式,默认为iso8601-local,该选项有三个值,分别为ctime、iso8601-utc和iso8601-local;
3.2 processManagement选项
1)选项
processManagement: fork: <boolean> pidFilePath: <string> timeZoneInfo: <string>
2)说明
-
fork:默认值为false,设置为true,会激活守护进程在后台运行mongod或mongos进程;
-
pidFilePath:指定mongod或mongos写PID文件的路径,不指定该值,则不会创建PID文件;
3.3 cloud选项
1)选项
cloud: monitoring: free: state: <string> tags: <string>
2)说明
-
state:激活或禁用免费的MongoDB Cloud监控,该选项有以下三个值,分别为runtime、on和off,默认为runtime;在运行时可以通过db.enableFreeMonitoring()和db.disableFreeMonitoring()
-
tags:描述环境上下文的可选标记;
3.4 net选项
1)选项
net: port: <int> bindIp: <string> bindIpAll: <boolean> maxIncomingConnections: <int> wireObjectCheck: <boolean> ipv6: <boolean> unixDomainSocket: enabled: <boolean> pathPrefix: <string> filePermissions: <int> tls: certificateSelector: <string> clusterCertificateSelector: <string> mode: <string> certificateKeyFile: <string> certificateKeyFilePassword: <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>
2)说明
-
port:MongoDB实例监听客户端连接的TCP端口,对于mongod或mongos实例,默认端口为27017,对于分片成员,默认端口为27018,对于配置服务器成员,默认端口为27019;
-
bindIp:默认值为localhost。主机名、IP地址或Unix套接字,mongod或mongos在其上监听客户端的连接,绑定多个地址,以逗号分隔,若绑定所有IPv4地址,可输入0.0.0.0;
-
bindIpAll:默认值为false,设置为true,mongod或mongos实例将会绑定所有IPv4地址;
-
maxIncomingConnections:默认值为65536,mongod或mongos接收的最大连接数;
3.5 security选项
1)选项
security: keyFile: <string> clusterAuthMode: <string> authorization: <string> transitionToAuth: <boolean> javascriptEnabled: <boolean> redactClientLogData: <boolean> clusterIpSourceWhitelist: - <string> 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>
2)说明
-
keyFile:存储共享密钥文件的路径,MongoDB实例使用它在分片集群或副本集中彼此进行身份验证;
-
clusterAuthMode:默认值为keyFile;
3.6 setParameter选项
1)选项
setParameter: <parameter1>: <value1> <parameter2>: <value2>
2)说明
设置MongoDB服务器的参数;
3.7 storage选项
1)选项
storage: dbPath: <string> indexBuildRetry: <boolean> journal: enabled: <boolean> commitIntervalMs: <num> directoryPerDB: <boolean> syncPeriodSecs: <int> engine: <string> wiredTiger: engineConfig: cacheSizeGB: <number> journalCompressor: <string> directoryForIndexes: <boolean> collectionConfig: blockCompressor: <string> indexConfig: prefixCompression: <boolean> inMemory: engineConfig: inMemorySizeGB: <number>
2)说明
-
dbPath:默认值为/data/db,mongod实例存储数据的目录;
-
indexBuildRetry:默认值为true,指定mongod在下次启动时是否重建未完成的索引;
-
enabled:64位系统默认为true,32位系统默认为false,是否激活日志以确定数据文件仍然有效以及可进行恢复;
-
commitIntervalMs:默认值为100毫秒,取值范围为1-500毫秒;
-
directoryPerDB:默认值为false,设置为true,每个数据库使用单独的目录存储数据,目录位于dbPath目录之下;
-
syncPeriodSecs:默认值为60,MongoDB通过fsync操作将数据刷新到数据文件之前经过的时间;
-
engine:默认值为wireTiger,4.2版本之后,MMAPv1存储引擎将会被废弃;
-
cacheSizeGB:定义wireTiger将为所有数据使用的内部缓存的大小,索引构建消耗的内存与wireTiger缓存内存时分开的,从MongoDB 3.4开始,该值的范围可以从0.25GB到10000GB,可以是浮点数,默认值是50%*( RAM - 1 GB )或256MB;
-
journalCompressor:默认值为snappy,指定用于压缩wireTiger日志数据的压缩类型,压缩类型有以下几种,分别为none、snappy、zlib和sztd;
-
directoryForIndexes:默认为false,设置为true,mongod将索引和集合存储在data(dbPath)目录下的单独子目录中,即索引存放在名字为index的子目录中,集合数据存放在名字为collection的子目录中;
-
blockCompressor:默认为snappy,指定集合数据的默认压缩类型,有以下几种类型,分别为none、snappy、zlib和sztd;
-
prefixCompression:默认为true,启用或禁用索引数据的前缀压缩;
3.8 operationProfiling选项
1)选项
operationProfiling: mode: <string> slowOpThresholdMs: <int> slowOpSampleRate: <double>
2)说明
-
mode:默认为off,指定应该分析哪些操作,分析器级别有如下几种,分别为off、slowOp和all;
-
slowOpThresholdMs:默认值为100;
-
slowOpSampleRate:默认值为1.0;
3.9 replication选项
1)选项
replication: oplogSizeMB: <int> replSetName: <string> secondaryIndexPrefetch: <string> enableMajorityReadConcern: <boolean>
2)说明
-
oplogSizeMB:复制操作日志的最大大小,以M为单位,默认情况下,mongod进程基于最大可用空间创建oplog,对于64位系统,oplog通常占可用磁盘空间的5%;
-
replSetName:副本集的名称;
-
enableMajorityReadConcern:默认为true,在PSA架构中,可以禁用该选项以缓解存储缓存的压力;
3.10 sharding选项
1)选项
sharding: clusterRole: <string> archiveMovedChunks: <boolean>
2)说明
-
clusterRole:设置在分片集群中mongod实例的角色,有以下值可供选择,分别为configsvr和shardsvr;
3.11 auditLog选项
1)选项
auditLog: destination: <string> format: <string> path: <string> filter: <string>
2)说明
企业版选项,用于审计;
3.12 snmp选项
1)选项
snmp: disabled: <boolean> subagent: <boolean> master: <boolean>
2)说明
-
disabled:默认值为false,禁用SNMP对mongod的访问;