簡體   English   中英

MongoDB 無法通過命令 `service mongod start` 啟動

[英]MongoDB can not start by the command `service mongod start`

當我運行命令sudo service mongod start ,MongoDB 無法啟動,當我運行 service mongod status 時,它顯示它尚未啟動,並且日志顯示:

2018-07-05T14:32:03.595+0800 I CONTROL  [main] ***** SERVER RESTARTED *****
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] MongoDB starting : pid=15656 port=27017 dbpath=/var/lib/mongodb 64-bit host=iZbp1ik57sceo226yjpivxZ
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] db version v4.0.0-rc7
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] git version: 7230641bb09b1ceb04c3135cf83a5044c4838906
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] modules: none
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] build environment:
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten]     distmod: ubuntu1604
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten]     distarch: x86_64
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2018-07-05T14:32:03.605+0800 I CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "0.0.0.0", port: 27017 }, processManagement: { timeZoneInfo: "/usr/share/zoneinfo" }, security: { authorization: "enabled" }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2018-07-05T14:32:03.605+0800 I STORAGE  [initandlisten] Detected data files in /var/lib/mongodb created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2018-07-05T14:32:03.605+0800 I STORAGE  [initandlisten]
2018-07-05T14:32:03.605+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2018-07-05T14:32:03.605+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2018-07-05T14:32:03.605+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=488M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2018-07-05T14:32:04.204+0800 E STORAGE  [initandlisten] WiredTiger error (13) [1530772324:204155][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied Raw: [1530772324:204155][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied
2018-07-05T14:32:04.204+0800 E STORAGE  [initandlisten] WiredTiger error (13) [1530772324:204458][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied Raw: [1530772324:204458][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied
2018-07-05T14:32:04.204+0800 E STORAGE  [initandlisten] WiredTiger error (13) [1530772324:204610][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied Raw: [1530772324:204610][15656:0x7fb5cb734a00], wiredtiger_open: /var/lib/mongodb/WiredTiger.turtle: handle-open: open: Permission denied
2018-07-05T14:32:04.204+0800 F STORAGE  [initandlisten] Failed to start up WiredTiger under any compatibility version.
2018-07-05T14:32:04.204+0800 F STORAGE  [initandlisten] 13: Permission denied
2018-07-05T14:32:04.204+0800 F -        [initandlisten] Fatal Assertion 28595 at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 194
2018-07-05T14:32:04.204+0800 F -        [initandlisten]
***aborting after fassert() failure

但是當我嘗試mongod --auth -f /etc/mongod.conf ,服務器可以啟動,當訪問日志文件時,它顯示:

2018-07-05T14:35:34.228+0800 I CONTROL  [main] ***** SERVER RESTARTED *****
2018-07-05T14:35:34.239+0800 I CONTROL  [initandlisten] MongoDB starting : pid=15665 port=27017 dbpath=/var/lib/mongodb 64-bit host=iZbp1ik57sceo226yjpivxZ
2018-07-05T14:35:34.239+0800 I CONTROL  [initandlisten] db version v4.0.0-rc7
2018-07-05T14:35:34.239+0800 I CONTROL  [initandlisten] git version: 7230641bb09b1ceb04c3135cf83a5044c4838906
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten] modules: none
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten] build environment:
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten]     distmod: ubuntu1604
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten]     distarch: x86_64
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2018-07-05T14:35:34.240+0800 I CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "0.0.0.0", port: 27017 }, processManagement: { timeZoneInfo: "/usr/share/zoneinfo" }, security: { authorization: "enabled" }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2018-07-05T14:35:34.240+0800 I STORAGE  [initandlisten] Detected data files in /var/lib/mongodb created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2018-07-05T14:35:34.240+0800 I STORAGE  [initandlisten]
2018-07-05T14:35:34.240+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2018-07-05T14:35:34.240+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2018-07-05T14:35:34.240+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=488M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2018-07-05T14:35:35.005+0800 I STORAGE  [initandlisten] WiredTiger message [1530772535:5560][15665:0x7f0ab9512a00], txn-recover: Main recovery loop: starting at 18/8960
2018-07-05T14:35:35.113+0800 I STORAGE  [initandlisten] WiredTiger message [1530772535:113878][15665:0x7f0ab9512a00], txn-recover: Recovering log 18 through 19
2018-07-05T14:35:35.179+0800 I STORAGE  [initandlisten] WiredTiger message [1530772535:179582][15665:0x7f0ab9512a00], txn-recover: Recovering log 19 through 19
2018-07-05T14:35:35.248+0800 I STORAGE  [initandlisten] WiredTiger message [1530772535:248647][15665:0x7f0ab9512a00], txn-recover: Set global recovery timestamp: 0
2018-07-05T14:35:35.283+0800 I RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)
2018-07-05T14:35:35.311+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-07-05T14:35:35.311+0800 I CONTROL  [initandlisten]
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten]
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten]
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 7856 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
2018-07-05T14:35:35.312+0800 I CONTROL  [initandlisten]
2018-07-05T14:35:35.336+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/var/lib/mongodb/diagnostic.data'
2018-07-05T14:35:35.337+0800 I NETWORK  [initandlisten] waiting for connections on port 27017

整個配置文件如下:

# mongod.conf
# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
journal:
  enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

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

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:
security:
  authorization: enabled

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

那么,這到底是怎么回事呢? 為什么第一種方法不能運行而第二種方法可以啟動它?

根據@Markus W Mahlberg 的說法,運行這些命令后,問題已解決。 [sudo] chown mongodb.mongodb -R /var/lib/mongodb

如果您在測試配置文件時在服務器上以 root 身份運行命令mongod ,如下所示:

$ mongod -f /etc/mongod.conf

mongo 服務器將在 mongodb 文件夾中生成 mongo.lock 文件和 WiredTiger.lock 文件以及其他文件,其 root:root 所有權如下:

-rw-------  1 mongodb mongodb      36864 Nov 25 12:03 index-95--8062076833940689665.wt
-rw-------  1 mongodb mongodb      45056 Nov 25 12:03 index-96--8062076833940689665.wt
-rw-------  1 mongodb mongodb      36864 Nov 25 12:03 index-99--8062076833940689665.wt
drwx------  2 mongodb mongodb       4096 Nov 25 15:23 journal/
-rw-------  1 mongodb mongodb      45056 Nov 25 15:32 _mdb_catalog.wt
-rw-------  1 root    root             0 Nov 25 15:32 mongod.lock
-rw-------  1 mongodb mongodb      36864 Nov 25 15:32 sizeStorer.wt
-rw-------  1 mongodb mongodb        114 Oct 17 17:41 storage.bson
-rw-------  1 mongodb mongodb         44 Oct 17 17:41 WiredTiger
-rw-------  1 mongodb mongodb       4096 Nov 25 15:32 WiredTigerLAS.wt
-rw-------  1 root    root            21 Nov 25 15:22 WiredTiger.lock
-rw-------  1 mongodb mongodb       1201 Nov 25 15:32 WiredTiger.turtle
-rw-------  1 mongodb mongodb     188416 Nov 25 15:32 WiredTiger.wt

該服務很可能配置為使用mongodb用戶運行mongod 這將無權刪除或覆蓋WiredTiger.lockmongod.lock或使用root用戶運行mongod時創建的任何其他文件。 在上面的情況下/var/lib/mongodb/WiredTiger.turtle

解決辦法是將/var/lib/mongodb/文件夾上面的情況下文件夾內所有文件的所有權重置為mongodb用戶:

$ sudo chown -R mongodb:mongodb /var/lib/mongodb/

那應該可以解決問題。

在 Mac OS 上

  1. 瀏覽到您在安裝 mongodb 時配置的數據目錄。 例如:存在 mongod.lock 和 WiredTiger.lock 的數據/數據庫
  2. 須藤 chown -R {username}:{groupname} /data/db
  3. 確保您已停止任何 mongo 進程
  4. 運行“mongod”命令

您現在應該會看到現在准備接受連接的提示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM