Ubuntu MongoDB故障排查步骤
首先确认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
日志中可能包含启动失败、连接拒绝、权限问题等关键线索。
MongoDB主配置文件通常位于/etc/mongod.conf,需检查以下核心配置项:
net.bindIp:确保绑定IP正确(本地测试用127.0.0.1,远程访问用0.0.0.0);storage.dbPath:数据目录是否存在(默认/var/lib/mongodb);systemLog.path:日志路径是否可写;security.authorization:若启用身份验证,需确保用户权限正确。sudo systemctl restart mongod。MongoDB需要对数据目录有读写权限,数据目录通常为/var/lib/mongodb。执行以下命令修复权限:
sudo mkdir -p /var/lib/mongodb(若目录不存在则创建);
sudo chown -R mongodb:mongodb /var/lib/mongodb(将目录所有者设为mongodb用户);
sudo chmod -R 0755 /var/lib/mongodb(设置目录权限为可读可执行)。
若出现“连接被拒绝”或远程无法访问问题,需检查防火墙是否允许MongoDB默认端口(27017)的流量。使用以下命令开放端口:
sudo ufw allow 27017;
查看防火墙状态确认规则已添加:sudo ufw status。
MongoDB默认使用27017端口,若该端口被其他进程占用,会导致服务无法启动。使用以下命令检查端口占用情况:
sudo netstat -tulnp | grep 27017
若发现占用进程,可停止该进程(sudo kill -9 <PID>)或修改MongoDB配置文件中的net.port为其他端口(如27018),然后重启服务。
若数据目录损坏(如异常关机导致mongod.lock文件残留),需删除锁文件并修复数据:
sudo find / -name "mongod.lock" | xargs rm -rf(查找并删除所有mongod.lock文件);
以修复模式启动MongoDB:sudo mongod -f /etc/mongod.conf --repair;
修复完成后,正常启动服务:sudo systemctl start mongod。
确保系统有足够的内存和磁盘空间供MongoDB运行。使用以下命令查看资源使用情况:
free -h(查看内存使用,确保剩余内存充足);
df -h(查看磁盘空间,确保/var/lib/mongodb所在分区有足够空间,建议预留20%以上)。
若需远程访问MongoDB,需确保以下配置正确:
net.bindIp设置为0.0.0.0(允许所有IP连接);security.authorization: enabled)并创建远程访问用户。mongo --host <服务器IP> --port 27017 -u <用户名> -p <密码> --authenticationDatabase admin。