mongodb在centos上的故障排查指南

MongoDB 在 CentOS 上的故障排查指南一 快速定位流程检查服务状态与端口查看服务:sudo systemctl status mongod启动服务:sudo systemctl start mongod监听端口:ss -lntp | grep 27017 或 netstat -tulpen | grep 27017查看日志定位错误实时日志:sudo tail -f /var/lo

MongoDB 在 CentOS 上的故障排查指南

一 快速定位流程

  • 检查服务状态与端口
    • 查看服务:sudo systemctl status mongod
    • 启动服务:sudo systemctl start mongod
    • 监听端口:ss -lntp | grep 27017netstat -tulpen | grep 27017
  • 查看日志定位错误
    • 实时日志:sudo tail -f /var/log/mongodb/mongod.log
  • 校验配置文件关键项
    • 配置文件:/etc/mongod.conf
    • 重点项:net.bindIpnet.portstorage.dbPathsystemLog.path
  • 快速连通性测试
    • 本机:mongo –eval ‘db.runCommand({ping:1})’
    • 远程:nc -vz <服务器IP> 27017telnet <服务器IP> 27017
  • 认证与权限
    • 带认证连接:mongo -u <用户名> -p <密码> –authenticationDatabase <数据库>

二 常见故障与修复

  • 服务起不来
    • 查看日志中具体报错(如路径、权限、配置语法)。
    • 校验数据目录与日志目录权限:
      • sudo chown -R mongod:mongod /var/lib/mongo
      • sudo chown -R mongod:mongod /var/log/mongodb
    • 配置或数据异常时,使用修复模式(会重建索引,谨慎操作):
      • /usr/bin/mongod -f /etc/mongod.conf –repair
  • 无法远程连接
    • 配置文件中将 net.bindIp 设为 0.0.0.0(或包含服务器内网/公网 IP),端口 27017
    • 防火墙放行:
      • firewalld:sudo firewall-cmd –add-port=27017/tcp –permanent && sudo firewall-cmd –reload
      • 云厂商安全组:入站/出站放行 TCP 27017
  • 开机不自启
    • 启用开机自启:sudo systemctl enable mongod
    • 若曾手动改动 unit 文件,升级后需重新校对或执行 sudo systemctl daemon-reload
  • PID 文件路径问题
    • 老版本在 /var/run/mongodb/mongod.pid 可能因重启丢失,建议:
      • /etc/mongod.conf 中设置:pidFilePath: /mongod/mongod.pid
      • 创建目录与文件并赋权:sudo mkdir -p /mongod && sudo touch /mongod/mongod.pid && sudo chown mongod:mongod /mongod
      • 同步修改 unit 的 PIDFile= 后执行 sudo systemctl daemon-reload
  • SELinux 导致启动失败
    • 临时:sudo setenforce 0
    • 永久:编辑 /etc/selinux/configSELINUX=permissive(或 disabled),重启生效。

三 性能卡顿与资源瓶颈

  • 先看资源与日志
    • 资源:top/htopiostat -x 1free -m
    • MongoDB:mongostatdb.serverStatus()db.stats()、慢查询日志
  • 常见原因与处理
    • 内存不足或缓存命中低:为 WiredTiger 设置合理缓存(如 storage.wiredTiger.engineConfig.cacheSizeGB),优先使用 SSD
    • 连接数/文件句柄不足:提升系统 ulimit -n,MongoDB 连接开销与索引设计相关,避免过多索引。
    • 查询未走索引:用 explain() 分析执行计划,建立合适索引,避免全表扫描。
    • 透明大页(THP):建议关闭以减少内存管理抖动。
    • 锁争用/卡死:结合日志与 serverStatus 的 globalLocklocks 指标,必要时重启服务并优化长事务与热点集合。

四 安全与网络加固

  • 最小暴露面
    • 仅开放必要端口(默认 27017/TCP),限制来源 IP。
    • 使用强认证与基于角色的访问控制(RBAC),为应用创建最小权限用户。
  • 网络安全
    • 云环境同时配置安全组与操作系统防火墙,变更后及时验证连通性。
  • 系统层安全
    • 保持 SELinuxenforcing 并配置正确的策略,或明确使用 permissive 并记录审计。
    • 禁用不必要的服务与端口,定期更新 MongoDB 与系统补丁。

五 常用命令清单

  • 服务与端口
    • sudo systemctl status|start|enable mongod
    • ss -lntp | grep 27017
  • 日志与配置
    • sudo tail -f /var/log/mongodb/mongod.log
    • cat /etc/mongod.conf
  • 连通性与认证
    • nc -vz 27017
    • mongo –eval ‘db.runCommand({ping:1})’
    • mongo -u -p –authenticationDatabase
  • 性能与健康
    • mongostat
    • db.serverStatus()db.stats()
  • 权限与目录
    • sudo chown -R mongod:mongod /var/lib/mongo /var/log/mongodb
    • sudo firewall-cmd –add-port=27017/tcp –permanent && sudo firewall-cmd –reload

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1464668.html

(0)
派派
上一篇 2025-12-03
下一篇 2025-12-03

发表回复

登录后才能评论