首先确认MongoDB服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status mongod
若服务未启动,可通过以下命令启动并设置开机自启:
sudo systemctl start mongod
sudo systemctl enable mongod
MongoDB的日志文件是故障排查的核心依据,默认路径为/var/log/mongodb/mongod.log。可使用以下命令实时查看日志:
sudo tail -f /var/log/mongodb/mongod.log
同时,通过journalctl查看系统日志中与MongoDB相关的错误信息:
sudo journalctl -xe | grep mongod
MongoDB的主配置文件为/etc/mongod.conf,需重点检查以下关键配置项:
dbPath:数据存储目录是否存在且具备读写权限;logPath:日志文件路径是否正确;net.port:监听端口(默认27017)是否被占用;security.authorization:身份验证配置是否符合需求(如启用后需用用户名密码登录)。MongoDB默认使用27017端口,若端口被占用,可通过以下命令查找占用进程并终止:
sudo lsof -iTCP -sTCP:LISTEN -n -P | grep 27017
sudo kill -9 <PID> # 替换为实际进程ID
df -h命令检查数据目录所在磁盘的剩余空间,确保充足(建议保留至少20%空间);top或htop命令查看系统资源使用情况,避免因资源耗尽导致MongoDB崩溃;/var/lib/mongo)和日志目录的所有者为mongod用户(默认):sudo chown -R mongod:mongod /var/lib/mongo
sudo chown -R mongod:mongod /var/log/mongodb
若系统启用了SELinux(sestatus显示Enforcing模式),可能会阻止MongoDB正常运行。可临时将其设置为permissive模式排查:
sudo setenforce 0
若问题解决,需调整SELinux规则或永久禁用(不推荐生产环境):
sudo vi /etc/selinux/config # 将SELINUX=enforcing改为disabled
若MongoDB因崩溃停止,可分析/var/crash目录下的内核转储文件(vmcore),使用crash工具定位崩溃原因:
sudo yum install crash # 安装crash工具
sudo crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/vmcore
旧版本MongoDB可能存在已知bug,建议升级到最新稳定版本(通过mongod --version查看当前版本),升级前需备份数据。
若以上步骤无法解决问题,可查阅MongoDB官方文档、社区论坛(如Stack Overflow),或联系MongoDB技术支持团队,提供详细的错误日志和系统信息以获取进一步帮助。