mongodb yaml格式配置文件模板:
Go to github
各个配置项的详细介绍请跳转MongoDB官网
systemLog: #日志设置
verbosity: 1 #默认值0,日志输出详细度,1-5日志越来越细
quiet: false #静默模式,限制输出,生产环境中不建议设置为true
traceAllExceptions: true #打印详细的调试信息
syslogFacility: "root" #记录日志的设备级别,如果设置了此项,必须将systemLog.destination设置为syslog
path: "/usr/local/var/log/mongod.log" #mongodb日志的存放目录
logAppend: true #为true,则mongodb每次重启时日志都会以追加的形式记录到文件里,否则则会备份既有的文件,并且重新创建新的日志文件
logRotate: "reopen" #rename:重命名日志文件 reopen:按照Linux/Unix日志反转行为来关闭或者重新打开日志文件,设置为reopen时必须同时设置systemLog.logAppend为true
destination: file #日志记录,file或者syslog,如果指定为file,需要同时指定path,如果没有设置此项,则所有日志都将被输出到标准输出,为了保证精确的时间,生产环境建议配置为file
timeStampFormat: "iso8601-local" #日志信息的时间格式,ctime(格式为Wed Dec 31 18:17:54.811), iso8601-utc(格式为1970-01-01T00:00:00.000Z), iso8601-local(格式为1969-12-31T19:00:00.000-0500)
processManagement: #进程管理
fork: false #是否开启daemon模式
pidFilePath: "/var/run/mongod.pid" #pid文件存放位置,注意目录权限
timeZoneInfo: "/usr/share/zoneinfo" #时区数据库,如果没配置,则mongo会使用内置的时区数据库,linux和macOs默认设置为/usr/share/zoneinfo
windowsService: #windowns系统上的相关配置
serviceName: MongoDB #作为windows服务运行是的服务名
displayName: MongoDB #在Windows系统中Services administrative application展示的名字
description:
serviceUser:
servicePassword:
cloud: #4.0版本新功能
monitoring:
free:
state: runtime #runtime: 运行中可以启用或者停用免费监控; on: 启动时开启免费监控,运行时无法停用; off: 启动时停用免费监控,运行时无法启用
tags: ""
net: #网络配置
port: 27017 #端口
bindIp: 127.0.0.1 #从v3.6开始默认值为localhost,如果需要添加多个,使用,分割,支持IPV6,需要设置ipv6为true
bindIpAll: false #v3.6之后支持,为true时支持所有的IPV4,如果设置ipv6为true,则也支持所有的ipv6,注意:暴露在公网时,需要防止未授权的访问
maxIncomingConnections: 65536 #同时接受的最大连接数,不要将此项的值设置得太低,否则会遇到错误在正常操作时
wireObjectCheck: false #如果为true,会阻止客户端插入畸形或者无效的BSON数据到数据库
ipv6: true #支持IPV6,默认不支持
unixDomainSocket:
enabled: false #默认值true,仅适用于类unix系统,启用或停用Unix域套接字通信
pathPrefix: "/tmp" #默认值/tmp, 如果没设置,则会创建以/tmp为前缀的socket
filePermissions: 0700 #socket file文件的权限
tls:
mode: disabled #disabled: 不使用TLS allowTLS: 服务之间不使用TLS, 客户端连接同时支持TLS和非TLS preferTLS: 服务之间使用TLS,客户端都支持 requireTLS: 只接受TLS加密的连接
certificateKeyFile: "/usr/local/etc/test.pem" #同时包含证书和密钥的.pem文件,如果TLS开启,Linux系统必须指定certificateKeyFile,windows和macOS系统必须指定certificateKeyFile和certificateSelector中的一个
certificateKeyFilePassword: "test" #用于解密证书文件的密码
certificateSelector: subject="证书名" #从系统证书目录中选取匹配的证书
clusterCertificateSelector: subject="证书名" #
clusterFile: "/usr/local/etc/test.pem"
clusterPassword: "" #解密clusterFile证书的密码
CAFile: "/usr/local/etc/rootCA.pem" #根证书
clusterCAFile: "/usr/local/etc/rootCA.pem"
CRLFile: "" #证书吊销列表
allowConnectionsWithoutCertificates: false #是否允许客户端连接不通过TLS/SSL证书建立连接
allowInvalidCertificates: false #是否允许验证非法证书建立连接
allowInvalidHostnames: false #如果设置为true,将禁用证书中的主机名,如果证书主机名不匹配也允许建立连接
disabledProtocols: TLS1_0,TLS1_1,TLS1_2,TLS1_3 #拒绝接受的TLS连接类型
FIPSMode: true #禁用或者启用FIPS模式,前提是系统有支持FIPS的库
compression:
compressors: snappy,zstd,zlib #network compression,不需要时设置为disabled
serviceExecutor: synchronous #执行客户端请求的模式:synchronous或者adaptive
security: #是否开启用户验证
keyFile: "/usr/local/etc/keyfile" #集群之间相互验证的key
clusterAuthMode: keyFile #集群的认证的模式:keyFile, sendKeyFile, sendX509, x509
authorization: enabled #用户对数据库的访问权限认证: enabled, disabled
transitionToAuth: false #是否允许实例接受和创建认证或非认证的连接
javascriptEnabled: true #启用或者禁用服务侧端的JavaScript代码执行
redactClientLogData: false #阻止mongo将潜在的敏感数据写进log
clusterIpSourceWhitelist: #白名单,不对白名单内的IP做认证
- 192.0.2.0/24
- 127.0.0.1
- ::1
sasl:
hostName: #SASL域名
serviceName: #SASL服务名
saslauthdSocketPath: #SASL socket UNIX domain
enableEncryption: false #当engine为WiredTiger时,开启加密。只对企业版可用
encryptionCipherMode: AES256-CBC #加密模式:AES256-CBC, AES256-GCM
encryptionKeyFile: #本地密钥文件,只当设置为进程管理密钥时有效,如果数据已经被KMIP加密了,会报错
kmip: #企业版功能
keyIdentifier: #KMIP标示,企业版功能,security.enableEncryption需要设置为true
rotateMasterKey: false #设置为true时,旋转master key 并且重新加密internal keystore
serverName: localhost #KMIP服务连接地址,需要security.enableEncryption设置为true
port: 5696 #需要提供security.kmip.serverName,并且需要security.enableEncryption设置为true
clientCertificateFile: #企业版功能,客户端证书文件,用于验证KMIP server
clientCertificatePassword: #企业版功能,加密clientCertificateFile文件的密钥
clientCertificateSelector: #企业版功能,security.kmip.clientCertificateFile和 security.kmip.clientCertificateSelector只需要设置一个
serverCAFile: #CA证书路径,用于保证客户端连接KMIP
ldap:
servers: #LDAP server, 决定用户对给定数据库有那些操作权限
bind:
method: simple #使用queryUser和queryPassword连接LDAP时的方法,sample或者sasl
saslMechanisms: DIGEST-MD5 #GSSAPI或者DIGEST-MD5,mongo用来验证LDAP服务的机构,method设置为sasl时设置
queryUser: #当连接LDAP或者查询时的身份标示,如果没有设置,mongo将不会试图监听LDAP服务
queryPassword: #使用queryUser时的密码
useOSDefaults: false #当连接LDAP服务时,允许mongo使用windows登录凭证
transportSecurity: tls #mongo默认为LDAP创建TLS/SSL安全连接
timeoutMS: 10000 #LDAP响应超时,毫秒
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})"
}
] #提供给mongo认证LDAP Distinguished Name的用户列表
authz:
queryTemplate: {USER}?memberOf?base #
validateLDAPServerConfig: true #是否开启LDAP服务可用性检测
setParameter: #使用如下格式设置mongo的参数
enableLocalhostAuthBypass: false
ldapUserCacheInvalidationInterval: 30
storage: #存储设置
dbPath: "/usr/local/mongodb/db" #db存放位置, 注意windows中的格式为:\data\db
indexBuildRetry: true #下次启动时是否重新编译未完成的索引,对使用 in-memory storage engine的mongo实例不可用
journal: #journal设置
enabled: true #64位系统默认位true,32位系统默认位false,启用或禁用journal保证数据文件可用和可恢复
commitIntervalMs: 100 #journal操作之间的最大时间间隔(1-500), 毫秒
directoryPerDB: false # 设置为true时,mongo会在dbpath下为每个数据库设置单独的存放目录
syncPeriodSecs: 60 #mongo同步数据到文件时的时间间隔,不要在生产环境中设置此值
engine: wiredTiger #wiredTiger, inMemory. 存储引擎设置,默认wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 2 #给存储引擎配置的内存数量,单位GB
journalCompressor: snappy #压缩WiredTiger journal数据的类型:none, snappy, zlib, zstd
directoryForIndexes: false #设置为true时,mongo在data目录下使用单独的子目录存放索引和集合
maxCacheOverflowFileSizeGB: 0 #为“lookaside (or cache overflow) table”设置最大值,设置值>=0.1, 可在运行过程中设置。
collectionConfig:
blockCompressor: none #压缩集合数据的默认压缩类型:none, snappy, zlib, zstd
indexConfig:
prefixCompression: true #启用或者禁用prefixCompression,通过一次存放相同的索引前缀来减少内存或者硬盘消耗
inMemory:
engineConfig:
inMemorySizeGB: 2 #in-memory存储引擎数据可分配的最大内存,包括索引,也包括操作日志(前提是如果mongo是replica set,或者replica set的一部分或者集群元数据时)
operationProfiling: #慢查询配置
mode: off #Database Profiler收集数据库指令的详细信息,可选值: off(关闭,不收集任何数据), slowOp(收集耗时超过slowms的操作), all(收集所有),
slowOpThresholdMs: 100 #运行时间超多此值的操作被视为slow,单位毫秒
slowOpSampleRate: 1.0 #0-1.0, 应该被profiled或者logged的慢操作部分
replication: #副本相关配置
oplogSizeMB: #响应操作日志的最大值,单位MB
replSetName: #mongo所属的replica set的名字,replica set中所有hosts应该有相同的set名字,如果你的应用连接超多1个replica set,每个set应该有唯一的名字
enableMajorityReadConcern: true #防止PSA部署架构停止运转带给存储缓存的压力,设置为false
localPingThresholdMs: 15 #此项只针对mongos。 ping时间,毫秒。mongos用来查找第二个处理来自客户端读取操作的replica set成员
sharding: #分片集配置
clusterRole: configsvr #mongo实例在集群中的角色,可选值: configsvr(作为配置服务启动实例,默认在27019端口启动), shardsvr(作为shard启动,默认以27018端口启动)
archiveMovedChunks: false #
configDB: /cfg1.example.net:27019 #此项只针对mongos。指定config server的replica set名字,hostname和端口
auditLog: #审计日志配置
destination: syslog #syslog(以JSON格式输出审核事件到syslog, Windows系统不可用) console(以JSON格式输出审核事件到标准输出) file(以auditLog.format格式输出到auditLog.path指定的目录)
format: JSON #auditLog输出格式,对应destination设置为file的话,此项生效,另一个可选值是BSON
path: "/var/log/audit.log" #auditLog存放路径,对应destination设置为file的话,此项生效
filter: {atype: "$eq"} #过滤audit system记录的操作类型
snmp: #SNMP配置
disabled: false #是否禁止SNMP访问mongo
subagent: true #如果设置为true且snmp.disabled设置为false, 则SNMP作为subagent运行,如果snmp.disabled设置为true,则此项无效
master: false #如果设置为true且snmp.disabled设置为false, 则SNMP作为master运行,如果snmp.disabled设置为true,则此项无效
开启用户验证前需要先建立root用户
>use admin;
>db.createUser({
user:"root",
pwd:"****",
roles:[
{
role:"root",
db:"admin"
}
]
})
简单的配置模板:
systemLog:
destination: file
path: "/usr/local/var/log/mongod.log"
logAppend: true
processManagement:
fork: false
pidFilePath: "/usr/local/mongodb/mongod.pid"
net:
bindIp: 127.0.0.1
port: 27017
maxIncomingConnections: 65536
storage:
dbPath: "/usr/local/mongodb/db"
journal:
enabled: true
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 2
security:
authorization: enabled
Thanks!