Configuration File

Offical:The Official Doc.Configuration File Options

NOTE:

  • File Format: YAML
  • YAML does not support tab characters for indentation: use spaces instead.

Use The Configuration File

Specify the config file with --config

1
2
mongod --config /etc/mongod.conf
mongos --config /etc/mongos.conf

Specify the config file with -f

1
2
mongod -f /etc/mongod.conf
mongos -f /etc/mongos.conf

Core Options

systemLog

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
systemLog:
   # 指定是一个文件
   destination: file         
   
   # 日志存放位置
   path: /home/mgo/mgo.log   
   
   # 产生日志内容追加到文件
   logAppend: true           
   
   # 在quite模式下会限制输出信息
   quiet: true               

   # 默认是iso8601-local,日志信息中还有其他时间戳格式:
   # ctime,iso8601-utc,iso8601-local 
   timeStampFormat: iso8601-utc 

storage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
storage:
   # 是否开启journal(日志)持久存储,journal日志用来数据恢复,是mongodb最基础的性,
   # 通常用于故障恢复。仅对mongod进程有效
   journal:
      enabled: true           
   
   # 数据文件存放路径
   dbPath: /data/db 

   # - 是否将不同DB的数据存储在不同的目录,具体存放在dbPath的子目录,目录名为DB的名称
   # - 对已经存储数据的mongod修改此值,需要首先使用mongodump指令将数据导出,然后关闭
   # mongod,再修改此值和指定新的dbPath,然后使用mongorestore指令重新导入数据(即
   # 导出数据,并使用mongorestore将数据重新写入mongod的新目录中)
   # - 此参数仅对mongod进程有效,默认值为false,不建议修改此值
   directoryPerDB: false   
   
   # mongod使用fsync操作将数据flush到磁盘的时间间隔, 默认值60s; 
   # mongod将变更的数据写入journal后再写入内存,并间歇性的将内存数据flush到磁盘中,
   # 即延迟写入磁盘,有效提升磁盘效率。此指令不影响journal存储,仅对mongod有效。
   syncPeriodSecs: 60

   # 数据引擎类型, mongodb 3.0之后支持“mmapv1”、“wiredTiger”两种引擎,默认值为
   # “mmapv1”;官方宣称wiredTiger引擎更加优秀。
   engine: wiredTiger
   
   # wt引擎配置   
   wiredTiger:
      engineConfig: 
         # wiredTiger缓存工作集(working set)数据的内存大小,单位:GB
         cacheSizeGB: 10
         # 索引是否按数据库名进行单独存储      
         directoryForIndexes: true 
      collectionConfig:
         # 压缩配置
         blockCompressor: zlib     
      indexConfig:
         # 索引配置
         prefixCompression: true   

processManagement

1
2
3
4
5
6
7
processManagement:
   # 以守护进程方式运行mongod/mongos, 默认false
   fork: true
   
   # 配合 "fork:true" 参数,将mongod/mongos进程ID写入指定的文件,如果
   # 不指定,将不会创建PID文件   
   pidFilePath: /var/run/mgo.pid  

net

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
net:
   port: 27017 
   
   # 绑定ip地址访问mongodb,多个ip逗号分隔(0.0.0.0-绑定到所有接口, 即
   # 内网·外网均可访问)
   bindIp: 127.0.0.1
   # bindIp: [127.0.0.1, 192.168.1.169]
   
   # mongod/mongos进程允许的最大连接数, 如果此值超过操作系统配置的连接
   # 数阀值,将不会生效(ulimit);默认值为65536。
   maxIncomingConnections: 65536

security

1
2
3
4
5
6
7
8
9
security:
   # 指定分片集或副本集成员之间身份验证的key文件存储位置
   keyFile: /home/mgo/keyFile
   
   # 访问数据库和进行操作的用户角色认证 
   authorization: enabled 

   # 集群认证模式,默认是keyFile
   clusterAuthMode: /home/mgo/keyFile

replication

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 复制集相关配置
replication:
   # replication操作日志的最大尺寸,单位:MB。
   # mongod进程根据磁盘最大可用空间来创建oplog,比如64位系统,oplog为磁盘
   # 可用空间的5%,一旦mongod创建了oplog文件,此后再次修改oplogSizeMB将不
   # 会生效。此值不要设置的太小, 应该足以保存24小时的操作日志,以保证secondary
   # 有充足的维护时间;如果太小,secondary将不能通过oplog来同步数据,只能
   # 全量同步。此值仅对mongod有效。
   oplogSizeMB: 51200 

   # 指定副本集的名称, 无默认值, 复制集中的所有mongd实例都必须有相同的名字
   # sharding分布式下,不同的sharding应该使用不同的replSetName。仅对mongod有效。
   replSetName: rs 

    # 指定副本集成员在接受oplog之前是否加载索引到内存。默认会加载所有的索引到内存。none不加载;all加载所有;_id_only仅加载_id
   secondaryIndexPrefetch: all

sharding

1
2
3
4
5
6
# shard, 分片集群模式
sharding:
   # 配置sharding集群中mongod服务的角色: 可选值
   #   configsvr: config server(配置服务器)
   #   shardsvr:  shard(分片)
   clusterRole: configsvr

仅mongos服务的选项

1
2
3
4
5
6
7
8
sharding: 
   # mongos服务配置此参数,设定config server的地址列表,每个server地址以 “ , ”
   # 隔开;config server为分片时,configDB的地址列表一定要加上 replSetName.
   configDB: cf/192.168.1.167:27010,192.168.1.167:27011,192.168.1.167:27012

   # shard集群中每个chunk的大小, 单位:MB, 默认64
   # 整个sharding集群中,此值需要保持一致,集群启动后修改此值将不再生效。仅对mongos有效。
   chunkSize: 64

See Also

Thanks to the authors 🙂

返回目录