服务器重启MongoDB无法启动

文章目录

  • 服务器重启MongoDB无法启动
    • 背景
    • 规划
    • 实施
  • 总结

服务器重启MongoDB无法启动

背景

数据库服务器的CPU接近告警值了,需要添加CPU资源,于是乎就在恰当的时间对服务器进行关机,待添加完资源后开机,这样就完成了CPU资源的添加。

规划

在添加资源之前首先要咨询开发人员,让开发人员确认,什么时候可以对机器进行重启,时间确定了在18点以后就可以对机器进行重启操作。这时候把准备工作做好

  1. 重启之前确定何时可以重启
  2. 重启之前把原来的服务关掉
  3. 重启后查看应用是否启动成功
  4. 测试MongoDB是否正常使用

方针路线制定未完成,那就开始执行吧,本来添加资源,加上启动应用10分钟内完全能搞定,但一旦出现问题这是完全保证不了时间的。之前升级也是,理想状态下10分钟~1小时能搞定,最后24小时还是搞不定,这是常有的事,这不今天又遇到了。

实施

停止MongoDB服务

systemctl stop mongod

停止服务器

shutdown -h now

添加CPU资源

我们使用的KVM

之后启动服务器

服务器正常启动

检查应用是否启动,就在这时候问题出现了

[root@ZJPMYCDBS01 ~]# systemctl status mongod
● mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Wed 2023-08-23 18:06:57 CST; 1min 58s ago
     Docs: https://docs.mongodb.org/manual
  Process: 1800 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=14)
  Process: 1797 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 1795 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 1791 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)

Aug 23 18:06:57 ZJPMYCDBS01 systemd[1]: Starting MongoDB Database Server...
Aug 23 18:06:57 ZJPMYCDBS01 mongod[1800]: about to fork child process, waiting until server is ready for connections.
Aug 23 18:06:57 ZJPMYCDBS01 mongod[1800]: forked process: 1803
Aug 23 18:06:57 ZJPMYCDBS01 mongod[1800]: ERROR: child process failed, exited with 14
Aug 23 18:06:57 ZJPMYCDBS01 mongod[1800]: To see additional information in this output, start without the "--fork" option.
Aug 23 18:06:57 ZJPMYCDBS01 systemd[1]: mongod.service: control process exited, code=exited status=14
Aug 23 18:06:57 ZJPMYCDBS01 systemd[1]: Failed to start MongoDB Database Server.
Aug 23 18:06:57 ZJPMYCDBS01 systemd[1]: Unit mongod.service entered failed state.
Aug 23 18:06:57 ZJPMYCDBS01 systemd[1]: mongod.service failed.
[root@ZJPMYCDBS01 ~]# 

我是设置了MongoDB开机启动的,所以无需再次启动

再次查看日志

 [root@ZJPMYCDBS01 ~]#journalctl -xe
Aug 23 18:05:29 ZJPMYCDBS01 mongod[1710]: To see additional information in this output, start without the "--fork" option.
Aug 23 18:05:29 ZJPMYCDBS01 systemd[1]: mongod.service: control process exited, code=exited status=14
Aug 23 18:05:29 ZJPMYCDBS01 systemd[1]: Failed to start MongoDB Database Server.
-- Subject: Unit mongod.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mongod.service has failed.
-- 
-- The result is failed.
Aug 23 18:05:29 ZJPMYCDBS01 systemd[1]: Unit mongod.service entered failed state.
Aug 23 18:05:29 ZJPMYCDBS01 systemd[1]: mongod.service failed.
Aug 23 18:05:29 ZJPMYCDBS01 polkitd[845]: Unregistered Authentication Agent for unix-process:1696:5112 (system bus name :1.20, object path /org/freedesktop/PolicyKit1/Authentication
Aug 23 18:05:57 ZJPMYCDBS01 polkitd[845]: Registered Authentication Agent for unix-process:1722:7930 (system bus name :1.21 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object pa
Aug 23 18:05:57 ZJPMYCDBS01 systemd[1]: Reloading.
Aug 23 18:05:57 ZJPMYCDBS01 systemd[1]: clickhouse-server.service: Supervising process 1339 which is not our child. We'll most likely not notice when it exits.
Aug 23 18:05:57 ZJPMYCDBS01 polkitd[845]: Unregistered Authentication Agent for unix-process:1722:7930 (system bus name :1.21, object path /org/freedesktop/PolicyKit1/Authentication
Aug 23 18:06:01 ZJPMYCDBS01 chronyd[838]: Source 94.237.64.20 replaced with 39.106.54.244
Aug 23 18:06:03 ZJPMYCDBS01 polkitd[845]: Registered Authentication Agent for unix-process:1741:8541 (system bus name :1.22 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object pa

分析以上日志,查看问题,日志中明显的错误信息是code=exited, status=14,查看MongoDB的官网可知以下的内容

Code 原因
0 MongoDB 应用程序成功退出时返回。
2 指定的选项错误或与其他选项不兼容。
3 当命令行上指定的主机名与主/从模式下的 local.sources 集合中的主机名不匹配时,由 mongod 返回。
4 数据库版本与 mongod(或 mongod.exe)实例支持的版本不同。实例将干净地退出。
5 在初始化过程中遇到问题时,由 mongos 返回。
12 在 Windows 上的 mongod.exe 进程在接收到 Control-C、Close、Break 或 Shutdown 事件时返回。
14 MongoDB 应用程序遇到无法恢复的错误、未捕获的异常或未捕获的信号时返回。系统在未执行干净关闭的情况下退出。
20 消息:ERROR: wsastartup failed
Windows 上的 MongoDB 应用程序在 WSAStartup 函数出现错误后返回,该函数用于初始化网络子系统。
消息:NT Service Error
Windows 上的 MongoDB 应用程序由于安装、启动或删除应用程序的 NT 服务时出现故障而返回。
48 新启动的 mongod 或 mongos 由于错误无法开始侦听传入连接。
61 如果具有受监视目录的文件系统无响应,由存储节点监视器返回。
62 当 --dbpath 中的数据文件与当前运行的 mongod 版本不兼容时,由 mongod 返回。
100 当进程抛出未捕获的异常时,由 mongod 返回。

看到以上代码status=14则说明这是异常退出,大概率是有存在锁的,在日志文件中看到了一个lock的文件
但出于对MongoDB的不熟悉,最后网上找到了一个帖子

cd /tmp; ls -l *.sock
chown mongod:mongod mongodb-27017.sock

27017是端口号

mongodb-27017.sock这个文件按理说不会发生权限的变动的,我感觉可能是停止的时候没有完全停止,就急于重启机器,或者是重启的时候有数据写入导致的。

再次启动MongoDB问题解决,不得不说高手在民间,网上很多人不显山不漏水决绝问题棒棒滴,感谢这些网络活雷锋。

总结

在上线过程中,未免是会出现这样那样的问题,遇到问题先看看具体的日志信息,根据日志信息来进行下一步操作,按照日志的关键字去网上查,可能有很多人都会遇到同样的问题,大部分都会解决的。不慌不忙、不急不躁沉着应对。

你可能感兴趣的:(linux,MongoDB,服务器,mongodb,运维)