You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB数据库服务启动失败求助及排查操作记录

MongoDB数据库服务启动失败

错误状态信息

执行systemctl status mongod.service的输出:

● mongod.service - MongoDB数据库服务器
   已加载:已加载(/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   活动状态:失败 (Result: exit-code) 于 周四 2023-07-06 15:25:29 UTC; 1分10秒前
     文档:https://docs.mongodb.org/manual
  **进程:27540 ExecStart=/usr/bin/mongod $OPTIONS (代码=退出,状态=100)**
  进程:27537 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (代码=退出,状态=0/SUCCESS)
  进程:27534 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (代码=退出,状态=0/SUCCESS)
  进程:27532 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (代码=退出,状态=0/SUCCESS)
  主PID:11421 (代码=退出,状态=0/SUCCESS)

Jul 06 15:25:29 ip-10-151-20-7.ec2.internal systemd[1]: 正在启动MongoDB数据库服务器...
Jul 06 15:25:29 ip-10-151-20-7.ec2.internal mongod[27540]: {"t":{"$date":"2023-07-06T15:25:29.425Z"},"s":"I",  "c":"CONTROL",  "id":5760901, "ctx":...lse}}}}
Jul 06 15:25:29 ip-10-151-20-7.ec2.internal mongod[27540]: 即将fork子进程,等待服务器准备好接受连接。
Jul 06 15:25:29 ip-10-151-20-7.ec2.internal mongod[27540]: fork出的进程:27543
Jul 06 15:25:29 ip-10-151-20-7.ec2.internal mongod[27540]: 错误:子进程启动失败,退出状态码100
Jul 06 15:25:29 ip-10-151-20-7.ec2.internal mongod[27540]: 如需查看更多输出信息,请去掉"--fork"选项启动。
Jul 06 15:25:29 ip-10-151-20-7.ec2.internal systemd[1]: mongod.service: 控制进程退出,代码=退出状态=100
Jul 06 15:25:29 ip-10-151-20-7.ec2.internal systemd[1]: **启动MongoDB数据库服务器失败。**
Jul 06 15:25:29 ip-10-151-20-7.ec2.internal systemd[1]: mongod.service单元进入失败状态。
Jul 06 15:25:29 ip-10-151-20-7.ec2.internal systemd[1]: mongod.service失败。
提示:部分行被省略,使用-l参数查看完整内容。

另一次systemctl status mongod的输出:

● mongod.service - MongoDB数据库服务器
   已加载:已加载(/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   活动状态:失败 (Result: exit-code) 于 周四 2023-07-06 14:34:27 UTC; 5分钟前
     文档:https://docs.mongodb.org/manual
  进程:22327 ExecStart=/usr/bin/mongod $OPTIONS (代码=退出,状态=48)
  进程:22324 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (代码=退出,状态=0/SUCCESS)
  进程:22322 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (代码=退出,状态=0/SUCCESS)
  进程:22318 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (代码=退出,状态=0/SUCCESS)
  主PID:11421 (代码=退出,状态=0/SUCCESS)

Jul 06 14:34:27 ip-<私有服务器IP>.ec2.internal systemd[1]: 正在启动MongoDB数据库服务器...
Jul 06 14:34:27 ip-<私有服务器IP>.ec2.internal mongod[22327]: {"t":{"$date":"2023-07-06T14:34:27.382Z"},"s":"I",  "c":"CONTROL",  "id":5760901, "ctx":...lse}}}}
Jul 06 14:34:27 ip-<私有服务器IP>.ec2.internal mongod[22327]: 即将fork子进程,等待服务器准备好接受连接。
Jul 06 14:34:27 ip-<私有服务器IP>.ec2.internal mongod[22327]: fork出的进程:22330
Jul 06 14:34:27 ip-<私有服务器IP>.ec2.internal systemd[1]: mongod.service: 控制进程退出,代码=退出状态=48
Jul 06 14:34:27 ip-<私有服务器IP>.ec2.internal systemd[1]: 启动MongoDB数据库服务器失败。
Jul 06 14:34:27 ip-<私有服务器IP>.ec2.internal systemd[1]: mongod.service单元进入失败状态。
Jul 06 14:34:27 ip-<私有服务器IP>.ec2.internal systemd[1]: mongod.service失败。
提示:部分行被省略,使用-l参数查看完整内容。

journalctl -xe的关键输出:

Jul 06 14:50:57 ip-<私有服务器IP>.ec2.internal systemd[1]: 正在启动MongoDB数据库服务器...
Jul 06 14:50:57 ip-<私有服务器IP>.ec2.internal mongod[23608]: {"t":{"$date":"2023-07-06T14:50:57.569Z"},"s":"I",  "c":"CONTROL",  "id":5760901, "ctx":"-","msg":
Jul 06 14:50:57 ip-<私有服务器IP>.ec2.internal mongod[23608]: 即将fork子进程,等待服务器准备好接受连接。
Jul 06 14:50:57 ip-<私有服务器IP>.ec2.internal mongod[23608]: fork出的进程:23610
Jul 06 14:50:57 ip-<私有服务器IP>.ec2.internal mongod[23608]: 错误:子进程启动失败,退出状态码48
Jul 06 14:50:57 ip-<私有服务器IP>.ec2.internal mongod[23608]: 如需查看更多输出信息,请去掉"--fork"选项启动。
Jul 06 14:50:57 ip-<私有服务器IP>.ec2.internal systemd[1]: mongod.service: 控制进程退出,代码=退出状态=48
Jul 06 14:50:57 ip-<私有服务器IP>.ec2.internal systemd[1]: 启动MongoDB数据库服务器失败。
Jul 06 14:50:57 ip-<私有服务器IP>.ec2.internal systemd[1]: mongod.service单元进入失败状态。
Jul 06 14:50:57 ip-<私有服务器IP>.ec2.internal systemd[1]: mongod.service失败。

说明:配置文件中bindIP已设为服务器私有IP。

已尝试的解决方案

  • systemctl restart mongod:启动失败,提示查看systemctl status mongod.service和journalctl -xe详情
  • sudo systemctl start mongod:启动失败,提示同上
  • rm -rf /var/lib/mongo/mongod.lock后重启:问题未解决
  • sudo rm -r /tmp/mongodb-27017.sock后重启:问题未解决
  • chown -R mongod:mongod mongodb:执行失败,提示“无法访问‘mongodb’:没有该文件或目录”
  • systemctl start mongod.service:启动失败,提示同上

问题分析与解决建议

错误码说明

  • 状态码48:MongoDB默认端口27017已被其他进程占用,这是最常见的原因
  • 状态码100:通常与配置错误、数据目录权限异常或数据库文件损坏有关

排查与修复步骤

  1. 检查端口占用情况
    执行以下命令查看27017端口是否被占用:

    netstat -tulpn | grep 27017
    # 或使用ss命令(部分系统netstat未预装)
    ss -tulpn | grep 27017
    

    如果输出结果中有其他进程占用端口,可终止该进程(需确认进程无关紧要),或修改MongoDB配置文件/etc/mongod.conf中的port字段更换端口。

  2. 查看完整启动日志
    按照提示,去掉--fork选项直接启动MongoDB,获取详细错误信息:

    sudo mongod --config /etc/mongod.conf
    

    此命令会直接在控制台输出所有启动日志,可精准定位问题(比如配置文件语法错误、数据目录不存在等)。

  3. 修复数据目录权限
    之前执行chown命令时路径错误,正确的数据目录路径应为/var/lib/mongo,执行以下命令:

    sudo chown -R mongod:mongod /var/lib/mongo
    sudo chmod -R 755 /var/lib/mongo
    
  4. 检查配置文件有效性
    打开/etc/mongod.conf,确认以下内容:

    • bindIp设置正确(私有IP,若需允许本地连接可设为0.0.0.0或私有IP,127.0.0.1)
    • dbPath指向的目录存在且权限正确(默认是/var/lib/mongo)
    • logPath指向的日志目录存在且权限正确
    • 配置文件无语法错误(比如逗号、括号缺失)
  5. 修复损坏的数据库
    如果是数据库文件损坏导致启动失败,先停止服务,然后执行修复(注意:修复前建议备份数据):

    sudo systemctl stop mongod
    sudo mongod --dbpath /var/lib/mongo --repair
    sudo systemctl start mongod
    

内容的提问来源于stack exchange,提问作者LuciferTK0797

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 10:02:04