首页主机资讯centos上mongodb故障如何排查

centos上mongodb故障如何排查

时间2025-12-06 01:05:04发布访客分类主机资讯浏览581
导读:CentOS 上 MongoDB 故障排查手册 一 快速定位流程 检查服务状态与端口 查看是否运行:sudo systemctl status mongod 启动/重启:sudo systemctl start|restart mong...

CentOS 上 MongoDB 故障排查手册

一 快速定位流程

  • 检查服务状态与端口
    • 查看是否运行:sudo systemctl status mongod
    • 启动/重启:sudo systemctl start|restart mongod
    • 查看端口监听:ss -lntp | grep 27017netstat -tulpen | grep 27017
  • 查看日志定位错误
    • 实时查看:sudo tail -f /var/log/mongodb/mongod.log
    • 若服务未起来,直接前台启动以获取输出:sudo mongod -f /etc/mongod.conf
  • 校验配置文件关键项
    • 配置文件:/etc/mongod.conf
    • 重点核对:net.bindIpnet.portstorage.dbPathsystemLog.path
  • 检查目录权限
    • 数据目录:sudo chown -R mongod:mongod /var/lib/mongo
    • 日志目录:sudo chown -R mongod:mongod /var/log/mongodb
  • 远程连接与防火墙
    • 云厂商安全组/本机防火墙放行 27017
    • 需要远程访问时将 bindIp 设为 0.0.0.0(或按需加入内网网段)

二 常见故障与修复

  • 端口被占用
    • 现象:启动失败,日志或 systemctl status 提示 Address already in use
    • 处理:ss -lntp | grep 27017 找到 PID,sudo kill -9 < PID> 后重启;或调整 net.port
  • 套接字文件无法删除
    • 现象:日志出现 Failed to unlink socket file /tmp/mongodb-27017.sock
    • 处理:sudo rm -f /tmp/mongodb-27017.sock,再 sudo systemctl restart mongod
  • 数据目录或日志目录权限错误
    • 现象:启动失败,提示无法写入 /var/lib/mongo/var/log/mongodb
    • 处理:sudo chown -R mongod:mongod /var/lib/mongo /var/log/mongodb
  • 配置错误导致无法启动
    • 现象:systemctl status 或前台 mongod 输出语法/路径错误
    • 处理:核对 /etc/mongod.confdbPathlogpathbindIp 等;必要时用 mongod -f /etc/mongod.conf 前台验证
  • 无法远程连接
    • 现象:本机可连,远程超时
    • 处理:将 bindIp: 0.0.0.0,放行防火墙/安全组 27017,并确认客户端使用正确主机与端口

三 日志与性能分析

  • 日志查看与分析
    • 实时跟踪:tail -f /var/log/mongodb/mongod.log
    • 组件与内容:db.getLogComponents()db.adminCommand({ getLog: 1 } )
    • 工具链:mtoolsmlogfiltermloginfomplotqueries)做慢查询与统计可视化
  • 运行状态与性能
    • 实时监控:mongostatmongotop
    • 深入诊断:db.serverStatus()(连接、锁、内存、页面错误等)
  • 日志轮转与保留
    • 建议通过 logrotate 管理,示例 /etc/logrotate.d/mongodb
      /var/log/mongodb/mongod.log {
          
        daily
        rotate 7
        compress
        missingok
        notifempty
        sharedscripts
        copytruncate
        dateext
        size 200M
        postrotate
          /bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid 2>
          /dev/null || cat /var/log/mongodb/mongod.lock 2>
          /dev/null) 2>
      /dev/null || true
        endscript
      }
          
      
    • 注意:PID 文件路径在不同安装方式下可能为 /var/run/mongodb/mongod.pid/var/log/mongodb/mongod.lock,请按实际环境调整

四 应急与恢复

  • 异常关机或异常退出后的修复
    • 前台校验:sudo mongod -f /etc/mongod.conf
    • 必要时修复:sudo /usr/bin/mongod --config /etc/mongod.conf --repair
    • 修复完成后再启动:sudo systemctl start mongod
  • 避免数据损坏的关闭方式
    • 优先使用:mongod --shutdown --dbpath /var/lib/mongo
    • 避免直接用 kill -9 终止进程

五 一键排查命令清单

# 1) 服务与端口
sudo systemctl status mongod
sudo systemctl restart mongod
ss -lntp | grep 27017

# 2) 日志与前台启动
sudo tail -f /var/log/mongodb/mongod.log
sudo mongod -f /etc/mongod.conf

# 3) 配置与权限
grep -E '^(net\.|storage\.|systemLog\.)' /etc/mongod.conf
ls -ld /var/lib/mongo /var/log/mongodb
sudo chown -R mongod:mongod /var/lib/mongo /var/log/mongodb

# 4) 远程连通性
ping <
    服务器IP>
    
nc -vz <
    服务器IP>
 27017
# 云上需同时放行安全组与系统防火墙的 27017

# 5) 运行与性能
mongostat
mongotop
db.serverStatus()

# 6) 日志分析
db.getLogComponents()
db.adminCommand({
 getLog: 1 }
    )
# 可结合 mtools:mlogfilter、mloginfo、mplotqueries

以上命令覆盖了服务状态、端口连通、配置核对、权限修复、日志定位与性能诊断的关键环节,可据此快速缩小问题范围并恢复服务。

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


若转载请注明出处: centos上mongodb故障如何排查
本文地址: https://pptw.com/jishu/765366.html
centos上mongodb性能瓶颈在哪 centos dhclient如何备份数据

游客 回复需填写必要信息