MongoDB在Linux系统中的故障排查需围绕服务状态、配置正确性、资源可用性、日志分析四大核心方向展开,以下是具体步骤:
首先确认MongoDB服务是否处于运行状态,使用以下命令查看服务状态:
sudo systemctl status mongod
若服务未启动,可通过以下命令启动并设置开机自启:
sudo systemctl start mongod # 启动服务
sudo systemctl enable mongod # 设置开机自启
若启动失败,需结合日志进一步分析原因。
MongoDB日志是故障排查的关键线索,默认路径为/var/log/mongodb/mongod.log(可通过cat /etc/mongod.conf | grep logpath确认)。使用以下命令查看日志:
# 查看完整日志
cat /var/log/mongodb/mongod.log
# 实时追踪最新日志(推荐)
tail -f /var/log/mongodb/mongod.log
# 筛选错误信息(快速定位关键问题)
grep -i "error\|fail\|warn" /var/log/mongodb/mongod.log
重点关注日志中的ERROR、WARN或failed关键词,如“Permission denied”“Address already in use”“Corrupted data files”等。
MongoDB的配置文件默认位于/etc/mongod.conf,需检查以下关键参数是否配置正确:
bindIp: 127.0.0.1仅本地访问,若需远程访问需添加IP地址);/var/lib/mongo)是否存在且可写;sudo mongod --config /etc/mongod.conf --configtest
若语法有误,需修改配置文件后重启服务。
MongoDB默认使用27017端口,若端口被占用,服务无法启动。使用以下命令检查端口占用:
# Linux系统
sudo netstat -tulnp | grep 27017
# 或使用ss命令(更高效)
sudo ss -tulnp | grep 27017
若端口被占用,可通过kill -9 <PID>终止占用进程(需确认进程合法性),或修改MongoDB配置文件中的port参数。
MongoDB数据目录(由dbPath指定)需具备正确的权限(通常为mongod用户)和足够的磁盘空间:
ls -ld /var/lib/mongo # 查看数据目录权限
sudo chown -R mongod:mongod /var/lib/mongo # 修改为mongod用户(若权限错误)
df -h # 查看磁盘使用情况
du -sh /var/lib/mongo # 查看数据目录大小
若磁盘空间不足(通常需预留20%以上空间),需清理无用文件或扩容磁盘。
MongoDB提供了多个内置工具用于性能监控和状态检查:
db.serverStatus(),可获取锁、内存、连接数、复制集等详细信息;mongostat(每秒刷新操作次数、响应时间等)和mongotop(按集合统计读写时间);mongod --repair命令修复(需停止服务):sudo systemctl stop mongod
sudo mongod --dbpath /var/lib/mongo --repair
sudo systemctl start mongod
这些工具能快速定位性能瓶颈或数据一致性问题。
若系统启用了SELinux或防火墙,可能会阻止MongoDB的正常运行:
sestatus),若处于Enforcing模式,可临时设置为Permissive模式排查(sudo setenforce 0),或通过audit2allow工具生成自定义规则;firewalld:sudo firewall-cmd --zone=public --add-port=27017/tcp --permanent
sudo firewall-cmd --reload
确保外部客户端能访问MongoDB服务。
若MongoDB服务异常崩溃,系统会生成崩溃转储文件(通常位于/var/crash或/var/lib/systemd/coredump),可使用crash工具分析内核转储文件,定位崩溃原因:
sudo yum install crash # 安装crash工具(CentOS)
sudo crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/vmcore
需具备一定的内核调试经验,或联系MongoDB技术支持协助分析。
通过以上步骤,可覆盖Linux系统下MongoDB的常见故障场景。若问题仍未解决,建议查阅MongoDB官方文档或社区论坛,提供日志片段和配置信息以获取针对性帮助。