使用systemctl命令确认MongoDB服务是否正在运行,若未运行则尝试启动并设置开机自启:
sudo systemctl status mongod # 查看服务状态
sudo systemctl start mongod # 启动服务
sudo systemctl enable mongod # 设置开机自启
若启动失败,需结合日志进一步分析原因。
MongoDB的默认日志路径为/var/log/mongodb/mongod.log,系统日志可通过journalctl查看。使用以下命令实时追踪日志或筛选错误信息:
tail -f /var/log/mongodb/mongod.log # 实时查看MongoDB日志
sudo journalctl -xe | grep mongod # 筛选系统日志中的MongoDB错误
日志中的关键信息(如“ERROR”“Failed”)能直接指向故障原因(如配置错误、权限问题、磁盘空间不足)。
MongoDB的主配置文件通常位于/etc/mongod.conf,需检查以下核心参数是否正确:
dbPath:数据存储路径(需存在且具备读写权限);logPath:日志文件路径(需可写入);port:监听端口(默认27017,需未被占用);bindIp:绑定的IP地址(如127.0.0.1仅本地访问,0.0.0.0允许远程访问)。mongod --config /etc/mongod.conf --configtest # 检查配置文件语法
netstat或ss命令确认27017端口是否被MongoDB进程占用,若有其他进程占用需终止:sudo netstat -tulnp | grep 27017 # 查看端口占用情况
sudo kill -9 <占用进程PID> # 终止占用进程(谨慎操作)
ps命令检查MongoDB进程是否运行:ps aux | grep mongod # 查看MongoDB进程
MongoDB数据目录(dbPath)需由mongod用户拥有读写权限,否则会导致启动失败:
ls -ld /var/lib/mongodb # 查看数据目录权限(应为drwxr-xr-x mongod mongod)
sudo chown -R mongod:mongod /var/lib/mongodb # 修改权限(若权限错误)
若数据文件损坏,可使用mongod --repair命令修复(需停止服务):
sudo systemctl stop mongod
mongod --dbpath /var/lib/mongodb --repair # 修复数据文件
sudo systemctl start mongod # 重启服务
使用top、htop或df命令检查系统资源是否充足:
df -h(确保数据目录所在分区有足够空间,建议剩余空间大于20%);top(查看mongod进程的CPU、内存占用,若过高可能导致性能瓶颈)。若系统启用SELinux(sestatus显示Enforcing),可能会阻止MongoDB访问数据目录或端口。可临时设置为permissive模式排查:
sudo setenforce 0 # 临时设置为permissive模式
若问题解决,需调整SELinux规则(如修改数据目录的安全上下文):
sudo chcon -Rv --type=mongod_var_lib_t /var/lib/mongodb # 修改数据目录上下文
db.serverStatus():连接到MongoDB shell,执行该命令获取服务器详细状态(包括连接数、内存使用、锁情况):mongo --host localhost --port 27017 -u admin -p --authenticationDatabase admin
> db.serverStatus()
mongostat:实时监控数据库操作(如查询、插入、更新次数):mongostat --host localhost --port 27017 -u admin -p --authenticationDatabase admin
mongotop:监控集合级别的读写耗时(类似Linux的top命令):mongotop --host localhost --port 27017 -u admin -p --authenticationDatabase admin
若MongoDB崩溃,系统会生成内核转储文件(通常位于/var/crash),可使用crash工具分析:
sudo yum install crash -y # 安装crash工具
sudo crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/vmcore # 分析转储文件
转储文件可提供崩溃时的内核状态信息,帮助定位底层问题。
若使用旧版本MongoDB(如3.x或4.x),可能存在已知bug,建议升级到最新稳定版本(如6.x),升级前需备份数据:
# 备份数据(使用mongodump)
mongodump --host localhost --port 27017 -u admin -p --authenticationDatabase admin --out /backup/mongodb
# 卸载旧版本并安装新版本(以CentOS为例)
sudo yum remove mongodb-org
sudo yum install -y mongodb-org-6.0.5 # 替换为最新版本