首页主机资讯Ubuntu MongoDB如何进行故障排除

Ubuntu MongoDB如何进行故障排除

时间2025-12-19 03:05:05发布访客分类主机资讯浏览850
导读:Ubuntu 上 MongoDB 故障排除实战手册 一 快速定位流程 确认服务状态与端口:使用命令查看服务是否运行与端口监听情况。 服务状态:sudo systemctl status mongod 端口监听:sudo ss -lntp...

Ubuntu 上 MongoDB 故障排除实战手册

一 快速定位流程

  • 确认服务状态与端口:使用命令查看服务是否运行与端口监听情况。
    • 服务状态:sudo systemctl status mongod
    • 端口监听:sudo ss -lntp | grep 27017sudo lsof -iUDP:27017 -iTCP:27017 -sTCP:LISTEN
  • 查看日志:MongoDB 默认日志路径为 /var/log/mongodb/mongod.log,优先从日志入手定位 F/E 级错误与时间线。
    • 实时查看:sudo tail -f /var/log/mongodb/mongod.log
  • 直连本机实例:使用 mongosh(若未安装需单独安装)验证本地连通性与认证。
    • 连接:mongosh --host 127.0.0.1:27017
  • 网络连通性:从客户端测试端口连通性(如 nc -vz < host> 27017telnet < host> 27017),并确认云安全组/本机防火墙已放行 27017
  • 配置核对:检查 /etc/mongod.conf 的关键项(如 net.bindIpnet.portstorage.dbPathsystemLog.path)与文件权限。

二 常见故障与修复

  • 服务无法启动
    • 查看日志定位根因(配置错误、权限不足、数据目录异常等)。
    • 配置文件语法:MongoDB 使用 YAML,注意冒号后必须有空格、层级缩进一致,常见报错为 “Error parsing YAML config file”。修正后 sudo systemctl restart mongod
    • 数据目录权限:确保 /var/lib/mongodb 归属 mongodb 用户(如 sudo chown -R mongodb:mongodb /var/lib/mongodb),再启动服务。
    • 异常关闭导致锁文件残留:日志提示 “old lock file … recommend removing file and running --repair”。处理步骤:
      • 停止服务:sudo systemctl stop mongod
      • 备份并移除锁文件:sudo rm /var/lib/mongodb/mongod.lock
      • mongodb 用户执行修复:sudo -u mongodb mongod -f /etc/mongod.conf --repair
      • 重新启动:sudo systemctl start mongod
      • 如仍失败,检查磁盘空间与 dbPath 所在分区是否可写。
  • 端口未监听或被占用
    • 检查占用:sudo lsof -i :27017sudo ss -lntp | grep 27017,结束冲突进程或修改 mongod.confport
    • 监听地址:若需远程访问,将 net.bindIp 设为 0.0.0.0(或指定内网网段),并确保防火墙放行(如 sudo ufw allow 27017)。
  • 连接被拒绝或认证失败
    • 本机拒绝:服务未启动或仅监听 127.0.0.1。修正 bindIp 并重启;用 mongosh 本地直连验证。
    • 远程被拒:核对云安全组/防火墙、网络 ACL、以及 bindIp 与端口。
    • 认证失败:确认用户名、密码、认证库(常见为 admin),必要时在连接串中显式指定 --authenticationDatabase
  • 非法指令或段错误 signal=ILL
    • 多与版本/架构不兼容或硬件指令集相关。处理思路:核对 Ubuntu 版本CPU 架构支持矩阵,尝试安装兼容版本或官方支持渠道的构建;必要时更换版本并重新安装。

三 日志分析与性能瓶颈定位

  • 日志结构与级别:关注时间戳、F/E/W/I 级别、组件标识(如 NETWORK、STORAGE、REPL、COMMAND),优先处理 F 级错误。
  • 快速过滤与统计
    • 过去 1 小时错误:grep -E 'E|F' /var/log/mongodb/mongod.log | awk '$1 > "2025-12-18T11"'
    • 按小时统计错误量:cat /var/log/mongodb/mongod.log | grep -oP '\d{ 4} -\d{ 2} -\d{ 2} T\d{ 2} ' | sort | uniq -c
  • 慢查询与执行计划
    • 启用慢查询日志:在 mongod.confsetParameter 中设置 slowMS: 100,重启或在运行时 db.setLogLevel(1, "command")
    • 识别全表扫描:日志中出现 COLLSCANkeysExamined:0docsExamined 很大时,创建合适索引(如 db.users.createIndex({ age: 1} ))。
  • 复制集异常
    • 关注 E REPL [replication] heartbeat failed 等,先测试网络连通性,再用 rs.status() 检查成员状态与 oplog 窗口,必要时安排重新同步。
  • 存储引擎异常
    • 出现 WiredTiger errorF STORAGE 错误时,先 db.serverStatus().storageEngine 查看引擎状态,再按指导执行修复流程(如 --repair)。
  • 可视化与工具链
    • 使用 mtools(如 mlogfiltermplotqueriesmloginfo)做时间过滤、慢查询可视化与统计;将日志接入 ELK/Grafana 做长期观测。

四 维护与预防建议

  • 文件句柄与资源限制
    • 若出现 “Too many open files”,提升进程文件句柄上限:在 /etc/security/limits.conf 增加
      • mongod soft nofile 64000
      • mongod hard nofile 64000
    • 修改后重新登录会话或重启服务生效。
  • 日志轮转与保留
    • 配置 logrotate/var/log/mongodb/mongod.log 做按日轮转与压缩,避免单文件过大影响分析效率。
  • 监控与巡检
    • 例行使用 mongostatmongotop 观察吞吐、延迟与锁情况;结合 db.serverStatus()db.currentOp() 做深入诊断。
  • 安全与网络
    • 仅开放必要来源 IP 的 27017,启用 身份验证 与最小权限;远程访问建议使用 TLS/SSL

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


若转载请注明出处: Ubuntu MongoDB如何进行故障排除
本文地址: https://pptw.com/jishu/775853.html
HBase压缩技术在Ubuntu上如何应用 HBase安全设置Ubuntu上怎么操作

游客 回复需填写必要信息