4

MongoDB | 配置选项

 3 years ago
source link: https://ijayer.github.io/post/tech/db/mongodb/20170423-config-options/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

Specify the config file with -f

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

Core Options

systemLog

systemLog:
   # 指定是一个文件
   destination: file         
   
   # 日志存放位置
   path: /home/mgo/mgo.log   
   
   # 产生日志内容追加到文件
   logAppend: true           
   
   # 在quite模式下会限制输出信息
   quiet: true               

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

storage

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

processManagement:
   # 以守护进程方式运行mongod/mongos, 默认false
   fork: true
   
   # 配合 "fork:true" 参数,将mongod/mongos进程ID写入指定的文件,如果
   # 不指定,将不会创建PID文件   
   pidFilePath: /var/run/mgo.pid  
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

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

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

replication

# 复制集相关配置
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

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

仅mongos服务的选项

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 ?

返回目录


Recommend

  • 29

    今天你点外卖选择“无需餐具”了吗? 最近朋友小A问了一个很有趣但又值得深思的问题: 为什么外卖平台提供了需要餐具为0的选项,且用户点餐的时候选择了“不需要餐具”,但是收到的外卖仍然是有一次性餐具呢? 一、问题背景 今年早些时候,重庆市绿色志愿者联合会(这...

  • 32

  • 74

    相信研究过怎么在 ObjC 中进行版本字符串比对的朋友,大多都看过这一篇 StackOverflow 的问答: Compare version numbers in Objective-C 里面提到的

  • 41
    • www.tuicool.com 6 years ago
    • Cache

    Go Micro Options 函数选项模式

    函数选项 Functimional Options 在Go语言中是没有默认函数的,但是我们可以使用函数选项模式来优雅的解决这个问题。函数选项模式不仅仅可以解决默认函数的问题还可以解决大量参数造成的代码复杂的问题。使用这个模式的有点:...

  • 56

    项目准备 1.创建数据库 create database choices_test default charset utf8; 2.创建一个名为 choices_test 的Django项目; 3.创建应用app01; 项目结构如下所示

  • 21
    • 微信 mp.weixin.qq.com 5 years ago
    • Cache

    浅谈 Linux 下常用 Socket 选项设置

    0.前言 TCP/IP协议栈是Linux内核的重要组成部分和网络编程的基石,虽然Linux和BSD有很大的联系,但是对于某些Socket选项和内核操作仍然存在差异,因此文中适用场景均为仅Linux。 《UNIX网络编程》...

  • 36
    • 微信 mp.weixin.qq.com 5 years ago
    • Cache

    .NET Core微服务开发选项

    微服务开发的关注点有哪些? 微服务构最终的目标是实现业务的价值,交付,为了让开发人员更加关注业务开发和交付,微服务需要一些比较底层的基础设置,我们也称为微服务公共关注点。

  • 36
    • studygolang.com 4 years ago
    • Cache

    设置各种选项的最佳套路

    背景 在 Go 里面写一个 struct 时,经常会遇到要给 struct 里面的各个字段提供设置功能。这个问题看起来很简单很容易,实际上困扰了不少人,连 Go 的三巨头之一 Rob Pike 都曾经为之苦恼了一段时间,后来找到了最佳实践后还为...

  • 12

    基于选项模式实现.NET Core的配置热更新2020-10-1167 27 min.最近在面试的时候,遇到了一个关于 .NET Core 配置热更新的问题,顾名思义,就是在应用程序的配置发生变化时,如何在不重启应用的情况下使用当前配置。从 .NET Framework 一路...

  • 12

    显示卡属性和配置可交换显示卡选项怎么删除 2021年8月7日113 有用户安装驱动后打开右键菜单发现多了两个选项“显示卡

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK