首页主机资讯mongodb在centos上的故障排查指南

mongodb在centos上的故障排查指南

时间2025-12-04 02:28:03发布访客分类主机资讯浏览332
导读:MongoDB 在 CentOS 上的故障排查指南 一 快速定位流程 检查服务状态与端口 查看服务:sudo systemctl status mongod 启动服务:sudo systemctl start mongod 监听端口:s...

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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: mongodb在centos上的故障排查指南
本文地址: https://pptw.com/jishu/763082.html
CentOS Redis配置新手指南 centos中mongodb日志轮转如何配置

游客 回复需填写必要信息