# where to write logging data.
systemLog:
#I=Info D=Debug W=Warning E=Error F=Fatal
#级别越高限制越小,当等于5时,会产生源源不断的D级别日志文件,例如[WTJournalFlusher] flushed journal
verbosity: 0
#生产环境中建议关闭,避免产生大量的日志记录
traceAllExceptions: false
#可选file=用户级日志 syslog=系统级日志
#如果设置为syslog,选项path必需注释掉,并指定系统日志设施syslogFacility
#如果设置为file,刚好相反,注释掉syslogFacility,并设定path
destination: file
#日志类型为syslog时,系统日志设施可以为user、mail、deamon等。
#如果设置为user,则日志写入/var/log/message
#如果设置为mail,则日志写入/var/log/mail,以此类推.
#syslogFacility: mail
#logRotate的配置指令需要配合命令kill -SIGUSR1 `cat /run/mongod/mongod.pid`使用.
#logRotate=reopen时,logAppend必需等于true。当收到kill -SIGUSR1信号时,清空log文件中原油的内容,并写入新的日志内容。
#logRotate=rename时,logAppend可以为true或false。当收到kill -SIGUSR1信号时,会将原日志文件重新命名,并生产新的日志文件。
#当rename时,logAppend为false时,重启mongod也会将日志文件重新命令,并生产新的日志文件。为true时,重启mongod不会重新命名日志文件。
#只会在原日志文件中追加日志信息。
#由此可见,合理的配置方式,是将logRotate设置为rename,logAppend设置为true,并使用crontab,每天发送kill -SIGUSR1信号。
#这样每天可以产生一个log文件。
logRotate: rename
logAppend: true
path: /var/log/mongod/mongod.log
timeStampFormat: ctime
# Where and how to store data.
storage:
dbPath: /data/mongod
#mongod正在进行索引操作时,进程意外崩溃,当重新启动时,会删除上次未完成的索引
#但是否再次重新索引,取决于该值的设置,建议设置为true
indexBuildRetry: true
#是否开启journal日志持久存储,journal日志用来数据恢复,是mongod最基础的特性,通常用于故障恢复
journal:
enabled: true
#journal日志,fsync的时间间隔,单位是ms
commitIntervalMs: 30
#db的数据将按照不同的目录存储,目录名为db名称,这个建议开启,这样dbPath的目录结构为更清晰
#如果你的配置之前是使用false,那么请使用mongodump将数据备份后,重新指定新的dbPaht之后,再使用
#mongorestore,本人比较疯狂,备份后直接删除原dbPath下的所有文件。
directoryPerDB: false
#mongod使用fsync操作将数据flush到磁盘的时间间隔,单位秒,该值的设置不影响journal的fsync的时间间隔
syncPeriodSecs: 60
#mongod -f /usr/local/mongod/mongod.conf –repair
#在repair期间使用此目录存储临时数据,repair结束后此目录下数据将被删除,尤其注意开始repairPath仅支持mmapv1 storage engine,如果是wiredTiger,请注销该设置。务必注意
#repairPath: /data/mongod/repair/
#engine:
storage:
engine: wiredTiger
# wiredTiger:
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 1
journalCompressor: snappy
#将索引存储在单独的目录中,这样dbPath的目录结构会更清晰,这里和上面的directoryPerDb相同。
directoryForIndexes: true
collectionConfig:
blockCompressor: snappy
indexConfig:
#是否启用前缀压缩
prefixCompression: true
# how the process runs
processManagement:
fork: true
pidFilePath: /run/mongod/mongod.pid
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,192.168.80.121
#最大链接数,该参数受限于系统ulimit
maxIncomingConnections: 65536
#当客户端insert / update时会对文档对象进行校验,且官方网站指出会有一些性能影响
#但我用1000条数据测试,没看什么差别,估计影响微乎其微吧,所以建议设置成true
wireObjectCheck: true
#unix domain socke的通信快于tcp,但快多少还没有概念。反正在nginx和php-fpm中使用
#由tcp更改成socket通信速度上好像差不多。废话不说了回到正题,如果要在mongodb中使用
#socket通信,必需满足以下三个条件
#1)bindIp必需设置127.0.0.1 2)enabled必需设置为true 3)启动命令不能有–nounixsocket
#其实还有一点,使用socket的前提条件,应用程序和mongodb必需在同一个台server上。
#因为本机应用和mongodb不在同一台服务器上,所以禁用unix domain socket
unixDomainSocket:
enabled: false
pathPrefix: /tmp
filePermissions: 0700
#ssl传输比普通的传输数据量要大,所以性能上肯定要差不少,但启用ssl数据传输更安全。
#在大部分的应用中,mongodb和应用程序都在同一网域内(同一局域网),可以忽略数据
#被窃听的情况,这个设置的实用性不大,忽略之
ssl:
mode: disabled
#security:
#开启数据库的访问权限,这个是必须的。mongod的权限由两部分组成一个角色,第二个资源
#资源可以理解是数据库、集合、复制集、集群
#mongodb的角色分为内置角色和拥护自定义角色,自定义角色可以继承内置角色。
#内置角色可以划分以下几类,比较好记忆。
#1、单库(单个db,不是实例,一个实例下可以有好多db):
#read(读)、readWrite(读写)、dbOwner、dbAdmin、userAdmin,共5种
#其中dbOwner的具有单库的全部权限,dbAdmin和userAdmin次之,一个管理db的,一个管理用户的.
#read和readWrite用户权限,一个只读,一个读写。
#
#2、集群权限,包括:clusterAdmin、clusterManager、clusterMonitor、hostManager、backup、restore
#3、所有库,包括:readAnyDatabase、readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase
#这些权限和单库一一对应,只是所有库没有owner。
#4、超级管理员,最牛逼的内种.root
#
#一般情况下,有设置两种权限就可以了。一种是root,一种是readWrite
#按照这个逻辑,创建代码如下:
#root:db.createUser({user:”root”,pwd:”root”,roles:[“root”]})
#user:db.createUser({user:”guohu”,pwd:”123456″,roles:[“readWrite”]})
security:
authorization: enabled
#验证模式,仅限于副本集和分片模式下生效。曾踩了一大坑,从设置项的名字看,
#以为是分片模式下的设置项,那想到,复制集也需要这两个设置项。
#开启authorization,除了开启客户端的验证,副本集和分片中各节点的通信验证也开启
#需要注意md5.key的权限需要设置成400
#可选项keyFile/sendKeyFile/sendX509/x509,除了keyFile,其他三个均需要开启ssl
clusterAuthMode: keyFile
keyFile: /data/mongod/keyFile/md5.key
javascriptEnabled: false
#operationProfiling:
operationProfiling:
slowOpThresholdMs: 100
mode: all
#replication:
replication:
replSetName: wanda
oplogSizeMB: 1024
#是否开启readConcern的级别为“majority”,默认为false;
#只有开启此选项,才能在read操作中使用“majority”
enableMajorityReadConcern: true
# localPingThresholdMs: 15
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
Pingback引用通告: Mongodb的配置 | 精彩每一天