在 Debian 上排查 MongoDB 故障,通常可以按「系统 → 服务 → 日志 → 配置 → 数据库本身」的顺序进行。下面是一套比较实用的排查思路和操作命令。
systemctl status mongod
或(老版本)
service mongod status
常见状态:
active (running):服务正常failed:启动失败inactive:未启动sudo systemctl start mongod
sudo systemctl enable mongod
如果启动失败,继续看日志。
/var/log/mongodb/mongod.log
查看日志:
sudo tail -n 100 /var/log/mongodb/mongod.log
常见错误关键词:
Permission denied → 权限问题Address already in use → 端口被占用Unable to lock file → 数据目录冲突IllegalOperation → 配置错误WiredTiger 报错 → 数据文件损坏sudo netstat -tunlp | grep 27017
# 或
ss -tunlp | grep 27017
ps aux | grep mongod
Debian 上通常位于:
/etc/mongod.conf
重点检查:
storage:
dbPath: /var/lib/mongodb
systemLog:
path: /var/log/mongodb/mongod.log
net:
bindIp: 127.0.0.1
port: 27017
修改配置后重启:
sudo systemctl restart mongod
ls -ld /var/lib/mongodb
ls -l /var/lib/mongodb
权限应属于 mongodb:
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb
df -h
df -i
free -h
MongoDB 对内存和磁盘空间较敏感。
mongo
# 或(新版本)
mongosh
mongo --host <IP> --port 27017
如果连不上:
bindIpsudo ufw status
| 故障现象 | 可能原因 |
|---|---|
| 启动失败 | 配置错误 / 权限问题 |
| 端口被占 | 已有 mongod 在运行 |
| 无法写入 | 磁盘满 / 权限不足 |
| 连接拒绝 | bindIp 限制 |
| 数据损坏 | 异常关机 / 磁盘错误 |
如果是 WiredTiger 数据损坏:
mongod --repair
(仅限单节点,且有备份时谨慎使用)
如果你能贴出:
systemctl status mongod 输出mongod.log 报错片段我可以帮你更精准地定位问题。