MongoDB Enterprise无法启动Wired Tiger作为服务

时间:2016-08-01 13:38:05

标签: mongodb ubuntu

我安装了WiredTiger,但发现我无法使用标准启动数据库:

sudo service mongod start

当我查看日志文件(tail /var/log/mongodb/mongod.log)时似乎:

2016-08-01T14:48:12.029+0200 I CONTROL  [main] ***** SERVER RESTARTED *****
2016-08-01T14:48:12.032+0200 I CONTROL  [initandlisten] MongoDB starting : pid=1238 port=27017 dbpath=/var/lib/mongodb 64-bit host=xxx
2016-08-01T14:48:12.032+0200 I CONTROL  [initandlisten] db version v3.2.8
2016-08-01T14:48:12.032+0200 I CONTROL  [initandlisten] git version: ed70e33130c977bda0024c125b56d159573dbaf0
2016-08-01T14:48:12.032+0200 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g-fips  1 Mar 2016
2016-08-01T14:48:12.032+0200 I CONTROL  [initandlisten] allocator: tcmalloc
2016-08-01T14:48:12.032+0200 I CONTROL  [initandlisten] modules: enterprise 
2016-08-01T14:48:12.032+0200 I CONTROL  [initandlisten] build environment:
2016-08-01T14:48:12.032+0200 I CONTROL  [initandlisten]     distmod: ubuntu1604
2016-08-01T14:48:12.032+0200 I CONTROL  [initandlisten]     distarch: x86_64
2016-08-01T14:48:12.032+0200 I CONTROL  [initandlisten]     target_arch: x86_64
2016-08-01T14:48:12.032+0200 I CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, storage: { dbPath: "/var/lib/mongodb", engine: "wiredTiger", journ
al: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log", quiet: true } }
2016-08-01T14:48:12.052+0200 I STORAGE  [initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /var/lib/mongodb/mongod.lock errno:13 Permission denied Is a mongod instance already
 running?, terminating
2016-08-01T14:48:12.052+0200 I CONTROL  [initandlisten] dbexit:  rc: 

100

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
  engine: wiredTiger
#  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

我已按以下方式更改了权限:

chmod -R 777 /var/log/mongodb
chown -R /var/log/mongodb

但没有什么有所作为。没有服务正在运行。我可以从命令行运行:

mongod

给出以下内容:

2016-08-01T15:35:51.291+0200 I CONTROL  [initandlisten] MongoDB starting : pid=5776 port=27017 dbpath=/data/db 64-bit host=brett
2016-08-01T15:35:51.291+0200 I CONTROL  [initandlisten] db version v3.2.8
2016-08-01T15:35:51.291+0200 I CONTROL  [initandlisten] git version: ed70e33130c977bda0024c125b56d159573dbaf0
2016-08-01T15:35:51.291+0200 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g-fips  1 Mar 2016
2016-08-01T15:35:51.291+0200 I CONTROL  [initandlisten] allocator: tcmalloc
2016-08-01T15:35:51.291+0200 I CONTROL  [initandlisten] modules: enterprise 
2016-08-01T15:35:51.291+0200 I CONTROL  [initandlisten] build environment:
2016-08-01T15:35:51.291+0200 I CONTROL  [initandlisten]     distmod: ubuntu1604
2016-08-01T15:35:51.291+0200 I CONTROL  [initandlisten]     distarch: x86_64
2016-08-01T15:35:51.291+0200 I CONTROL  [initandlisten]     target_arch: x86_64
2016-08-01T15:35:51.291+0200 I CONTROL  [initandlisten] options: {}
2016-08-01T15:35:51.311+0200 I -        [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2016-08-01T15:35:51.311+0200 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=4G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2016-08-01T15:35:51.722+0200 I CONTROL  [initandlisten] 
2016-08-01T15:35:51.722+0200 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-08-01T15:35:51.722+0200 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-08-01T15:35:51.722+0200 I CONTROL  [initandlisten] 
2016-08-01T15:35:51.722+0200 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-08-01T15:35:51.722+0200 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-08-01T15:35:51.722+0200 I CONTROL  [initandlisten] 
2016-08-01T15:35:51.722+0200 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2016-08-01T15:35:51.722+0200 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-08-01T15:35:51.723+0200 I NETWORK  [initandlisten] waiting for connections on port 27017

但我不能把mongod作为服务!尝试权限:

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

sudo chown -R user:machine /var/lib/mongodb

sudo chown -R root:machine /var/lib/mongodb

如果我运行以下内容:

mongod --config /etc/mongod.conf

然后我可以使用mongo

连接到数据库

如下:

MongoDB shell version: 3.2.8
connecting to: test
Server has startup warnings: 
2016-08-09T19:46:31.583+0200 I CONTROL  [initandlisten] 
2016-08-09T19:46:31.583+0200 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-08-09T19:46:31.583+0200 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-08-09T19:46:31.583+0200 I CONTROL  [initandlisten] 
2016-08-09T19:46:31.583+0200 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-08-09T19:46:31.583+0200 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-08-09T19:46:31.583+0200 I CONTROL  [initandlisten] 

以下是ls -la /var/lib/mongodb

的输出
total 216
drwxrwxrwx  4 xxx root   4096 Aug 19 12:37 .
drwxr-xr-x 78 root  root   4096 Aug  9 15:05 ..
-rwxrwxrwx  1 xxx xxx 36864 Aug 10 11:22 collection-0--5694223804331577236.wt
drwxrwxrwx  2 xxx xxx  4096 Aug 10 11:22 diagnostic.data
-rwxrwxrwx  1 xxx xxx 36864 Aug 10 11:22 index-1--5694223804331577236.wt
drwxrwxrwx  2 xxx xxx  4096 Aug  9 19:46 journal
-rwxrwxrwx  1 xxx xxx 16384 Aug 10 11:22 _mdb_catalog.wt
-rwxrwxrwx  1 xxx xxx 36864 Aug 10 11:22 sizeStorer.wt
-rwxrwxrwx  1 xxx xxx    95 Aug  9 19:30 storage.bson
-rwxrwxrwx  1 xxx xxx    46 Aug  9 19:30 WiredTiger
-rwxrwxrwx  1 xxx xxx  4096 Aug 10 11:22 WiredTigerLAS.wt
-rwxrwxrwx  1 xxx xxx    21 Aug  9 19:30 WiredTiger.lock
-rwxrwxrwx  1 xxx xxx   918 Aug 10 11:22 WiredTiger.turtle
-rwxrwxrwx  1 xxx xxx 45056 Aug 10 11:22 WiredTiger.wt

我也尝试删除建议的大文件。但我永远找不到一种方法来启动服务。

这是我在运行mongod:

2016-08-19T12:53:53.713+0200 I CONTROL  [initandlisten] MongoDB starting : pid=9030 port=27017 dbpath=/data/db 64-bit host=xxx
2016-08-19T12:53:53.713+0200 I CONTROL  [initandlisten] db version v3.2.8
2016-08-19T12:53:53.713+0200 I CONTROL  [initandlisten] git version: ed70e33130c977bda0024c125b56d159573dbaf0
2016-08-19T12:53:53.713+0200 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g-fips  1 Mar 2016
2016-08-19T12:53:53.713+0200 I CONTROL  [initandlisten] allocator: tcmalloc
2016-08-19T12:53:53.713+0200 I CONTROL  [initandlisten] modules: enterprise 
2016-08-19T12:53:53.713+0200 I CONTROL  [initandlisten] build environment:
2016-08-19T12:53:53.713+0200 I CONTROL  [initandlisten]     distmod: ubuntu1604
2016-08-19T12:53:53.713+0200 I CONTROL  [initandlisten]     distarch: x86_64
2016-08-19T12:53:53.713+0200 I CONTROL  [initandlisten]     target_arch: x86_64
2016-08-19T12:53:53.713+0200 I CONTROL  [initandlisten] options: {}
2016-08-19T12:53:53.732+0200 I -        [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2016-08-19T12:53:53.733+0200 I STORAGE  [initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
2016-08-19T12:53:53.733+0200 I CONTROL  [initandlisten] dbexit:  rc: 100

这是:

ls -ld /data/db/
drwxr-xr-x 4 mongodb nogroup 4096 Aug 19 13:10 /data/db/

我可以使用

启动mongo
sudo mongod
2016-08-19T13:13:47.117+0200 I CONTROL  [initandlisten] MongoDB starting : pid=12360 port=27017 dbpath=/data/db 64-bit host=brett
2016-08-19T13:13:47.117+0200 I CONTROL  [initandlisten] db version v3.2.8
2016-08-19T13:13:47.117+0200 I CONTROL  [initandlisten] git version: ed70e33130c977bda0024c125b56d159573dbaf0
2016-08-19T13:13:47.117+0200 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g-fips  1 Mar 2016
2016-08-19T13:13:47.117+0200 I CONTROL  [initandlisten] allocator: tcmalloc
2016-08-19T13:13:47.117+0200 I CONTROL  [initandlisten] modules: enterprise 
2016-08-19T13:13:47.117+0200 I CONTROL  [initandlisten] build environment:
2016-08-19T13:13:47.117+0200 I CONTROL  [initandlisten]     distmod: ubuntu1604
2016-08-19T13:13:47.117+0200 I CONTROL  [initandlisten]     distarch: x86_64
2016-08-19T13:13:47.117+0200 I CONTROL  [initandlisten]     target_arch: x86_64
2016-08-19T13:13:47.117+0200 I CONTROL  [initandlisten] options: {}
2016-08-19T13:13:47.137+0200 I -        [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2016-08-19T13:13:47.137+0200 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=4G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2016-08-19T13:13:47.548+0200 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2016-08-19T13:13:47.548+0200 I CONTROL  [initandlisten] 
2016-08-19T13:13:47.549+0200 I CONTROL  [initandlisten] 
2016-08-19T13:13:47.549+0200 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-08-19T13:13:47.549+0200 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-08-19T13:13:47.549+0200 I CONTROL  [initandlisten] 
2016-08-19T13:13:47.549+0200 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-08-19T13:13:47.549+0200 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-08-19T13:13:47.549+0200 I CONTROL  [initandlisten] 
2016-08-19T13:13:47.549+0200 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2016-08-19T13:13:47.549+0200 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-08-19T13:13:47.550+0200 I NETWORK  [initandlisten] waiting for connections on port 27017

但仍然没有把mongo作为服务的快乐:(

以下是/etc/init/mongod.conf

# Ubuntu upstart file at /etc/init/mongod.conf

# Recommended ulimit values for mongod or mongos
# See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
#
limit fsize unlimited unlimited
limit cpu unlimited unlimited
limit as unlimited unlimited
limit nofile 64000 64000
limit rss unlimited unlimited
limit nproc 64000 64000

kill timeout 300 # wait 300s between SIGTERM and SIGKILL.

pre-start script
  DAEMONUSER=${DAEMONUSER:-mongodb}
  if [ ! -d /var/lib/mongodb ]; then
    mkdir -p /var/lib/mongodb && chown mongodb:mongodb /var/lib/mongodb
  fi
  if [ ! -d /var/log/mongodb ]; then
    mkdir -p /var/log/mongodb && chown mongodb:mongodb /var/log/mongodb
  fi
  touch /var/run/mongodb.pid
  chown $DAEMONUSER /var/run/mongodb.pid
end script

start on runlevel [2345]
stop on runlevel [06]

script
  ENABLE_MONGOD="yes"
  CONF=/etc/mongod.conf 
  DAEMON=/usr/bin/mongod
  DAEMONUSER=${DAEMONUSER:-mongodb}
  DAEMONGROUP=${DAEMONGROUP:-mongodb}

  if [ -f /etc/default/mongod ]; then . /etc/default/mongod; fi

  # Handle NUMA access to CPUs (SERVER-3574)
  # This verifies the existence of numactl as well as testing that the command works
  NUMACTL_ARGS="--interleave=all"
  if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null
  then
    NUMACTL="$(which numactl) -- $NUMACTL_ARGS"
    DAEMON_OPTS=${DAEMON_OPTS:-"--config $CONF"}
  else
    NUMACTL=""
    DAEMON_OPTS="-- "${DAEMON_OPTS:-"--config $CONF"}
  fi

  if [ "x$ENABLE_MONGOD" = "xyes" ]
  then
    exec start-stop-daemon --start \
        --chuid $DAEMONUSER:$DAEMONGROUP \
        --pidfile /var/run/mongodb.pid \
        --make-pidfile \
        --exec $NUMACTL $DAEMON $DAEMON_OPTS
  fi
end script

1 个答案:

答案 0 :(得分:2)

正如其他人写的那样...错误消息指出问题是该过程无法创建/var/lib/mongodb/mongod.lock

你需要明白,即使你说(作为根)'service mongod start'(当你使用sudo -command时,command被执行为root),进程({{1 }})以用户mongod启动。因此,该目录'mongod'必须存在并且可由userid /var/lib/mongodb写入。

mongod