首先确认MongoDB服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status mongod
若服务未运行(显示“inactive”或“failed”),尝试启动服务:
sudo systemctl start mongod
启动失败时,需进一步查看日志定位原因。
日志是故障排查的核心依据,Debian下MongoDB默认日志路径为/var/log/mongodb/mongod.log
。使用以下命令实时查看最新日志:
sudo tail -f /var/log/mongodb/mongod.log
若日志路径被修改,可通过配置文件/etc/mongod.conf
中的systemLog.path
确认。
MongoDB的主配置文件为/etc/mongod.conf
,需检查以下关键配置项的正确性:
storage.dbPath
:数据存储目录是否存在(如/var/lib/mongodb
);systemLog.path
:日志文件路径是否有写入权限;net.bindIp
:绑定的IP地址(如127.0.0.1
或0.0.0.0
,需根据访问需求调整);net.port
:端口(默认27017
)是否未被其他进程占用。mongod --config /etc/mongod.conf --eval
若配置有误,修正后需重启服务:
sudo systemctl restart mongod
```。
#### **4. 检查数据目录与权限**
MongoDB需要对其数据目录(`storage.dbPath`指定的路径)有读写权限。默认路径为`/var/lib/mongodb`,执行以下命令修复权限:
```bash
sudo mkdir -p /var/lib/mongodb # 若目录不存在则创建
sudo chown -R mongodb:mongodb /var/lib/mongodb # 修改所有者为mongodb用户
sudo chmod -R 755 /var/lib/mongodb # 设置适当权限
权限问题常导致服务无法启动或数据无法写入。
MongoDB默认使用27017
端口,若该端口被其他进程占用,会导致服务无法启动。使用以下命令检查端口占用:
sudo netstat -tulnp | grep 27017
若发现占用进程,可选择停止该进程(sudo kill -9 <PID>
)或修改MongoDB配置文件中的net.port
为其他端口(如27018
)。
MongoDB运行需要足够的系统资源,使用以下命令检查资源使用情况:
free -h
(查看可用内存,若内存不足可能导致服务崩溃);df -h
(查看数据目录所在分区剩余空间,若空间不足需清理);top
(查看CPU占用率,过高可能导致查询缓慢)。mongo
db.adminCommand({ serverStatus: 1 }) # 查看服务器整体状态(连接数、内存使用等)
db.currentOp() # 查看当前正在执行的操作(排查长时间运行的查询)
operationProfiling.slowOpThresholdMs
),使用db.currentOp()
定位慢查询,优化索引。bindIp
配置(是否允许远程访问)、防火墙规则(sudo ufw allow 27017
)、网络连通性(ping <IP>
);mongostat
监控性能指标(如读写延迟、QPS),优化查询语句(添加索引)、调整内存分配。若以上步骤无法解决问题,尝试更新MongoDB到最新稳定版本(参考官方升级指南),或查阅MongoDB官方文档、社区论坛(如Stack Overflow)获取帮助。提供详细的错误日志和系统环境信息,有助于快速定位问题。