MongoDB Linux 配置文件解析
一 配置文件位置与格式
- 常见路径:使用系统包管理器安装时,默认配置文件通常为 /etc/mongod.conf;源码或自定义安装可能在 /usr/local/etc/mongod.conf;也可通过命令行参数 –config/-f 指定任意路径。若不确定位置,可用命令查找:sudo find / -name “mongod.conf” 2>/dev/null。配置文件采用 YAML 格式,层级清晰,注意仅使用空格缩进(不要使用 Tab)。启动示例:mongod --config /etc/mongod.conf 或 mongod -f /etc/mongod.conf。
二 核心配置模块速览
- systemLog:日志输出目的地(destination: file|syslog)、日志文件路径(path)、是否追加(logAppend)、轮转策略(logRotate: rename|reopen)、时间戳格式(timeStampFormat: ctime|iso8601-utc|iso8601-local)、组件级详细级别(component)。
- processManagement:是否后台运行(fork: true)、进程 PID 文件路径(pidFilePath)。
- net:监听端口(port: 27017)、绑定地址(bindIp,可多值逗号分隔,或 bindIpAll: true)、最大并发连接数(maxIncomingConnections,默认 65536)、是否启用 IPv6、UNIX 域套接字等。
- storage:数据目录(dbPath)、是否启用 journal(建议开启)、WiredTiger 缓存(wiredTiger.engineConfig.cacheSizeGB)、压缩与索引配置等。
- replication:副本集名称(replSetName)等。
- sharding:分片相关参数。
- security:认证与集群认证(如 authorization: enabled、keyFile、clusterAuthMode 等)。
- setParameter:运行时参数(如 enableLocalhostAuthBypass: false)。
三 最小可用配置示例
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
logRotate: reopen
timeStampFormat: iso8601-local
storage:
dbPath: "/var/lib/mongodb"
journal:
enabled: true
engine: "wiredTiger"
wiredTiger:
engineConfig:
cacheSizeGB: 2
processManagement:
fork: true
pidFilePath: "/var/run/mongodb/mongod.pid"
net:
port: 27017
bindIp: 127.0.0.1,192.168.10.140
maxIncomingConnections: 65536
ipv6: false
security:
authorization: enabled
- 说明:上述示例启用文件日志轮转(reopen 需配合 logAppend: true)、开启 journal、使用 WiredTiger 并限制其缓存为 2GB(示例值,可按服务器内存与业务调优),仅本地与内网网段可访问,并开启用户认证。生产环境请结合资源与合规要求细化参数。
四 修改与生效及常见问题
- 修改与生效:先备份原配置(如 sudo cp /etc/mongod.conf /etc/mongod.conf.bak),编辑后通过系统服务重启:sudo systemctl restart mongod(或 sudo service mongod restart),并检查状态:sudo systemctl status mongod。若以 fork: true 运行,可通过 cat /var/run/mongodb/mongod.pid 查看进程号。
- 常见问题与排查:
- 找不到配置文件:使用 find 定位;若确实缺失,可新建符合需求的 mongod.conf 并通过 –config 启动。
- 服务无法启动:优先查看日志 /var/log/mongodb/mongod.log 中的报错行,常见原因包括目录权限不足、YAML 缩进错误、端口被占用、参数不兼容等。
- 绑定地址与安全:仅在内网环境开放 bindIp,公网务必配合 TLS/SSL 与 防火墙;开启 authorization 前确保已创建管理员账户,避免被锁。