温馨提示×

CentOS上MongoDB故障排查步骤

小樊
34
2025-12-27 06:00:24
栏目: 云计算

CentOS上MongoDB故障排查步骤

一 快速定位与最小闭环

  • 检查服务状态与启动项:执行sudo systemctl status mongod,若未运行则sudo systemctl start mongodsudo systemctl enable mongod
  • 查看错误日志:实时跟踪**/var/log/mongodb/mongod.log**,并用journalctl -xe | grep mongod补充系统层日志。
  • 校验配置文件:核对**/etc/mongod.conf关键项(如net.port**、net.bindIpstorage.dbPathsystemLog.pathsecurity.authorization),注意YAML缩进与语法
  • 端口与进程:确认27017监听与占用,必要时释放端口或调整配置。
  • 资源与权限:用df -h检查磁盘、top/htop看CPU/内存;确保数据目录与日志目录属主为mongod:mongod
  • 远程连通:开放防火墙端口并用telnet/nc测试连通性。
  • 认证与连接串:若启用认证,核对用户名、密码与**–authenticationDatabase**;连接串建议使用authSource=admin

二 常见故障场景与处理

症状 快速检查 处理要点
服务起不来 status/journalctl、mongod.log 修复配置语法、端口冲突、目录权限;必要时按日志报错逐项修正
本地能连,远程连不上 bindIp、firewalld/iptables、云安全组 将bindIp设为0.0.0.0或指定网段;放行27017/tcp;核对云厂商安全组
认证失败 日志“auth failed”、用户权限 确认凭证与authSource;在admin创建用户并授予目标库权限
端口被占用 lsof/netstat 结束占用进程或修改net.port后重启
权限被拒 数据/日志目录属主 执行chown -R mongod:mongod
SELinux拦截 sestatus、setenforce 0测试 临时置permissive定位;为数据/日志目录设置正确类型或策略
磁盘空间不足 df -h 清理无用文件,确保数据盘有充足余量(建议保留≥20%
性能异常 mongostat/mongotop、慢查询 检查索引、查询写法、连接数、I/O;必要时优化参数与索引

三 关键命令清单

  • 服务与日志
    • 状态/启停:sudo systemctl status mongodsudo systemctl start|restart|enable mongod
    • 日志跟踪:sudo tail -f /var/log/mongodb/mongod.logsudo journalctl -xe | grep mongod
  • 配置与端口
    • 配置校验:核对**/etc/mongod.confdbPath、logPath、port、bindIp、security.authorization**
    • 端口占用:sudo lsof -iTCP -sTCP:LISTEN -n -P | grep 27017netstat -tulpen | grep 27017
  • 防火墙与网络
    • firewalld:sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent && sudo firewall-cmd --reload
    • 连通性:ping telnet 27017nc -vz 27017
  • 权限与SELinux
    • 目录属主:sudo chown -R mongod:mongod /var/lib/mongo /var/log/mongodb
    • SELinux:getenforce/setenforce,目录类型如chcon -Rv --type=mongod_var_lib_t /var/lib/mongo
  • 诊断与监控
    • 性能工具:mongostatmongotop
    • 实例状态:在shell执行db.serverStatus()
  • 版本与依赖
    • 版本:mongod --version;依赖:sudo yum install openssl-devel

四 安全与优化建议

  • 最小暴露面:生产环境将bindIp限制为内网网段或白名单IP,避免0.0.0.0;仅开放必要端口。
  • 认证与授权:启用security.authorization,按业务最小权限创建用户,连接串使用authSource=admin
  • 资源与健康:保持数据盘≥20%余量;用mongostat/mongotop与**db.serverStatus()**建立常态监控与告警。
  • 参数与索引:结合负载合理设置wiredTiger.cacheSizeGBnet.maxIncomingConnections;为高频查询建立合适索引并避免全表扫描。
  • 版本与备份:优先使用稳定版本,变更前做好全量备份与回滚预案。

五 无法解决时的有效求助信息

  • 提供以下关键信息可大幅提升定位效率:MongoDB版本(mongod --version)、操作系统与内核版本、完整的**/var/log/mongodb/mongod.log报错片段、相关配置片段(/etc/mongod.conf的net、storage、security)、firewalld/iptablesSELinux**状态、端口占用情况(lsof/netstat)、以及已尝试的步骤与结果。

0