注册

MongoDB启动报错 28663 Cannot start server

针对“MongoDB启动报错 28663 Cannot start server”这个问题,我们可以尝试以下几步来排查问题:

  1. 确认 MongoDB 的安装路径是否存在问题,例如:文件权限或者文件夹权限等问题。可以尝试以管理员身份启动命令行再次运行 MongoDB,或者检查 MongoDB 所在的文件夹以及其子文件夹的权限是否有误。

  2. 检查 MongoDB 配置文件是否存在问题,例如:配置文件的路径或者配置内容的格式是否正确。可以尝试使用 MongoDB 自带的 mongod --config 命令来检查配置文件是否存在语法错误或者路径错误等问题。

下面我们分别针对这两个方面来进行讲解。

确认 MongoDB 的安装路径是否存在问题

首先,我们需要确认 MongoDB 的安装路径是否存在问题。可以按照以下步骤进行排查:

  1. 打开命令行或 Terminal 窗口,使用管理员身份运行命令行或者控制台。
  2. 执行以下命令,用于进入 MongoDB 安装目录(自行替换路径中的 mongodb 为 MongoDB 的实际安装路径):
cd /mongodb/bin
  1. 尝试启动 MongoDB 服务器,执行以下命令:
./mongod

如果出现错误提示,例如:

28663 Cannot start server

则说明 MongoDB 的启动过程中出现了问题。这时我们需要查看 MongoDB 开始启动时所输出的详细日志信息,以进一步排查问题。可以尝试执行以下命令:

./mongod --logpath /mongodb/log/mongodb.log --logappend --verbose

其中,logpath 参数指定了 MongoDB 的日志文件所在路径,logappend 参数用于指定 MongoDB 的日志输出追加模式,而 verbose 参数则用于增加日志输出的详细程度。这些参数可以帮助我们更好地了解 MongoDB 服务器启动时的详细错误信息。

执行完以上命令之后,可以查看 /mongodb/log/mongodb.log 文件中的日志信息,来定位具体的错误原因。例如:

2022-01-01T00:00:00.000+0800 I CONTROL  [initandlisten] MongoDB starting : pid=28663 port=27017 dbpath=/mongodb/data 64-bit host=YOUR_HOST_NAME
2022-01-01T00:00:00.000+0800 I CONTROL  [initandlisten] db version v3.6.3
2022-01-01T00:00:00.000+0800 I CONTROL  [initandlisten] git version: YOUR_GIT_VERSION
2022-01-01T00:00:00.000+0800 I CONTROL  [initandlisten] build environment:
2022-01-01T00:00:00.000+0800 I CONTROL  [initandlisten]     distmod: ubuntu1604
2022-01-01T00:00:00.000+0800 I CONTROL  [initandlisten]     distarch: YOUR_DISTARCH
2022-01-01T00:00:00.000+0800 I CONTROL  [initandlisten]     target_arch: YOUR_TARGET_ARCH
2022-01-01T00:00:00.000+0800 I CONTROL  [initandlisten] options: { configuration: "/mongodb/mongod.conf", logappend: true, logpath: "/mongodb/log/mongodb.log", verbose: true }
2022-01-01T00:00:00.000+0800 I STORAGE  [initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /mongodb/data, terminating
2022-01-01T00:00:00.000+0800 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2022-01-01T00:00:00.000+0800 I NETWORK  [initandlisten] removing socket file: /tmp/mongodb-27017.sock
2022-01-01T00:00:00.000+0800 I CONTROL  [initandlisten] now exiting
2022-01-01T00:00:00.000+0800 I CONTROL  [initandlisten] shutting down with code:100

从以上日志信息中可以看到,错误原因是 MongoDB 尝试在只读目录 /mongodb/data 中创建锁文件,导致启动失败。这时,我们需要检查 /mongodb/data 目录的文件权限是否配置有误,或者该目录是否存在等问题。

如果执行以上排查方法仍然无法解决问题,可以尝试查看 MongoDB 官方文档中的相关内容,或者向 MongoDB 官方支持人员咨询。

检查 MongoDB 配置文件是否存在问题

接下来,我们需要检查 MongoDB 配置文件是否存在问题。可以按照以下步骤进行排查:

  1. 打开 MongoDB 配置文件,查看其中的配置信息是否存在问题。可以执行以下命令查看 MongoDB 配置文件的路径,用于进入配置文件所在的目录:
cd /mongodb/conf
  1. 使用编辑器打开 mongod.conf 文件,查看其中的配置信息。确保配置内容的格式正确,并且路径等信息没有错误。以下是一个 mongod.conf 的示例内容,可以作为参考:
systemLog:
  destination: file
  path: "/mongodb/log/mongodb.log"
  logAppend: true
  verbosity: 0
  quiet: true
  traceAllExceptions: false

storage:
  dbPath: "/mongodb/data"
  journal:
    enabled: true
  engine: wiredTiger

net:
  bindIp: 0.0.0.0
  port: 27017
  maxIncomingConnections: 65535
  wireObjectCheck: true
  ipv6: false

processManagement:
  fork: true
  pidFilePath: "/mongodb/tmp/mongod.pid"
  timeZoneInfo: "/usr/share/zoneinfo"

security:
  authorization: "enabled"

  1. 重新启动 MongoDB 服务器,执行以下命令:
./mongod --config /mongodb/conf/mongod.conf

如果 MongoDB 服务器能够成功启动,那么说明配置文件没有存在问题。可以尝试通过客户端连接 MongoDB 服务器,来进行简单的测试运行。例如,通过 mongo 命令行客户端连接启动的 MongoDB 服务器:

./mongo

如果不能成功连接 MongoDB 服务器,可以尝试查看 MongoDB 的日志,来查找问题原因。例如,执行以下命令查看 MongoDB 日志:

tail -f /mongodb/log/mongodb.log

以上两个方法可以帮助我们初步排查 MongoDB 启动时的错误,如果仍然无法解决问题,可以尝试查看 MongoDB 官方文档,或者向 MongoDB 官方支持人员咨询。