ubuntu

MongoDB在Ubuntu上的故障排查步骤有哪些

小樊
49
2025-08-31 23:49:35
栏目: 云计算

1. 确认故障现象
记录故障发生的频率、具体错误信息(如启动失败、连接被拒绝、查询超时)及触发条件(如重启服务、高并发场景),这是故障排查的基础方向。

2. 检查MongoDB服务状态
使用systemctlservice命令确认MongoDB服务是否正在运行:

sudo systemctl status mongod  # 推荐(Ubuntu 16.04+)
# 或
sudo service mongod status

若服务未运行,会显示“inactive (dead)”或“failed”状态,需进一步排查启动失败原因。

3. 查看MongoDB日志文件
日志是定位故障的关键,MongoDB默认日志路径为/var/log/mongodb/mongod.log。使用以下命令实时查看最新日志(重点关注“ERROR”“FAILED”等关键字):

sudo tail -n 100 /var/log/mongodb/mongod.log  # 查看最后100行
# 或实时跟踪日志
sudo tail -f /var/log/mongodb/mongod.log

日志中会明确提示错误类型(如配置错误、权限问题、数据损坏)。

4. 验证配置文件正确性
MongoDB主配置文件通常为/etc/mongod.conf,需检查以下关键配置项:

sudo systemctl restart mongod

可使用以下命令快速检查配置文件语法:

mongod --config /etc/mongod.conf --eval "print('配置文件语法正确')"

若输出“配置文件语法正确”,则说明配置文件无明显语法错误。

5. 检查数据目录与权限
MongoDB需要对其数据目录(dbPath)有读写权限。默认数据目录为/var/lib/mongodb,执行以下命令修复权限问题:

# 确认数据目录是否存在
ls -ld /var/lib/mongodb
# 修改所有者为MongoDB用户(通常为'mongodb')
sudo chown -R mongodb:mongodb /var/lib/mongodb
# 设置正确权限(755为目录通用权限)
sudo chmod -R 755 /var/lib/mongodb

若数据目录损坏(如磁盘故障),可使用mongod --repair命令修复(需提前备份数据):

sudo mongod --config /etc/mongod.conf --repair

6. 检查端口占用情况
MongoDB默认使用27017端口,若该端口被其他进程占用,会导致服务无法启动。使用以下命令检查端口占用:

sudo netstat -tulnp | grep 27017  # 传统方式
# 或
sudo lsof -i :27017               # 更直观

若发现占用进程(如PID=1234),可选择停止该进程(sudo kill -9 1234)或修改MongoDB配置文件中的port项(如改为27018)。

7. 分析系统资源状态
磁盘空间不足或内存耗尽会导致MongoDB无法正常运行。使用以下命令检查系统资源:

# 检查磁盘空间使用情况(重点关注根分区“/”)
df -h /
# 检查内存使用情况
free -m
# 检查磁盘I/O性能(需安装sysstat工具)
iostat -x 1 5

若磁盘空间不足(使用率>80%),需清理无用文件(如日志、临时文件);若内存不足,可优化MongoDB缓存设置(如调整storage.wiredTiger.engineConfig.cacheSizeGB)或增加物理内存。

8. 使用MongoDB内置工具诊断

9. 常见问题针对性解决

0
看了该问题的人还看了