症状:执行sudo apt-get install -y mongodb-org时提示“缺少依赖包”(如libssl-dev、libcurl4等)。
原因:系统未安装MongoDB所需的库文件。
解决方案:手动安装缺失的依赖包。例如,若提示缺少libssl-dev,可运行以下命令安装:
sudo apt-get install -y libssl-dev libcurl4 openssl liblzma5 gnupg
安装完成后重新尝试安装MongoDB。
症状:sudo systemctl start mongod后服务未启动,sudo systemctl status mongod显示“failed”状态。
原因:常见原因包括配置文件错误、数据目录权限不足、端口被占用。
解决方案:
mongod --config /etc/mongod.conf --eval,确认配置文件无语法错误。/var/lib/mongodb,需确保当前用户(如mongodb)有读写权限:sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo netstat -tulnp | grep 27017查看27017端口是否被其他进程占用,若有则停止该进程或修改/etc/mongod.conf中的port参数。症状:使用mongo命令或客户端连接时提示“Connection refused”。
原因:服务未启动、bindIp配置限制了访问、防火墙拦截。
解决方案:
sudo systemctl status mongod,确保服务处于“active (running)”状态。bindIp配置:编辑/etc/mongod.conf,将net.bindIp设置为0.0.0.0(允许所有IP连接)或指定允许的IP地址(如192.168.1.100),修改后重启服务:sudo systemctl restart mongod
ufw),运行以下命令开放27017端口:sudo ufw allow 27017
症状:未启用身份验证时,任何用户均可直接访问数据库,存在数据泄露风险。
原因:/etc/mongod.conf中未开启authorization。
解决方案:
/etc/mongod.conf,添加以下配置:security:
authorization: enabled
admin):mongo
use admin
db.createUser({
user: "admin",
pwd: "your_password",
roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
})
mongo -u admin -p your_password --authenticationDatabase admin
症状:查询响应时间长,mongostat显示高延迟。
原因:未创建索引、查询语句不合理、内存不足。
解决方案:
users集合的username字段创建索引:db.users.createIndex({ username: 1 })
explain()方法查看查询是否使用了索引,例如:db.users.find({ username: "test" }).explain("executionStats")
/etc/mongod.conf,调整storage.wiredTiger.engineConfig.cacheSizeGB参数(建议设置为系统内存的50%-70%),例如:storage:
wiredTiger:
engineConfig:
cacheSizeGB: 4
修改后重启服务。症状:写入操作后数据未持久化,或副本集节点数据不同步。
原因:未启用写入确认(Write Concern)、副本集配置错误。
解决方案:
w=majority参数,确保写入操作被多数节点确认,例如:db.collection.insert({ name: "test" }, { writeConcern: { w: "majority", wtimeout: 5000 } })
rs.status()查看节点同步情况,确保所有节点状态为SECONDARY或PRIMARY。症状:升级MongoDB后服务无法启动,或出现兼容性错误。
原因:升级前未备份数据、版本跨度过大。
解决方案:
mongodump备份所有数据库:mongodump --out /backups/mongodb_pre_upgrade