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>