温馨提示×

如何调试Debian的MongoDB

小樊
50
2026-07-18 09:54:41
栏目: 云计算

调试 Debian 上的 MongoDB,通常可以从 服务状态、日志、配置、权限、资源、网络 等方面入手。下面按常见排查顺序给你一个实用指南。


一、确认 MongoDB 是否正常运行

1. 查看服务状态

sudo systemctl status mongod

常见状态说明:

  • active (running):正常
  • failed:启动失败(重点看日志)

重启服务:

sudo systemctl restart mongod

二、查看 MongoDB 日志(最关键)

1. 默认日志位置

sudo tail -n 100 /var/log/mongodb/mongod.log

如果是 systemd 启动:

journalctl -u mongod -n 100

2. 常见错误示例

  • 端口被占用
    addr already in use
    
  • 权限不足
    Permission denied
    
  • 数据目录损坏
    DBException: repair
    

三、检查配置文件

MongoDB 配置文件一般在:

/etc/mongod.conf

1. 检查关键配置

sudo nano /etc/mongod.conf

重点看:

storage:
  dbPath: /var/lib/mongodb

systemLog:
  path: /var/log/mongodb/mongod.log
  logAppend: true

net:
  port: 27017
  bindIp: 127.0.0.1

常见错误:

  • dbPath 不存在或无权限
  • bindIp 限制了访问
  • YAML 格式错误(缩进必须是空格)

四、检查目录权限(非常常见)

1. 数据目录权限

ls -ld /var/lib/mongodb
ls -ld /var/log/mongodb

正确权限示例:

drwxr-x--- mongod mongod

修复权限:

sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb

五、手动启动 MongoDB(调试模式)

如果 systemd 启动失败,可以手动运行:

sudo -u mongodb mongod --config /etc/mongod.conf

这样可以直接在终端看到错误信息。


六、检查端口和进程

1. 检查端口

ss -lntp | grep 27017

2. 检查进程

ps aux | grep mongod

七、连接测试

1. 本地连接

mongosh

或(老版本)

mongo

2. 远程连接测试

mongosh "mongodb://IP:27017"

如果连不上,检查:

  • bindIp
  • 防火墙
  • MongoDB 用户权限

八、防火墙与网络

1. 检查防火墙

sudo ufw status

开放端口(如需要):

sudo ufw allow 27017

⚠️ 不建议直接暴露 27017 到公网


九、常见故障速查表

问题 排查点
启动失败 /var/log/mongodb/mongod.log
权限错误 /var/lib/mongodb 权限
无法连接 bindIp、端口、防火墙
数据损坏 日志中 corrupt
内存不足 dmesg / journalctl

十、修复数据库(慎用)

⚠️ 先备份数据

mongod --repair --dbpath /var/lib/mongodb

十一、版本与 Debian 兼容性

查看版本:

mongod --version

确保:

  • MongoDB 版本
  • Debian 版本
  • 官方源是否匹配

如果你愿意,可以把下面信息贴出来,我可以帮你精准定位:

  • systemctl status mongod
  • /var/log/mongodb/mongod.log 的最后 50 行
  • Debian 版本(cat /etc/os-release
  • MongoDB 版本

我可以直接帮你分析日志。

0