启动mongodb的时候遇到了以下几个问题,我在此处给出我的一些解决方法。
注意我的方法中的大部分命令在root权限下才能生效,所以建议修复数据库时使用root用户。
service mongodb start 失败
status显示failed
root@machine ~ # service mongod start
root@machine ~ # service mongod status
● mongod.service - High-performance, schema-free document-oriented database
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2017-08-15 12:03:51 CEST; 2s ago
Docs: https://docs.mongodb.org/manual
Process: 26942 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=100)
Main PID: 26942 (code=exited, status=100)
Aug 15 12:03:50 machine systemd[1]: Started High-performance, schema-free document-oriented database.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Main process exited, code=exited, status=100/n/a
Aug 15 12:03:51 machine systemd[1]: mongod.service: Unit entered failed state.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Failed with result 'exit-code'.
修复方法:
cd 到/var/lib/mongodb 文件夹下(我也不知道为什么非要cd到这个文件夹下,但是事实证明需要到这个目录下才行)
chown -R mongodb:mongodb /var/lib/mongodb
然后重启mongodb服务。
mongod 启动失败:进程占用
# cut 截取第9至15字符(进程id),列出了要kill掉这些进程的id
lsof -i:端口号 | cut -c 9-15 | xargs kill -9
mongod 启动失败:服务被锁lock
删除 /var/lib/mongodb 文件加下的mongd.lock
rm /var/lib/mongodb/mongod.lock
mongod 启动失败:Too many open files
错误回显:[initandlisten] Listener: accept() returns -1 errno:24 Too many open files
关闭一直尝试连接你数据库的机器,重启mongodb,同时不要忘了rm .lock文件