DBA MongoDB 配置文件

YAML

​ MongoDB中配置文件采用YAML进行书写(3.x以上),这是一种通用的数据串行化格式。

​ 不同于MySQL中XML的配置文件格式,YAML格式阅读起来更加方便。

​ 基本语法规则:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格。
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • 使用#标识注释

​ 此外,还可以使用#号标识注释。

​ 示例演示:

systemLog:
   destination: file
   path: "/usr/local/mongodb/logs/mongod.log"
   logAppend: true
storage:
   dbPath: "/usr/local/mongodb/data"
   journal:
      enabled: true
processManagement:
   fork: true
net:
   bindIp: 0.0.0.0
   port: 27017
setParameter:
   enableLocalhostAuthBypass: false

​ 如果你想了解更多关于YAML的信息,点我跳转

配置简述

配置项

​ 在MongoDB中,顶层拥有不同级别的配置项目,具体描述如下所示:

顶层配置 描述
systemLog 系统日志相关
storage 数据存储相关
processManagement 进程控制相关
net 网络配置相关
security 安全验证相关
replication 复制集相关
sharding 分片集群相关
operationProfiling 性能分析相关
setParameter 自定义变量相关
auditLog 审计日志相关

示例演示

​ 下面是一份关于MongoDB配置的说明:

# 系统日志
systemLog:
   destination: file                   # 日志输出目的地,file或syslog
   path: <string>                      # 日志位置
   logAppend: true                     # 日志记录时以追加模式记录,服务重启时不产生新的log文件
  
# 数据存储
storage:
   engine: <string>                    # 存储引擎,3.x以上默认为wiredTiger,4.x开始已被弃用
   dbPath: <string>                    # 数据存储目录
   journal:                            # 回滚日志
      enabled: true
   directoryPerDB: true                # 默认是false,不适用于内存引擎
   mmapv1:                             # mmapv1存储引擎
      preallocDataFiles: <boolean>     # 是否启用数据文件预分配?默认为false
      nsSize: <int>                    # 命名空间的大小,默认为16M
      smallFiles: <boolean>            # 减少数据文件初始大小,用大量库存较小的文件,默认false
      quota:
         enforced: <boolean>           # 启动或禁用数据库可用于数字数据文件最大限制,默认false
         maxFilesPerDB: <int>          # 数据库中数据文件数量限制,默认为8,配合enforced参数使用
   wiredTiger:                         # wiredTiger存储引擎
      engineConfig:
         cacheSizeGB: 2                # 最大缓存数据大小
         journalCompressor: <string>   # WiredTiger日志数据压缩类型,默认snappy
         directoryForIndexes: true     # 索引集合storage.dbPath存储在单独的子目录中,默认false
      collectionConfig:
         blockCompressor: <string>     # 收集数据的默认压缩类型,默认snappy
      indexConfig:
         prefixCompression: <boolean>  # 禁用索引数据的前缀压缩,默认true
   inMemory:                           # inMemory存储引擎
      engineConfig:
         inMemorySizeGB:<number>       # 最大缓存大小,默认物理内存的50%

# 进程控制  
processManagement:
   fork: true                         # 后台守护进程
   pidFilePath: <string>              # pid文件的位置,一般不用配置,可以去掉这行,自动生成到data中
    
# 网络配置
net:            
   bindIp: localhost,192.168.1.1      # 监听地址,绑定内网IP
   port: <port>                       # 端口号,默认不配置端口号,是27017
   maxIncomingConnections:5000        # 链接池中的初始最大链接数
   
# 安全验证  
security:
  keyFile: <string>                   # 秘钥存放路径,MongoDB的分配集群或复制集中身份验证共享秘钥
  clusterAuthMode: keyFile            # 集群认证方式,使用秘钥文件进行验证
  authorization: enabled              # 是否打开用户名密码验证
  javascriptEnabled:  <boolean>       # 禁用服务端Js执行
  enableEncryption: <boolean>         # 启用WT存储引擎的加密,必须设置为true传递加密密钥和配置
  encryptionCipherMode: <string>      # 加密的模式,仅适用于企业版


# 复制集
replication:
 oplogSizeMB: <NUM>                   # 复制操作日志的大小
 replSetName: "<REPSETNAME>"          # 复制集名称,同一复制集下所有hostname必须一致
 secondaryIndexPrefetch: "all"        
 
# 分片集群
sharding:
   clusterRole: <string>
   archiveMovedChunks: <boolean>

详细说明

系统日志

​ 以下是系统日志相关的配置及参数:

systemLog:
  verbosity: <int>             # 日志级别,默认0,1-5均会包含debug信息
  quiet: <bool>                # 安静,true时将会减少日志的输出量
  traceAllExceptions: <bool>   # 打印异常详细信息
  syslogFacility: <string>     # 启用syslog指定用于登录时信息到syslog Facility水平,前提是
  path: <string>               # 日志路径
  logAppend: <bool>            # 追加日志还是新建日志
  logRotate: rename|reopen     # 日志轮询。默认值rename;reopen前提为 logAppend: true
  destination: <string>        # 日志输出目的地,可为file或syslog,不指定会输出到标准输出
  timeStampFormat: <string>    # 日志时间戳格式,有 ctime,Iso869-utc,iso8691-local
  component:                   # 为不同的组件指定各自的日志信息级别
      accessControl:
          verbosity: <int>
      command:
          verbosity: <int>

存储引擎

​ 以下是存储引擎相关的配置及参数:

storage:
  dbPath: <string>              # 数据存储目录
  indexBuildRetry: <bool>       # 构建索引时mongod意外关闭,启动是否重建索引,默认true
  repairPath: <string>          # 在repair期间临时数据目录
  journal:        
      enabled: <boolean>        # journal日志是否持久存储,通常用于数据故障恢复,建议开启
      commitIntervalMs: <num>   # mongod日志刷新值,范围1-500毫秒,默认100,不建议修改
  directoryPerDB:  <bool>       # 是否将不同的数据存储在不同的目录中,需为dbPath子目录
  syncPeriodSecs:  <int>        # fsync操作将数据flush到磁盘的时间间隔,默认为60秒,不建议修改
  engine:  <string>             # 存储引擎类型,3.2前默认mmapv1,3.2后默认WiredTiger
  wiredTiger:    #存储引擎配置
      engineConfig:
          cacheSizeGB: <number>        # 最大缓存大小
          journalCompressor: <string>  # 日志压缩算法,可选值有 none,snappy(默认),zlib
          directoryForIndexes: <bool>  # 是否将索引和集合数据分别存储在dbPath单独的目录中
      collectionConfig:
          blockCompressor: <string>    # collection数据压缩算法,可选none, snappy,zlib
      indexConfig:
          prefixCompression: <bool>    # 是否对索引数据使用前缀压缩。可有效减少索引数据的内存使用量。

进程相关

​ 以下是进程相关的配置及参数:

processManagement:
  fork: <boolean>        # 是否以守护进程运行,默认false
  pidFilePath: <string>  # 将mongod进程ID写入指定文件,默认不会创建

网络相关

​ 以下是网络相关的配置及参数:

net:
  prot: <int>                    # 监听端口,默认27017
  bindIp: <string>               # 绑定IP,如果此值是“0.0.0.0”则绑定所有接口
  maxIncomingConnections: <int>  # 进程允许的最大连接数,上限是系统阈值(ulimit)
  wireObjectCheck: <boolean>     # 当客户端写入数据时,是否检查数据的有效性(BSON),有效的数据才执行
  ipv6: <bool>                   # 是否支持多实例之间使用ipv6
  http:                          # http配置
      enabled: <boolean>
      JSONEnabled: <boolean>
      RESTInterfaceEnabled: <boolean>
  ssl:                           # https配置
      sslOnNormalPorts: <boolean>
      mode: <string>
      PEMKeyFile: <string>
      PEMKeyPassword: <string>
      clusterFile: <string>
      clusterPassword: <string>
      CAFile: <string>
      CRLFile: <string>
      allowConnectionsWithoutCertificates: <boolean>
      allowInvalidCertificates: <boolean>
      allowInvalidHostnames: <boolean>
      disabledProtocols: <string>
      FIPSMode: <boolean>

验证相关

​ 以下是验证相关的配置及参数:

security:
  keyFile: <string>                   # 秘钥存放路径,MongoDB的分配集群或复制集中身份验证共享秘钥
  clusterAuthMode: keyFile            # 集群认证方式,使用秘钥文件进行验证
  authorization: enabled              # 是否打开用户名密码验证
  javascriptEnabled:  <boolean>       # 禁用服务端Js执行
  enableEncryption: <boolean>         # 启用WT存储引擎的加密,必须设置为true传递加密密钥和配置
  encryptionCipherMode: <string>      # 加密的模式,仅适用于企业版

性能相关

​ 以下是性能(慢查询)相关的配置及参数:

operationProfiling:
  slowOpThresholdMs: <int>   # “慢查询”的时间阈值,单位毫秒(默认100ms)
  mode: <string>             # 数据库profiler级别,可选值“off|slowOp|all”

副本相关

​ 以下是副本集相关的配置及参数:

replication:
  oplogSizeMB: <int>                 # replication操作日志的最大尺寸,如果太小则全量同步
  replSetName: <string>              # 副本集名称,副本集中所有的mongod实例都必须有相同的名字
  secondaryIndexPrefetch: <string>   # 副本集的secondary, 从oplog中应用变更操作前,会先把索引加载到内存
  enalbeMajorityReadConcern: <boolean>  #允许readConcern的级别为“majority”

分片相关

​ 以下是分片相关的配置及参数:

sharding:
  clusterRole: <string>        # 在sharding集群中的角色。configsvr(27019)|shardsvr(27018)
  archiveMovedChunks: <bool>   # 当chunks迁移后,是否归档并保存这些chunks在dbPath/movechunk目录下

审计相关

​ 以下是审计相关的配置及参数:

auditLog:
  destination: <string>    # 指定审计记录的输出方式,有syslog|console|file
  format: <string>         # 输出格式,有JSON 和 BSON
  path: <string>           # 如果输入为文件,那么指定文件完整路径及文件名
  filter: <string>         # 过滤器,可限制审计系统记录的操作类型

变量相关

​ 以下是自定义变量相关的配置及参数:

setParameter:
  <parameter1>: <value1>
  <parameter2>: <value2>
posted @ 2021-03-09 22:03  云崖君  阅读(68)  评论(0编辑  收藏  举报