查看: 103|回覆: 1

【MongoDB 配置篇】MongoDB 配置文件详解

[複製鏈接]

5

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2009-5-5
發表於 2019-9-18 23:47:00 | 顯示全部樓層 |閲讀模式

目录

1 数据库环境

2 配置文件

2.1 配置文件格式

2.2 配置文件的使用

3 配置文件核心选项

3.1 systemLog选项

3.2 processManagement选项

3.3 cloud选项

3.4 net选项

3.5 security选项

3.6 setParameter选项

3.7 storage选项

3.8 operationProfiling选项

3.9 replication选项

3.10 sharding选项

3.11 auditLog选项

3.12 snmp选项


MongoDB实例的运行离不开相应的参数配置,比如对数据库存放路径dbpath的配置,对于参数的配置,可以在命令行以选项的形式进行配置,也可以将配置信息列入配置文件进行配置。但是,使用配置文件将会使对mongod和mongos的管理变得更加容易,本篇将会对配置文件进行详细的讲解。

1 数据库环境

[mongod@strong ~]$ mongod --version
db version v4.2.0
git version: a4b751dcf51dd249c5865812b390cfd1c0129c30
OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
allocator: tcmalloc
modules: none
build environment:
distmod: rhel62
distarch: x86_64
target_arch: x86_64

2 配置文件

2.1 配置文件格式

MongoDB配置文件使用YAML的格式。

2.2 配置文件的使用

对于配置文件的使用,在mongod或mongos中指定--config或-f选项。

1)指定--config选项

[mongod@strong ~]$ mongod --config /etc/mongo.cnf

2)指定-f选项

[mongod@strong ~]$ mongod -f /etc/mongo.cnf

3 配置文件核心选项

3.1 systemLog选项

1)选项

systemLog:
  verbosity: <int>
  quiet: <boolean>
  traceAllExceptions: <boolean>
  syslogFacility: <string>
  path: <string>
  logAppend: <boolean>
  logRotate: <string>
  destination: <string>
  timeStampFormat: <string>
  component:
    accessControl:
      verbosity: <int>
    command:
      verbosity: <int>

    # COMMENT additional component verbosity settings omitted for brevity

2)说明

  • verbosity:默认为0,值范围为0-5,用于输出日志信息的级别,值越大,输出的信息越多;
  • quiet:mongod或mongos运行的模式,在该模式下限制输出的信息,不推荐使用该模式;
  • traceAllExceptions:打印详细信息以便进行调试;
  • path:日志文件的路径,mongod或mongos会将所有诊断日志信息发送到该位置,而不是标准输出或主机的syslog上;
  • logAppend:默认为false,若设为true,当mongod或mongos实例启动时,会将新的条目追加到已存在的日志文件,否则,mongod会备份已存在的日志,并创建新的日志文件;
  • destination:指定日志输出的目的地,具体值为file或syslog,若设置为file,需指定path,该选项未指定,则将所有日志输出到标准输出;
  • timeStampFormat:日志信息中的时间格式,默认为iso8601-local,该选项有三个值,分别为ctime、iso8601-utc和iso8601-local;

3.2 processManagement选项

1)选项

processManagement:
  fork: <boolean>
  pidFilePath: <string>
  timeZoneInfo: <string>

2)说明

  • fork:默认值为false,设置为true,会激活守护进程在后台运行mongod或mongos进程;
  • pidFilePath:指定mongod或mongos写PID文件的路径,不指定该值,则不会创建PID文件;

3.3 cloud选项

1)选项

cloud:
  monitoring:
    free:
      state: <string>
      tags: <string>

2)说明

  • state:激活或禁用免费的MongoDB Cloud监控,该选项有以下三个值,分别为runtime、on和off,默认为runtime;在运行时可以通过db.enableFreeMonitoring()和db.disableFreeMonitoring()
  • tags:描述环境上下文的可选标记;

3.4 net选项

1)选项

net:
  port: <int>
  bindIp: <string>
  bindIpAll: <boolean>
  maxIncomingConnections: <int>
  wireObjectCheck: <boolean>
  ipv6: <boolean>
  unixDomainSocket:
    enabled: <boolean>
    pathPrefix: <string>
    filePermissions: <int>
  tls:
    certificateSelector: <string>
    clusterCertificateSelector: <string>
    mode: <string>
    certificateKeyFile: <string>
    certificateKeyFilePassword: <string>
    clusterFile: <string>
    clusterPassword: <string>
    CAFile: <string>
    clusterCAFile: <string>
    CRLFile: <string>
    allowConnectionsWithoutCertificates: <boolean>
    allowInvalidCertificates: <boolean>
    allowInvalidHostnames: <boolean>
    disabledProtocols: <string>
    FIPSMode: <boolean>
  compression:
    compressors: <string>
  serviceExecutor: <string>

2)说明

  • port:MongoDB实例监听客户端连接的TCP端口,对于mongod或mongos实例,默认端口为27017,对于分片成员,默认端口为27018,对于配置服务器成员,默认端口为27019;
  • bindIp:默认值为localhost。主机名、IP地址或Unix套接字,mongod或mongos在其上监听客户端的连接,绑定多个地址,以逗号分隔,若绑定所有IPv4地址,可输入0.0.0.0;
  • bindIpAll:默认值为false,设置为true,mongod或mongos实例将会绑定所有IPv4地址;
  • maxIncomingConnections:默认值为65536,mongod或mongos接收的最大连接数;

3.5 security选项

1)选项

security:
  keyFile: <string>
  clusterAuthMode: <string>
  authorization: <string>
  transitionToAuth: <boolean>
  javascriptEnabled: <boolean>
  redactClientLogData: <boolean>
  clusterIpSourceWhitelist:
  - <string>
  sasl:
    hostName: <string>
    serviceName: <string>
    saslauthdSocketPath: <string>
  enableEncryption: <boolean>
  encryptionCipherMode: <string>
  encryptionKeyFile: <string>
  kmip:
    keyIdentifier: <string>
    rotateMasterKey: <boolean>
    serverName: <string>
    port: <string>
    clientCertificateFile: <string>
    clientCertificatePassword: <string>
    clientCertificateSelector: <string>
    serverCAFile: <string>
  ldap:
    servers: <string>
    bind:
      method: <string>
      saslMechanisms: <string>
      queryUser: <string>
      queryPassword: <string>
      useOSDefaults: <boolean>
    transportSecurity: <string>
    timeoutMS: <int>
    userToDNMapping: <string>
    authz:
      queryTemplate: <string>

2)说明

  • keyFile:存储共享密钥文件的路径,MongoDB实例使用它在分片集群或副本集中彼此进行身份验证;
  • clusterAuthMode:默认值为keyFile;

3.6 setParameter选项

1)选项

setParameter:
  <parameter1>: <value1>
  <parameter2>: <value2>

2)说明

设置MongoDB服务器的参数;

3.7 storage选项

1)选项

storage:
  dbPath: <string>
  indexBuildRetry: <boolean>
  journal:
    enabled: <boolean>
    commitIntervalMs: <num>
  directoryPerDB: <boolean>
  syncPeriodSecs: <int>
  engine: <string>
  wiredTiger:
    engineConfig:
      cacheSizeGB: <number>
      journalCompressor: <string>
      directoryForIndexes: <boolean>
    collectionConfig:
      blockCompressor: <string>
    indexConfig:
      prefixCompression: <boolean>
  inMemory:
    engineConfig:
      inMemorySizeGB: <number>

2)说明

  • dbPath:默认值为/data/db,mongod实例存储数据的目录;
  • indexBuildRetry:默认值为true,指定mongod在下次启动时是否重建未完成的索引;
  • enabled:64位系统默认为true,32位系统默认为false,是否激活日志以确定数据文件仍然有效以及可进行恢复;
  • commitIntervalMs:默认值为100毫秒,取值范围为1-500毫秒;
  • directoryPerDB:默认值为false,设置为true,每个数据库使用单独的目录存储数据,目录位于dbPath目录之下;
  • syncPeriodSecs:默认值为60,MongoDB通过fsync操作将数据刷新到数据文件之前经过的时间;
  • engine:默认值为wireTiger,4.2版本之后,MMAPv1存储引擎将会被废弃;
  • cacheSizeGB:定义wireTiger将为所有数据使用的内部缓存的大小,索引构建消耗的内存与wireTiger缓存内存时分开的,从MongoDB 3.4开始,该值的范围可以从0.25GB到10000GB,可以是浮点数,默认值是50%*( RAM - 1 GB )或256MB;
  • journalCompressor:默认值为snappy,指定用于压缩wireTiger日志数据的压缩类型,压缩类型有以下几种,分别为none、snappy、zlib和sztd;
  • directoryForIndexes:默认为false,设置为true,mongod将索引和集合存储在data(dbPath)目录下的单独子目录中,即索引存放在名字为index的子目录中,集合数据存放在名字为collection的子目录中;
  • blockCompressor:默认为snappy,指定集合数据的默认压缩类型,有以下几种类型,分别为none、snappy、zlib和sztd;
  • prefixCompression:默认为true,启用或禁用索引数据的前缀压缩;

3.8 operationProfiling选项

1)选项

operationProfiling:
  mode: <string>
  slowOpThresholdMs: <int>
  slowOpSampleRate: <double>

2)说明

  • mode:默认为off,指定应该分析哪些操作,分析器级别有如下几种,分别为off、slowOp和all;
  • slowOpThresholdMs:默认值为100;
  • slowOpSampleRate:默认值为1.0;

3.9 replication选项

1)选项

replication:
  oplogSizeMB: <int>
  replSetName: <string>
  secondaryIndexPrefetch: <string>
  enableMajorityReadConcern: <boolean>

2)说明

  • oplogSizeMB:复制操作日志的最大大小,以M为单位,默认情况下,mongod进程基于最大可用空间创建oplog,对于64位系统,oplog通常占可用磁盘空间的5%;
  • replSetName:副本集的名称;
  • enableMajorityReadConcern:默认为true,在PSA架构中,可以禁用该选项以缓解存储缓存的压力;

3.10 sharding选项

1)选项

sharding:
  clusterRole: <string>
  archiveMovedChunks: <boolean>

2)说明

  • clusterRole:设置在分片集群中mongod实例的角色,有以下值可供选择,分别为configsvr和shardsvr;

3.11 auditLog选项

1)选项

auditLog:
  destination: <string>
  format: <string>
  path: <string>
  filter: <string>

2)说明

企业版选项,用于审计;

3.12 snmp选项

1)选项

snmp:
  disabled: <boolean>
  subagent: <boolean>
  master: <boolean>

2)说明

  • disabled:默认值为false,禁用SNMP对mongod的访问;

 

 



来源:https://www.cnblogs.com/alen-liu-sz/p/12975593.html
回覆

使用道具 舉報

0

主題

720

回帖

4441

積分

琼殿精英

金币
3721
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-5-9 08:55:01 | 顯示全部樓層
顶一个!lz的帖子太详细了,MongoDB配置文件这块确实很重要,之前一直用命令行参数启动,每次改配置都很麻烦,看了这篇才知道用配置文件这么方便。
配置文件使用YAML格式这点很赞,比以前用配置文件直观多了。

想请教几个问题:

1. 关于storage.wiredTiger.engineConfig.cacheSizeGB这个参数,lz说默认是50%*(RAM - 1GB),那如果服务器上同时运行其他应用,这个值是不是需要手动调小一些?调到多少比较合适?

2. 关于net.bindIp,生产环境一般怎么配置比较安全?直接绑定0.0.0.0会不会有安全风险?

3. 看到lz提到4.2版本后MMAPv1存储引擎会被废弃,那我们生产环境是不是应该直接用WiredTiger?

另外补充一点个人经验:

我之前配置的时候发现,如果用
  1. --config
複製代碼
  1. -f
複製代碼
指定配置文件后,命令行的其他参数会失效,所以配置文件里的参数一定要写全,这点新手很容易踩坑。

感谢lz的分享,期待更多MongoDB相关的教程!马克一下慢慢学习~
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部