服务器重启MongoDB无法启动

文章目录

服务器重启MongoDB无法启动

背景

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

规划

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

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

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

实施

停止MongoDB服务

复制代码
systemctl stop mongod

停止服务器

复制代码
shutdown -h now

添加CPU资源

我们使用的KVM

之后启动服务器

服务器正常启动

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

shell 复制代码
[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开机启动的,所以无需再次启动

再次查看日志

shell 复制代码
 [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的不熟悉,最后网上找到了一个帖子

shell 复制代码
cd /tmp; ls -l *.sock
chown mongod:mongod mongodb-27017.sock

27017是端口号

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

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

总结

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

相关推荐
SKH.16 小时前
Linux驱动-led、beep
linux·运维·单片机
mklpo14716 小时前
为不支持sse4.2命令集的老旧设备制作Win11 26H2系统镜像,2026-10-11。
运维·windows·python
碧海银沙音频科技研究院16 小时前
炬芯ATS308X的扩音器:麦克风到扬声器直通功能实现
java·linux·运维
.Hypocritical.16 小时前
SpringBoot+Vue 前后端分离项目部署到云服务器
服务器·vue.js·spring boot
吴声子夜歌17 小时前
Docker入门与实战——实战案例(编程开发)(一)
运维·docker·容器
空空dream17 小时前
04 | 用 Jenkins 打通 CI自动构建镜像并推送到本地 Harbor
运维·ci/cd·jenkins
海宇AI17 小时前
零信任架构实战:基于海宇运营商近3个月平均账单构建自动化免押租赁授信网关
运维·人工智能·架构·自动化
此生决int17 小时前
Linux系列(06)——进程概念(上)
linux·运维·服务器
海宇服务17 小时前
零信任架构实战:基于海宇股权穿透构建自动化招投标供应商关联排查网关
运维·人工智能·架构·自动化
房开民18 小时前
通俗总结 Octree(八叉树)
java·服务器·数据库