使用systemctl命令确认MongoDB服务是否正在运行,若未运行则尝试启动:
sudo systemctl status mongod # 查看服务状态
sudo systemctl start mongod # 启动服务
sudo systemctl enable mongod # 设置开机自启
若服务启动失败,需结合日志进一步分析原因。
MongoDB的日志文件默认位于/var/log/mongodb/mongod.log,通过tail命令实时查看最新错误信息:
sudo tail -f /var/log/mongodb/mongod.log # 实时查看日志
sudo grep "ERROR" /var/log/mongodb/mongod.log # 筛选错误日志
日志是故障排查的核心依据,能直接定位具体错误(如配置错误、权限问题、端口冲突等)。
检查配置文件/etc/mongod.conf的关键配置项是否正确,重点关注:
storage.dbPath:数据存储目录是否存在(如/var/lib/mongodb);systemLog.path:日志文件路径是否可写;net.bindIp:绑定的IP地址(127.0.0.1仅本地访问,0.0.0.0允许远程访问);net.port:监听端口(默认27017)。sudo mongod --config /etc/mongod.conf --eval # 检查配置语法
sudo systemctl restart mongod # 重启服务
```。
#### **4. 检查数据目录与权限**
确保`storage.dbPath`指定的数据目录存在,且属于`mongodb`用户(MongoDB默认运行用户):
```bash
sudo mkdir -p /var/lib/mongodb # 创建数据目录(若不存在)
sudo chown -R mongodb:mongodb /var/lib/mongodb # 修改所有权
sudo chmod -R 755 /var/lib/mongodb # 设置权限(避免过宽)
权限问题会导致MongoDB无法读写数据,是常见故障原因之一。
netstat或ss命令确认27017端口是否被其他进程占用:sudo netstat -tulnp | grep 27017 # 查看端口占用
sudo ss -tulnp | grep 27017 # 更现代的替代命令
若端口被占用,需停止冲突进程或修改MongoDB的net.port配置。ufw防火墙,需允许MongoDB端口:sudo ufw allow 27017/tcp # 允许TCP端口27017
sudo ufw reload # 重载防火墙规则
```。
mongostat(监控操作频率)和mongotop(监控读写耗时)工具:mongostat # 实时显示操作统计
mongotop # 显示集合级读写耗时
explain()方法分析慢查询,优化索引:use your_database;
db.your_collection.find({field: "value"}).explain("executionStats");
索引问题是查询性能差的常见原因。使用top(CPU/内存使用)、df -h(磁盘空间)、du -sh /var/lib/mongodb(数据目录大小)等命令,确认系统资源充足:
bindIp)、mongo客户端命令(如mongo --host 127.0.0.1 --port 27017)。rs.status())、oplog日志(确认同步状态)。apt或官方二进制包)。以上步骤覆盖了Debian环境下MongoDB的常见故障场景,通过逐步排查可定位并解决问题。若仍无法解决,建议查阅MongoDB官方文档或社区论坛(如Stack Overflow)获取进一步帮助。