Mongod Service开始退出,代码为100

时间:2017-08-15 10:26:38

标签: mongodb service ubuntu-16.04

问题

我的mongo服务不再启动了:

root@machine ~ # service mongod start
root@machine ~ # service mongod status
● mongod.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2017-08-15 12:03:51 CEST; 2s ago
     Docs: https://docs.mongodb.org/manual
  Process: 26942 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=100)
 Main PID: 26942 (code=exited, status=100)

Aug 15 12:03:50 machine systemd[1]: Started High-performance, schema-free document-oriented database.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Main process exited, code=exited, status=100/n/a
Aug 15 12:03:51 machine systemd[1]: mongod.service: Unit entered failed state.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Failed with result 'exit-code'.

退出代码100模糊定义为:

  

当进程抛出未捕获的异常时由mongod返回。

我做了什么

首先,我通过the official guide在Ubuntu 16.04.2 LTS上安装了我的mongodb(3.4.7)。

启动和停止服务工作正常。所以我继续启用身份验证(再次通过the official guide)。

然后我将服务添加到to run on server startup

root@machine ~ # systemctl enable mongod.service

mongod.conf

我还编辑了我的配置文件,该文件通过了yaml linter:

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true

#  engine: mmapv1
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


#processManagement:

security:
  authorization: enabled

文件的所有权是

root@machine ~ # ls -la /etc/ | grep mongo
-rw-r--r--   1 root  root     599 Aug 15 11:42 mongod.conf

DBPATH

我知道dbpath存在问题所以这就是/var/lib/mongodb在所有权方面的含义:

root@ machine ~ # ls -la /var/lib/ | grep mongo
drwxr-xr-x  4 mongodb      mongodb      4096 Aug 15 11:54 mongodb

服务列表

通过service --status-all列出所有服务时,没有任何mongo相关服务的条目。

有人知道可能导致这个问题的原因吗?

更新

根据建议,我运行了以下命令(稍作修改):

root@machine ~ /usr/bin/mongod --verbose --config /etc/mongod.conf &
[1] 28495

当我做对了,这是二进制文件的直接执行。这让我现在至少可以登录到mongo shell:

root@machine ~ # mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
> 

但是,退出代码100仍然保持服务状态失败。

更新更新

输入root@machine ~ # /usr/bin/mongod --verbose

我收到以下错误:

2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] MongoDB starting : pid=28642 port=27017 dbpath=/data/db 64-bit host=machine
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] db version v3.4.7
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] git version: cf38c1b8a0a8dca4a11737581beafef4fe120bcd
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] allocator: tcmalloc
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] modules: none
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] build environment:
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten]     distmod: ubuntu1604
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten]     distarch: x86_64
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten]     target_arch: x86_64
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] options: { systemLog: { verbosity: 1 } }
2017-08-15T13:45:40.973+0200 D -        [initandlisten] User Assertion: 29:Data directory /data/db not found. src/mongo/db/service_context_d.cpp 98
2017-08-15T13:45:40.973+0200 I STORAGE  [initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating
2017-08-15T13:45:40.973+0200 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2017-08-15T13:45:40.973+0200 I NETWORK  [initandlisten] shutdown: going to flush diaglog...
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] now exiting
2017-08-15T13:45:40.973+0200 I CONTROL  [initandlisten] shutting down with code:100

5 个答案:

答案 0 :(得分:51)

您的数据目录中的权限可能仍然存在一些问题。特别是如果你从终端运行mongod开始。

我发现当你从终端运行时,数据文件是在root下创建的,而不是mongodb用户。要解决..



cd /var/lib/mongodb
sudo chown -R mongodb:mongodb *




答案 1 :(得分:7)

rm /var/lib/mongodb/mongod.lock
systemctl restart mongod
systemctl status mongod

试试这个!

答案 2 :(得分:0)

删除mongod.lock下的'dbath'文件,它应该开始没有问题。

答案 3 :(得分:0)

我知道已经很晚了,但这也许可以帮助需要帮助的人。

我检查了/ var / log / mongodb并发现了这一点:

Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted

我想权限设置为root,而不是mongodb,因为我使用sudo启动mongod。 (也许有人可以帮助澄清这一点)

因此解决方案是删除该/tmp/mongodb-27017.sock并重新启动服务。至少对我有用。(对不起我的英语不好)

https://mkyong.com/mongodb/mongodb-failed-to-unlink-socket-file-tmpmongodb-27017/

答案 4 :(得分:0)

检查dbath上的日志文件。它通常位于/ var / log / mongodb上 日志文件是mongodb.log

对我来说,问题是磁盘空间不足...我收到的错误消息也与此相同。

我的磁盘上没有可用空间,因此我在文件/etc/mongodb.conf中使用了smallfiles选项。 只需在此配置文件上添加以下行: AppConfig