mongodb - mongod 服务无法重新启动,27017 端口未使用 - 甚至获取地址已在使用错误
问题描述
systemctl restart mongod
如果我尝试使用获取错误启动 mongod,我无法启动 mongo db 服务
mongod.service 的作业失败,因为控制进程以错误代码退出。有关详细信息,请参阅“systemctl status mongod.service”和“journalctl -xe”。
日志:vi /var/log/mongo/mongod.log
在日志文件中,如果我看到以下消息,看起来端口已在使用中
initAndListen std::exception 中的异常:监听:地址已在使用中,正在终止
netstat -apt| grep "27017"
没有进程ID。
我没有得到任何解决方案,您的帮助将不胜感激。谢谢。
解决方案
一个问题是 MongoDB 使用的锁定文件的所有权可能不正确:-rw-r--r-- 1 root root 0 Mar 16 02:27 /var/lib/mongo/mongod.lock
建议您简单地删除它,这将允许 MongoDB 正确地重新创建它。MongoDB 仅在当前运行时才需要此文件,理想情况下,该文件应该仅在它也在运行时才存在,因为它只包含 MongoDB 正在运行的当前进程 ID 的副本。
第二个问题是配置文件本身:/etc/mongod.conf。MongoDB 期望该文件采用 YAML 格式,显然空格很重要。我已经分享了在我们的服务器中工作的示例配置文件。
基本上,对于父指令下的任何指令,每个缩进都应该使用两个空格。
附加说明:
例如,“net:”标题没有缩进,因为它是其配置层的顶部,因为“port:”和“bindIp:”每个缩进两个空格,因为“net:”是它们的父指令。“ssl:”指令也缩进了两个空格,因为它的父级是“net:”,但由于“mode:”、“CAFile:”和“PEMKeyFile:”都属于“ssl:”,它们会在它的下方再次出现每个需要 2 个额外的空格以进一步缩进,总共 4 个空格。
最后,以下 mongo restart 将起作用:
systemctl restart mongod
或者
systemctl restart mongod.service
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces.
ssl:
mode: preferSSL
CAFile: /etc/ssl/mongodb/RootCA/root-ca.pem
PEMKeyFile: /etc/ssl/mongodb/host.omkieitsolutions.com.pem
security:
authorization: enabled
clusterAuthMode: keyFile
#operationProfiling:
#replication:
"/etc/mongod.conf" 50L, 990C
推荐阅读
- javascript - 有没有办法向 Node.js 中的现有主题添加新分区?
- web-component - StencilJS 检查命名槽是否为空
- javascript - 将非长度数组传递给 gl.uniform3fv
- python-3.x - 如何验证输入
- mysql - mysql docker容器未启动,mysqld:无法创建/写入文件'/var/lib/mysql/is_writable'(OS errno 13 - 权限被拒绝)
- django - 如何在 Django url 中显示消息?
- c++ - 与 main 中的变量 decleare 和 namspace 中的一个 decleare 没有冲突
- ip-address - 如何为我的 SAMA5D27 板定义 IP 地址?
- java - 乘以 2 矩阵时的打印问题
- android - Intent:通过使用 getApplicationContext() 来实例化 Intent 时避免内存泄漏?