首先确认MongoDB服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status mongod
若服务未启动,可通过以下命令启动并设置开机自启:
sudo systemctl start mongod
sudo systemctl enable mongod
这一步能快速判断服务是否因异常停止。
日志是故障排查的核心依据,需检查以下日志文件:
journalctl过滤MongoDB相关错误信息:sudo journalctl -xe | grep mongod
/var/log/mongodb/mongod.log,使用以下命令实时查看最新日志:sudo tail -f /var/log/mongodb/mongod.log
日志中通常会明确提示启动失败、连接拒绝、磁盘空间不足等具体错误。MongoDB的主配置文件为/etc/mongod.conf,需重点检查以下关键配置项:
bindIp:确认MongoDB监听的IP地址(如127.0.0.1表示仅本地访问,0.0.0.0表示允许远程访问);port:默认端口为27017,确保未被其他进程占用;dbPath:数据存储路径(如/var/lib/mongo),需存在且具备正确权限;logPath:日志文件路径(如/var/log/mongodb/mongod.log),需确保可写。MongoDB默认使用27017端口,若该端口被占用,会导致服务无法启动。使用以下命令检查端口占用情况:
sudo lsof -iTCP -sTCP:LISTEN -n -P | grep 27017
若发现占用进程,可通过kill -9 <PID>终止该进程(需谨慎操作,确认进程无重要用途)。
df -h命令查看磁盘剩余空间,确保dbPath所在分区有足够空间(建议至少保留20%空闲空间);/var/lib/mongo)和日志目录(如/var/log/mongodb)的所有者为mongod用户(默认用户),可使用以下命令修复权限:sudo chown -R mongod:mongod /var/lib/mongo
sudo chown -R mongod:mongod /var/log/mongodb
权限不足会导致MongoDB无法读写数据或日志。若系统启用了SELinux(sestatus显示Enforcing模式),可能会阻止MongoDB访问数据目录或端口。可临时将SELinux设置为permissive模式排查问题:
sudo setenforce 0
若问题解决,需调整SELinux策略或永久禁用SELinux(需谨慎,可能影响系统安全)。对于数据目录权限问题,还可使用以下命令修改安全上下文:
sudo chcon -Rv --type mongod_var_lib_t /var/lib/mongo
MongoDB自带多种诊断工具,可实时监控实例状态:
mongostat
mongotop
mongo
> db.serverStatus()
这些工具能帮助定位性能瓶颈或资源不足问题。若MongoDB因崩溃停止,系统会生成内核转储文件(通常位于/var/crash目录)。可使用crash工具分析转储文件,定位崩溃原因:
sudo yum install crash # 安装crash工具
sudo crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/<vmcore文件名>
分析转储文件需一定经验,重点关注崩溃时的堆栈信息。
libssl、libcrypto等库,可通过以下命令安装:sudo yum install openssl-devel
mongod --version查看当前版本)。sudo yum remove mongod
sudo yum install mongod
通过以上步骤可系统排查MongoDB在CentOS上的常见故障。若问题仍未解决,建议查阅MongoDB官方文档或社区论坛,提供具体错误信息以获取进一步帮助。