MongoDB 配置文件概览
MongoDB 的配置通常通过一个 YAML 文件来管理,在 Linux 系统上,这个文件默认位于 /etc/mongod.conf,在 Windows 上,它位于 C:\Program Files\MongoDB\Server\<version>\etc\mongod.conf。

(图片来源网络,侵删)
为什么使用 YAML? YAML 格式清晰、结构化,比传统的 INI 格式更易于阅读和维护,特别是对于复杂的嵌套配置。
基本结构:
# 系统日志配置 systemLog: destination: file path: /var/log/mongodb/mongod.log logAppend: true # 进程配置 processManagement: fork: true # 在后台运行 pidFilePath: /var/run/mongodb/mongod.pid # 网络配置 net: port: 27017 bindIp: 127.0.0.1 # 绑定到本地 # 存储配置 storage: dbPath: /var/lib/mongodb # 安全配置 security: authorization: enabled # 启用访问控制 # 复制集配置 replication: replSetName: myReplicaSet # 分片配置 sharding: clusterRole: shardsvr # 进程限制 setParameter: enableLocalhostAuthBypass: false
核心配置模块详解
下面我们逐一解析最重要的配置模块。
systemLog: 系统日志配置
这是配置 MongoDB 日志输出的地方,对于排查问题至关重要。

(图片来源网络,侵删)
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
destination |
string | file |
日志目标,可以是 file(写入文件)或 console(输出到标准输出)。 |
path |
string | /var/log/mongodb/mongod.log |
当 destination 为 file 时,指定日志文件的路径。 |
logAppend |
boolean | false |
是否追加到现有日志文件,如果为 false,每次重启会覆盖日志文件,生产环境推荐设为 true。 |
verbosity |
int | 0 |
日志详细程度。0 是默认级别(Info),范围从 0 到 5(最详细),调试时可提高此值。 |
quiet |
boolean | false |
如果为 true,则只记录错误和关键信息,不推荐在生产环境使用。 |
net: 网络配置
控制 MongoDB 如何监听和接受网络连接。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
port |
int | 27017 |
监听 TCP 端口。 |
bindIp |
string 或 array | 0.0.1 |
绑定到哪个 IP 地址,可以是一个字符串(如 "192.168.1.100")或数组(如 ["127.0.0.1", "192.168.1.100"])。安全提示: 生产环境切勿只绑定 0.0.1,除非你确定所有应用都在同一台机器上,使用 0.0.0 可以绑定到所有网络接口。 |
bindIpAll |
boolean | false |
如果为 true,则绑定到所有网络接口(等同于 bindIp: 0.0.0.0)。 |
maxIncomingConnections |
int | 65536 |
服务器能接受的最大并发连接数,根据你的服务器资源(文件描述符限制)进行调整。 |
wireObjectCheck |
boolean | true |
强制验证客户端传入的 BSON 对象。强烈建议保持开启,可以防止某些类型的网络攻击。 |
storage: 存储引擎与数据存储
这是 MongoDB 性能调优的核心部分。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
dbPath |
string | /var/lib/mongodb |
数据文件和索引的存储目录,确保此目录存在且 MongoDB 进程有读写权限。 |
journal |
boolean | true |
是否启用预写日志。强烈建议保持开启,它可以保证在服务器意外宕机(如断电)时数据的一致性和可恢复性。 |
engine |
string | wiredTiger |
存储引擎。wiredTiger 是目前主流且默认的引擎,性能和并发性都很好。mmapv1 是旧引擎,已不推荐使用。 |
wiredTiger |
object | - | wiredTiger 存储引擎的特定配置。 |
wiredTiger.engineConfig |
object | - | WiredTiger 引擎核心配置。 |
cacheSizeGB |
double | 物理内存的 50% | WiredTiger 的缓存大小,用于存放数据和索引,单位是 GB。重要: 这个值是 MongoDB 和其他进程共享的,建议设置为可用物理内存的 50% 左右,不要超过 70%,以免系统使用交换空间,导致性能急剧下降。 |
wiredTiger.collectionConfig.blockCompressor |
string | snappy |
集合数据的压缩算法,可选 none, snappy (默认, 速度较快), zstd (压缩率更高, 较新版本支持)。 |
wiredTiger.indexConfig.prefixCompressor |
string | snappy |
索引前缀的压缩算法,选项同上。 |
security: 安全认证配置
保护你的 MongoDB 实例免受未授权访问。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
authorization |
string | disabled |
访问控制。disabled(关闭,不推荐)、enabled(开启,必须创建用户才能访问)、disabled(仅用于测试)。生产环境必须开启! |
clusterAuthMode |
string | keyFile |
复制集或分片集群成员间的认证方式。keyFile(默认,使用共享密钥文件)、sendKeyFile(发送密钥文件)、x.509(使用 X.509 证书)。 |
keyFile |
string | - | 当 clusterAuthMode 为 keyFile 时,指定密钥文件的路径,文件内容必须是至少 6 个字符的随机字符串,权限应为 400。 |
enabled |
boolean | false |
是否启用 TLS/SSL 加密传输。生产环境强烈建议开启! |
CAFile |
string | - | CA 证书文件路径。 |
certFile |
string | - | 证书文件路径。 |
keyFile |
string | - | 私钥文件路径。 |
weakCertificateValidation |
boolean | false |
是否允许弱证书验证。 |
replication: 复制集配置
实现高可用和故障转移。

(图片来源网络,侵删)
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
replSetName |
string | - | 必须指定,复制集的名称,所有成员必须使用相同的名称。 |
oplogSizeMB |
int | 磁盘空间的 5% | 操作日志的大小,用于记录所有写操作,以便从节点同步,如果写操作非常频繁,可以适当增大此值。 |
sharding: 分片配置
用于构建大规模、可扩展的集群。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
clusterRole |
string | - | 在分片集群中的角色,可以是 configsvr(配置服务器)、shardsvr(分片服务器)或 unsampled(普通独立实例,默认)。 |
setParameter: 进程参数
用于调整一些高级的、不常修改的运行时参数。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enableLocalhostAuthBypass |
boolean | false |
是否允许在 localhost 上的连接绕过认证,仅在调试或开发时临时设为 true。 |
quiet |
boolean | false |
等同于 systemLog.quiet。 |
生产环境推荐配置示例
这是一个针对生产环境的 mongod.conf 示例,包含了安全、性能和高可用性方面的最佳实践。
# MongoDB 生产环境推荐配置
#----------------------------------------------------------------------
# 系统日志
#----------------------------------------------------------------------
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
verbosity: 0 # 0: Info, 1: Notice, 2: Warning, 3: Error, 4: Fatal, 5: Trace
#----------------------------------------------------------------------
# 进程管理
#----------------------------------------------------------------------
processManagement:
fork: true # 在后台运行
pidFilePath: /var/run/mongodb/mongod.pid
#----------------------------------------------------------------------
# 网络
#----------------------------------------------------------------------
net:
port: 27017
bindIp: 0.0.0.0 # 绑定到所有网络接口,确保安全组/防火墙已正确配置
maxIncomingConnections: 20000 # 根据服务器资源调整
#----------------------------------------------------------------------
# 安全认证
#----------------------------------------------------------------------
security:
authorization: enabled # 启用访问控制
# encryption: # 可选:启用静态数据加密
# keyVault:
# localKeyFile: /path/to/keyfile
# # auditLog:
# # destination: file
# # path: /var/log/mongodb/audit.log
# # format: JSON
# # filter: { } # 定义审计规则
#----------------------------------------------------------------------
# 存储引擎
#----------------------------------------------------------------------
storage:
dbPath: /data/db
journal:
enabled: true # 启用预写日志
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 4 # 根据服务器内存调整,8GB 内存的服务器可设为 3-4
collectionConfig:
blockCompressor: zstd # 使用 zstd 压缩,平衡压缩率和性能
indexConfig:
prefixCompressor: snappy # 索引通常用 snappy 性能更好
#----------------------------------------------------------------------
# 复制集 (高可用)
#----------------------------------------------------------------------
replication:
replSetName: myReplicaSet # 必须和集群中其他成员保持一致
#----------------------------------------------------------------------
# 分片 (如果需要)
#----------------------------------------------------------------------
# sharding:
# clusterRole: shardsvr
#----------------------------------------------------------------------
# 进程参数
#----------------------------------------------------------------------
setParameter:
enableLocalhostAuthBypass: false
如何应用配置
- 编辑配置文件:使用你喜欢的文本编辑器修改
/etc/mongod.conf。 - 重启 MongoDB 服务:配置修改后必须重启服务才能生效。
- Systemd (现代 Linux 系统):
sudo systemctl stop mongod sudo systemctl start mongod # 或者使用 reload(如果支持) # sudo systemctl reload mongod
- init.d (旧版 Linux 系统):
sudo service mongod stop sudo service mongod start
- Systemd (现代 Linux 系统):
- 验证配置:在重启前,可以使用
mongod的--configtest或--quiet参数来检查配置文件语法是否正确。mongod --config /etc/mongod.conf --configtest
如果输出
success,则配置语法正确。
性能调优关键点
- 内存 (
wiredTiger.cacheSizeGB):这是最重要的调优参数,将其设置为可用内存的 50% 左右,但要为操作系统和其他应用留出足够空间。 - 磁盘:使用 SSD 硬盘,MongoDB 的 I/O 密集型特性使得 SSD 能带来数量级的性能提升。
- 连接数 (
maxIncomingConnections):根据应用并发请求数和服务器资源(文件描述符限制ulimit -n)进行调整。 - 索引:确保为查询模式创建合适的索引,这是提升查询性能最有效的方法。
- 监控:使用
mongotop,mongostat等内置工具,以及 Prometheus + Grafana 等第三方监控方案,持续关注数据库状态。
希望这份详解能帮助你全面理解 MongoDB 的配置!
