针对“MongoDB启动报错 28663 Cannot start server”这个问题,我们可以尝试以下几步来排查问题:
-
确认 MongoDB 的安装路径是否存在问题,例如:文件权限或者文件夹权限等问题。可以尝试以管理员身份启动命令行再次运行 MongoDB,或者检查 MongoDB 所在的文件夹以及其子文件夹的权限是否有误。
-
检查 MongoDB 配置文件是否存在问题,例如:配置文件的路径或者配置内容的格式是否正确。可以尝试使用 MongoDB 自带的
mongod --config
命令来检查配置文件是否存在语法错误或者路径错误等问题。
下面我们分别针对这两个方面来进行讲解。
确认 MongoDB 的安装路径是否存在问题
首先,我们需要确认 MongoDB 的安装路径是否存在问题。可以按照以下步骤进行排查:
- 打开命令行或 Terminal 窗口,使用管理员身份运行命令行或者控制台。
- 执行以下命令,用于进入 MongoDB 安装目录(自行替换路径中的
mongodb
为 MongoDB 的实际安装路径):
cd /mongodb/bin
- 尝试启动 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 配置文件是否存在问题。可以按照以下步骤进行排查:
- 打开 MongoDB 配置文件,查看其中的配置信息是否存在问题。可以执行以下命令查看 MongoDB 配置文件的路径,用于进入配置文件所在的目录:
cd /mongodb/conf
- 使用编辑器打开
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"
- 重新启动 MongoDB 服务器,执行以下命令:
./mongod --config /mongodb/conf/mongod.conf
如果 MongoDB 服务器能够成功启动,那么说明配置文件没有存在问题。可以尝试通过客户端连接 MongoDB 服务器,来进行简单的测试运行。例如,通过 mongo
命令行客户端连接启动的 MongoDB 服务器:
./mongo
如果不能成功连接 MongoDB 服务器,可以尝试查看 MongoDB 的日志,来查找问题原因。例如,执行以下命令查看 MongoDB 日志:
tail -f /mongodb/log/mongodb.log
以上两个方法可以帮助我们初步排查 MongoDB 启动时的错误,如果仍然无法解决问题,可以尝试查看 MongoDB 官方文档,或者向 MongoDB 官方支持人员咨询。