CentOS 上 MongoDB 配置的常见问题与排查要点
一 兼容性与版本选择
- 在 CentOS 7 上,很多环境选择 MongoDB 4.4/6.0/7.0 较为稳妥;若使用 MongoDB 5.0+,需要 CPU 支持 AVX 指令集,否则可能出现启动时报 Illegal instruction 或直接崩溃,此时可降级到 4.4 等兼容版本。安装前务必确认 CPU 特性与版本匹配。
- 通过 YUM 官方仓库安装时,注意选择与系统版本匹配的仓库文件与路径(如 baseurl 中的 $releasever 或具体版本号),避免仓库指向错误或组件不匹配。
二 服务与配置文件
- 配置文件默认路径为 /etc/mongod.conf,核心项包括:storage.dbPath、systemLog.path、net.port、net.bindIp、processManagement.fork、security.authorization。修改后需重启服务生效。
- 远程访问需将 bindIp 从 127.0.0.1 改为 0.0.0.0,并确保防火墙放行 27017/tcp(firewalld/云安全组)。
- 常见故障排查命令:查看服务状态 systemctl status mongod;查看日志 journalctl -xe | grep mongod 或直接查看 /var/log/mongodb/mongod.log;前台调试可用 mongod -f /etc/mongod.conf;必要时用 mongod --config /etc/mongod.conf --version 校验配置。
三 权限与认证
- 默认安装后未启用 身份验证(security.authorization),存在未授权访问风险;建议创建管理员后在配置中开启 authorization: enabled 并重启。
- 创建管理员示例(在 mongo shell 中):use admin; db.createUser({user:“admin”,pwd:“StrongPass!”,roles:[“root”]});
- 生产环境避免使用 root 直接运行业务,遵循最小权限原则;远程连接时确保用户名、密码、认证数据库与目标 bindIp/防火墙 一致。
四 资源限制与内核参数
- 文件描述符限制过低会触发 Soft rlimits too low 警告,建议在 /etc/security/limits.conf 设置:* soft nofile 65536、* hard nofile 65536,并重新登录验证 ulimit -n。
- Transparent Huge Pages(THP) 未关闭会导致性能抖动与警告,建议通过 tuned 持久化禁用:创建 /etc/tuned/virtual-guest-no-thp/tuned.conf,内容包含 [main] include=virtual-guest 与 [vm] transparent_hugepages=never,执行 tuned-adm profile virtual-guest-no-thp。
- 运行 mongod 建议使用非 root 用户,避免因权限与审计策略引发问题。
五 数据与目录权限及网络连通
- 数据目录(默认 /var/lib/mongo)与日志目录(默认 /var/log/mongodb)需存在且属 mongod 运行用户;若自定义路径,需同步修改 dbPath/logPath 并修正目录权限,否则会出现启动失败或无法写入日志。
- 端口与网络:确认 net.port=27017 未被占用;远程访问需将 bindIp=0.0.0.0 并放行 firewall-cmd --add-port=27017/tcp --permanent && firewall-cmd --reload;云服务器还需在控制台安全组放行。
- 服务管理:优先使用 systemctl start/stop/restart mongod;不建议用 kill 直接终止,必要时在 mongo shell 中 use admin; db.shutdownServer() 安全关闭。