mongodb 3.0及以上版本基本都是使用 yaml 语法格式的配置文件, 启动 mongo 实例如果不是指定配置文件或参数命令启动, 会按照默认的参数启动。
mongodb目录结构:
data目录:存在数据
etc目录存放配置文件:核心配置文件mongodb.conf,keyfile文件,集群信息文件cluster.conf
log目录:存放日志
tmp目录:存放临时文件,进程id
########################################
├── data/
├── etc/
│ ├── cluster.conf
│ ├── keyfile
│ └── mongodb.conf
├── log/
│ └── mongodb.log
└── tmp/
└── mongo_28000.pid
[work@xxx etc]$ cat mongodb.conf
systemLog:
destination: file
path: /home/work/mongodb/mongo_28042/log/mongodb.log
logAppend: true
#net Options
net:
maxIncomingConnections: 10240
port: 28042
bindIp: 10.136.42.3,localhost
serviceExecutor : adaptive
#security Options
security:
authorization: 'enabled'
keyFile: /home/work/mongodb/mongo_28042/etc/glc-test
clusterAuthMode: "keyFile"
#storage Options
storage:
engine: "wiredTiger"
directoryPerDB: true
dbPath: /home/work/mongodb/mongo_28042/data
#indexBuildRetry: true
journal:
enabled: true
commitIntervalMs: 100
wiredTiger:
engineConfig:
directoryForIndexes: true
cacheSizeGB: 10
journalCompressor: "snappy"
collectionConfig:
blockCompressor: "snappy"
indexConfig:
prefixCompression: true
#wiredTigerCollectionConfigString: lsm
#wiredTigerIndexConfigString: lsm
#replication Options
replication:
oplogSizeMB: 65536 #64GB
replSetName: glc-test
#operationProfiling Options
operationProfiling:
slowOpThresholdMs: 100
mode: "slowOp"
processManagement:
fork: true
pidFilePath: /home/work/mongodb/mongo_28042/tmp/mongo_28042.pid
net.serviceExecutor配置:
net.serviceExecutor
输入:string
默认值:同步
版本3.6中的新功能。
确定线程和执行模型mongos或mongod用于执行客户端请求。该--serviceExecutor选项接受以下值之一:
值 描述
synchronous 该mongos或mongod使用同步网络和管理上的每个连接其网络的线程池。以前版本的MongoDB以这种方式管理线程。
adaptive 的mongos或mongod与管理关于每个请求基础的线程的自适应线程池使用了新的实验性异步网络模式。当存在比数据库请求更多的非活动连接时,此模式应具有更一致的性能并使用更少的资源。
日志配置:
logpath:指定日志文件,该文件将保存所有的日志记录、诊断信息。除非另有指定,mongod将所有的日志信息输出到标准输出。如果没有指定logappend,重启则日志会进行覆盖操作。
1.logpath=/var/log/mongodb/mongodb.log
logappend:写日志的模式:设置为true为追加。默认是覆盖。如果未指定此设置,启动时MongoDB的将覆盖现有的日志文件。
1.logappend=true
# 配置言样例:
systemLog:
destination: file
logAppend: true
path: /data/mongo/test/mongodb.log
quiet: true
配置详解#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=false
# 日志文件位置
logpath=/usr/local/mongodb/log/mongodb.log
# 以追加方式写入日志
logappend=true
#################################################
# 是否以守护进程方式运行
fork = true
# 默认27017
port = 27017
# 数据库文件位置
dbpath=/data/mongodata
###########################################################
# 启用定期记录CPU利用率和 I/O 等待
#cpu = true
# 是否以安全认证方式运行,默认是不认证的非安全方式
#auth = true
#noauth = true
# 详细记录输出
#verbose = true
# Inspect all client data for validity on receipt (useful for
# developing drivers)用于开发驱动程序时验证客户端请求
#objcheck = true
# Enable db quota management
# 启用数据库配额管理
#quota = true
# 设置oplog记录等级
# Set oplogging level where n is
# 0=off (default)
# 1=W
# 2=R
# 3=both
# 7=W+some reads
#diaglog=0
# Diagnostic/debugging option 动态调试项
#nocursors = true
# Ignore query hints 忽略查询提示
#nohints = true
# 禁用http界面,默认为localhost:28017
#nohttpinterface = true
# 关闭服务器端脚本,这将极大的限制功能
# Turns off server-side scripting. This will result in greatly limited
# functionality
#noscripting = true
# 关闭扫描表,任何查询将会是扫描失败
# Turns off table scans. Any query that would do a table scan fails.
#notablescan = true
# 关闭数据文件预分配
# Disable data file preallocation.
#noprealloc = true
# 为新数据库指定.ns文件的大小,单位:MB
# Specify .ns file size for new databases.
# nssize =
# Replication Options 复制选项
# in replicated mongo databases, specify the replica set name here
#replSet=setname
# maximum size in megabytes for replication operation log
#oplogSize=1024
# path to a key file storing authentication info for connections
# between replica set members
#指定存储身份验证信息的密钥文件的路径
#keyFile=/path/to/keyfile
————————配置文件详解————————
MongoDB各配置参数详细说明:
1、verbose:
日志信息冗余。默认false。提高内部报告标准输出或记录到logpath配置的日志文件中。要启用verbose或启用verbosity 用vvvv参数,
如:verbose = true
2.vvvv = true
ps:启动verbose冗长信息,它的级别有 vv~vvvvv,v越多级别越高,在日志文件中记录的信息越详细。
3、port:
端口。默认27017,MongoDB的默认服务TCP端口,监听客户端连接。要是端口设置小于1024,比如1021,则需要root权限启动,不能用 mongodb帐号启动,(普通帐号即使是27017也起不来)否则报错:[mongo --port=1021 连接]
ERROR: listen(): bind() failed errno:13 Permission denied for socket: 127.0.0.1:1021
如:port = 27017
4、bind_ip:
绑定地址。默认127.0.0.1,只能通过本地连接。进程绑定和监听来自这个地址上的应用连接。要是需要给其他服务器连接,则需要注释掉这个或则 把IP改成本机地址,如192.168.200.201[其他服务器用 mongo --host=192.168.200.201 连接] ,
可以用一个逗号分隔的列表绑定多个IP地址。
如:bind_ip = 127.0.0.1
5、maxConns:
最大连接数。默认值:取决于系统(即的ulimit和文件描述符)限制。MongoDB中不会限制其自身的连接。当设置大于系统的限制,则无效,以系 统限制为准。这对于客户端创建很多“表”,允许连接超时而不关闭“表”的时候很有用。
设置该值的高于连接池和总连接数的大小,以防止尖峰时 候的连接。注意:不能设置该值大于20000。
如:maxConns = 100
6、objcheck:
强制验证客户端请求。2.4的默认设置为objcheck成为true,在早期版本objcheck默认为false。因为它强制验证客户端请求,确保客户端绝不插入无 效文件到数据库中。对于嵌套文档的对象,会有一点性能影响。设置noobjcheck 关闭。
如:objcheck = true
7、noobjcheck:
同上,默认关闭false。
如:noobjcheck = false
8、logpath:
指定日志文件,该文件将保存所有的日志记录、诊断信息。除非另有指定,mongod将所有的日志信息输出到标准输出。如果没有指定logappend, 重启则日志会进行覆盖操作。
如:logpath=/var/log/mongodb/mongodb.log
9、logappend:写日志的模式:设置为true为追加。默认是覆盖。如果未指定此设置,启动时MongoDB的将覆盖现有的日志文件。
如:logappend=true
10、syslog:日志输出都发送到主机的syslog系统,而不是标准输出到logpath指定日志文件。syslog和logpath不能一起用,会报错:Cant use both a logpath and syslog
如:syslog = true
11、pidfilepath:
进程ID,没有指定则启动时候就没有PID文件。默认缺省。
如:pidfilepath = /var/run/mongo.pid
12、keyFile:
指定存储身份验证信息的密钥文件的路径。默认缺省。详情见:"
word-spacing: 0px; display: inline; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background- color: #ffffff;
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">Replica Set Security" and “Replica Set Administration.”
如:.keyFile = /srv/mongodb/keyfile
14、fork:
是否后台运行,设置为true 启动 进程在后台运行的守护进程模式。默认false。
如:fork = true
15、auth:
用户认证,默认false。不需要认证。当设置为true时候,进入数据库需要auth验证,当数据库里没有用户,则不需要验证也可以操作。直到创建了第一个用户,之后操作都需要验证。
比如:通过db.addUser('sa','sa') 在admin库下面创建一个超级用户,只能在在admin库下面先认证完毕了:ab.auth('sa','sa') ,才能去别的库操作,不能在其他库验证。这样连接数据库也需要指定库:
1.mongo -usa -psa admin #sa 帐号连接admin
1.mongo -uaa -paa test #aa 帐号连接test
如:auth = true