这个问题是真,,,,,,,哎,不说了。
过程如下:
mongodb启动报错
然后journalctl -xe看一下详情
发现如下字段:
看着像权限问题,推测数据文件权限不够,mongo 需要执行的文件有两个,分别是数据存储文件 /var/lib/mongo
和日志存储文件 /var/log/mongodb,
运行如下命令解决。
chown -R mongod:mongod /var/lib/mongo
chown -R mongod:mongod /var/log/mongodb
然后重新journalctl -xe,发现报错信息变了出现如下字段
这句话比较好理解,因为这个进程的存在导致错误启动,只要删除即可,命令如下。
rm /var/run/mongodb/mongod.pid exists
再次启动发现还是失败,继续journalctl -xe。发现如下字段:
貌似是这个mongod.service文件有问题,于是通过命令搜索找出来,发现是空的,所以就编辑一下。
[Unit]
Description=Mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/www/server/mongodb/mongodb.pid
ExecStartPre=/bin/rm -rf /www/server/mongodb/mongod.lock
ExecStart=/bin/su - mongodb -c "/www/server/mongodb/bin/mongod --config /www/server/mongodb/mongodb.conf"
ExecStop=/bin/kill -2 $MAINPID
KillMode=process
KillSignal=SIGQUIT
TimeoutStopSec=5
PrivateTmp=true
[Install]
WantedBy=multi-user.target
vi /etc/systemd/system/multi-user.target.wants/mongod.service
操作完发现还是不行,哇塞,于是这次去找log文件,看一下又是哪块小饼干在抽疯。
vi /var/log/mongodb/mongod.log
看到内容中的错误字段如下,
***aborting after fassert() failure
2018-09-14T10:58:45.640+0800 I CONTROL [main] ***** SERVER RESTARTED *****
2018-09-14T10:58:45.644+0800 I CONTROL [initandlisten] MongoDB starting : pid=8710 port=27017 dbpath=/var/lib/mongo 64-bit host=localhost.localdomain
2018-09-14T10:58:45.644+0800 I CONTROL [initandlisten] db version v3.2.21
2018-09-14T10:58:45.645+0800 I CONTROL [initandlisten] git version: 1ab1010737145ba3761318508ff65ba74dfe8155
2018-09-14T10:58:45.645+0800 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
2018-09-14T10:58:45.645+0800 I CONTROL [initandlisten] allocator: tcmalloc
2018-09-14T10:58:45.645+0800 I CONTROL [initandlisten] modules: none
2018-09-14T10:58:45.645+0800 I CONTROL [initandlisten] build environment:
2018-09-14T10:58:45.645+0800 I CONTROL [initandlisten] distmod: rhel70
2018-09-14T10:58:45.645+0800 I CONTROL [initandlisten] distarch: x86_64
2018-09-14T10:58:45.645+0800 I CONTROL [initandlisten] target_arch: x86_64
2018-09-14T10:58:45.645+0800 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid" }, storage: { dbPath: "/var/lib/mongo", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2018-09-14T10:58:45.660+0800 E NETWORK [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock errno:1 Operation not permitted
2018-09-14T10:58:45.660+0800 I - [initandlisten] Fatal Assertion 28578
2018-09-14T10:58:45.660+0800 I - [initandlisten]
***aborting after fassert() failure
发现连接不到一个socket文件,于是过去打开发现是空的~那就干脆直接删掉,让mongo启动时候自己去新建去。
rm /tmp/mongodb-27017.sock
然后再去启动,发现还是不行,好的吧那就继续journalctl -xe
这鬼东西又出来了,好吧那就继续删除,刚呗,who怕who啊~
rm /var/run/mongodb/mongod.pid
然后再用systemctl start mongod ,发现这狗日的mongo终于运行了~~~