美文网首页
Mongo 服务启动踩坑记

Mongo 服务启动踩坑记

作者: 蜗牛_96f2 | 来源:发表于2018-06-06 01:43 被阅读100次

在 Centos 系统中安装了mongodb,并且以后台服务的形式运行mongo,sudo service mongod start。安装完成,启动成功,一切都很顺利,但是在一次停止mongo 服务后再次启动时却提示一下错误信息:

Starting mongod (via systemctl):  Job for mongod.service failed because the control process exited with error code. See "systemctl status mongod.service" and "journalctl -xe" for details.                                                          [FAILED]

命令行输入—systemctl status mongod.service查看错误日志如下:

mongod.service - SYSV: Mongo is a scalable, document-oriented database.  Loaded: loaded (/etc/rc.d/init.d/mongod; bad; vendor preset: disabled)  Active: failed (Result: exit-code) since Tue 2017-11-28 21:17:17 CST; 1min 19s ago

    Docs: man:systemd-sysv-generator(8)  Process: 14690 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=1/FAILURE)Nov 28 21:17:16 iZuf62kvdczytdgvp41b7nZ systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....Nov 28 21:17:16 iZuf62kvdczytdgvp41b7nZ runuser[14701]: pam_unix(runuser:session): session opened for user mongod by (uid=0)Nov 28 21:17:17 iZuf62kvdczytdgvp41b7nZ systemd[1]: mongod.service: control process exited, code=exited status=1Nov 28 21:17:17 iZuf62kvdczytdgvp41b7nZ mongod[14690]: Starting mongod: [FAILED]Nov 28 21:17:17 iZuf62kvdczytdgvp41b7nZ systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..Nov 28 21:17:17 iZuf62kvdczytdgvp41b7nZ systemd[1]: Unit mongod.service entered failed state.Nov 28 21:17:17 iZuf62kvdczytdgvp41b7nZ systemd[1]: mongod.service failed.

从日志中并看不出什么有效的信息,之后求助 Google ,也没有搜寻到有效的解决方案,各种查找之后发现了一些答友说是文件夹权限的问题,再看日志发现有两行信息:

Nov 28 21:17:16 iZuf62kvdczytdgvp41b7nZ runuser[14701]: pam_unix(runuser:session): session opened for user mongod by (uid=0)Nov 28 21:17:17 iZuf62kvdczytdgvp41b7nZ systemd[1]: mongod.service: control process exited, code=exited status=1

看起来确实跟用户 (mongod)权限有关,mongo 需要执行的文件有两个,一个是数据存储文件/var/lib/mongo,一个是日志存储文件/var/log/mongodb。所以执行以下命令对这两个文件夹的用户权限进行修改:

chown -R mongod:mongod /var/lib/mongo

chown -R mongod:mongod /var/log/mongodb

之后再次执行sudo service mongod start,很令人失望,依然报错,再次执行systemctl status mongod.service查看错误日志如下:

● mongod.service - SYSV: Mongo is a scalable, document-oriented database.  Loaded: loaded (/etc/rc.d/init.d/mongod; bad; vendor preset: disabled)  Active: failed (Result: exit-code) since Tue 2017-11-28 21:33:30 CST; 34s ago

    Docs: man:systemd-sysv-generator(8)  Process: 16330 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=1/FAILURE)Nov 28 21:33:30 iZuf62kvdczytdgvp41b7nZ systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....Nov 28 21:33:30 iZuf62kvdczytdgvp41b7nZ systemd[1]: mongod.service: control process exited, code=exited status=1Nov 28 21:33:30 iZuf62kvdczytdgvp41b7nZ mongod[16330]: Error starting mongod. /var/run/mongodb/mongod.pid exists.Nov 28 21:33:30 iZuf62kvdczytdgvp41b7nZ systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..Nov 28 21:33:30 iZuf62kvdczytdgvp41b7nZ systemd[1]: Unit mongod.service entered failed state.Nov 28 21:33:30 iZuf62kvdczytdgvp41b7nZ systemd[1]: mongod.service failed.

但是令人欣慰的是这次的错误信息不一样了,说明刚才修改权限的操作是有效的,小开心一下 :) ,继续看日志,发现有一行信息:

Nov 28 21:33:30 iZuf62kvdczytdgvp41b7nZ mongod[16330]: Error starting mongod. /var/run/mongodb/mongod.pid exists.

从字面意思看就是/var/run/mongodb/mongod.pid这个文件存在导致进程退出,查看 mongo 服务的执行脚本/etc/rc.d/init.d/mongod中有一段代码:

start(){...  # Make sure the pidfile does not exist  if [ -f "$PIDFILEPATH" ]; then      echo "Error starting mongod. $PIDFILEPATH exists."      RETVAL=1      return  fi}

上面的错误日志正是出于此处,而且注释中说了这段代码的判断逻辑是确保 pidfile 不存在,这就进一步印证了错误是由于 pidfile 的存在导致的,果断删除/var/run/mongodb/mongod.pid

rm /var/run/mongodb/mongod.pid -f

再次重启服务:sudo service mongod start,成功了 ~~

Starting mongod (via systemctl):                          [  OK  ]

最后整理了一个 shell 脚本mongoAuth.sh

#!/bin/bashchown -R mongod:mongod /var/lib/mongo

chown -R mongod:mongod /var/log/mongodb

rm /var/run/mongodb/mongod.pid -f

之后再遇到 mongo 服务启动失败的问题,执行此脚本即可解决,我用了之后很好使,所以分享此文章,如果有小伙伴以后遇到这样的问题了,希望该篇文章可以帮到你。共同学习,共同进步!

相关文章

  • Mongo 服务启动踩坑记

    在 Centos 系统中安装了mongodb,并且以后台服务的形式运行mongo,sudo service mon...

  • mongodb总结

    启动服务连接服务命令窗口执行 mongo host:port 或 mongo host:port/dbName 或...

  • mongodb

    git clone ... cd mongo mongod启动mongodb服务 mongo:mongodb客户端...

  • 启动Mongo服务

    mongod--logpath"D:\MongoDB\data\logs.txt"--logappend --db...

  • windows container 踩坑记

    windows container 踩坑记 Intro 我们有一些服务是 dotnet framework 的,不...

  • Mongo踩坑实录

    1.更新数据时,js脚本中没有指定数据类型,int数据被更新成了double,导致线上问题。 原因,js是弱类型,...

  • MongoDB项目踩坑

    基本查询语句 mongoDB踩过的坑 深度反省 Mongo和Mysql有很大的本质区别,mongo像执行代码一样,...

  • MongoDB基础笔记

    outline MongoDB常用命令 MongoDB的CRUD 索引 MongoDB的安装 踩坑记录 Mongo...

  • pymongo

    >>> import pymongo启动mongo服务:$ mongod与mongoclient连接: >>> c...

  • MongoDB可视化工具 Studio 3T使用教程

    一、启动服务器、创建数据库和Collection 1、启动MongoDB服务器(bin目录下) 2、连接Mongo...

网友评论

      本文标题:Mongo 服务启动踩坑记

      本文链接:https://www.haomeiwen.com/subject/xmevsftx.html