MongoDB 在 Ubuntu 14.04 LTS 上重启系统后无法启动
MongoDB can not start after restart the system on Ubuntu 14.04 LTS
我已经根据官方安装指南在 ubuntu 14.04 上安装了 mongoDB:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
我使用"mongod"进入终端,一切正常。
但是当我关闭 ubuntu 并重新启动它时,命令 'mongod' 无法启动,出现以下错误:
2015-01-30T15:47:51.582-0800 [initandlisten] allocator: tcmalloc
2015-01-30T15:47:51.582-0800 [initandlisten] options: {}
2015-01-30T15:47:51.583-0800 [initandlisten] exception in initAndListen: 10296
*********************************************************************
ERROR: dbpath (/data/db) does not exist.
Create this directory or give existing directory in --dbpath.
See http://dochub.mongodb.org/core/startingandstoppingmongo
*********************************************************************
, terminating
之后,我尝试创建文件夹并使用以下命令对其进行 chmod:
sudo mkdir -p /data/db/
sudo chown `id -u` /data/db
但是又发生了一个错误:
2015-01-30T16:01:43.855-0800 [initandlisten] allocator: tcmalloc
2015-01-30T16:01:43.855-0800 [initandlisten] options: {}
2015-01-30T16:01:43.859-0800 [initandlisten] journal dir=/data/db/journal
2015-01-30T16:01:43.859-0800 [initandlisten] recover : no journal files present, no recovery needed
2015-01-30T16:01:43.994-0800 [initandlisten] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
2015-01-30T16:01:43.994-0800 [initandlisten] ERROR: addr already in use
2015-01-30T16:01:43.994-0800 [initandlisten] allocating new ns file /data/db/local.ns, filling with zeroes...
2015-01-30T16:01:44.197-0800 [FileAllocator] allocating new datafile /data/db/local.0, filling with zeroes...
我也找了/etc/mongod.conf,
# Where to store the data.
# Note: if you run mongodb as a non-root user (recommended) you may
# need to create and set permissions for this directory manually,
# e.g., if the parent directory isn't mutable by the mongodb user.
dbpath=/var/lib/mongodb
#where to log
logpath=/var/log/mongodb/mongod.log
logappend=true
#port = 27017
我发现默认数据存储文件夹不是/data/db
我试过其他方法,比如
sudo service mongod stop
sudo service mongod restart
但它们根本不起作用。
系统启动时可能已经有另一个实例运行,但我该如何停止它?
ERROR: addr already in use
确实意味着您已经有另一个实例 运行。
您是否尝试过:
- 在终端输入
mongo
,看是否连上服务器?
- 检查
/var/log/mongodb/mongod.log
中的日志?他们是否告诉您实例已启动?
- 键入
ps -edf | grep mongod
并查看是否有进程是 运行?我想这不是一个好的做法,但是如果出现了,你是否尝试 kill
它,然后再次键入 mongod
?
Aynway,你可能想尝试两件事:
- 当您键入
sudo service mongod stop
并在 sudo service mongod restart
之前,尝试在终端中键入 mongod
。正如您通常停止 运行 实例一样,您应该能够启动自己的
- 您可以尝试启动另一个实例。为此,您必须至少指定
port
(并选择与默认不同的一个),最好是 dbpath
(确保选择一个已经存在的目录路径) .您可以在命令行上执行此操作,例如:
$ mongod --port 28000 --dbpath /path/to/your/db
或者您可以创建自己的 mongodb.conf
,在默认的基础上,更改 port
和 dbpath
的值,然后开始 mongod
指定路径这个配置文件:
$ mongod -f /path/to/your/mongod.conf
我已经根据官方安装指南在 ubuntu 14.04 上安装了 mongoDB:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
我使用"mongod"进入终端,一切正常。
但是当我关闭 ubuntu 并重新启动它时,命令 'mongod' 无法启动,出现以下错误:
2015-01-30T15:47:51.582-0800 [initandlisten] allocator: tcmalloc
2015-01-30T15:47:51.582-0800 [initandlisten] options: {}
2015-01-30T15:47:51.583-0800 [initandlisten] exception in initAndListen: 10296
*********************************************************************
ERROR: dbpath (/data/db) does not exist.
Create this directory or give existing directory in --dbpath.
See http://dochub.mongodb.org/core/startingandstoppingmongo
*********************************************************************
, terminating
之后,我尝试创建文件夹并使用以下命令对其进行 chmod:
sudo mkdir -p /data/db/
sudo chown `id -u` /data/db
但是又发生了一个错误:
2015-01-30T16:01:43.855-0800 [initandlisten] allocator: tcmalloc
2015-01-30T16:01:43.855-0800 [initandlisten] options: {}
2015-01-30T16:01:43.859-0800 [initandlisten] journal dir=/data/db/journal
2015-01-30T16:01:43.859-0800 [initandlisten] recover : no journal files present, no recovery needed
2015-01-30T16:01:43.994-0800 [initandlisten] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
2015-01-30T16:01:43.994-0800 [initandlisten] ERROR: addr already in use
2015-01-30T16:01:43.994-0800 [initandlisten] allocating new ns file /data/db/local.ns, filling with zeroes...
2015-01-30T16:01:44.197-0800 [FileAllocator] allocating new datafile /data/db/local.0, filling with zeroes...
我也找了/etc/mongod.conf,
# Where to store the data.
# Note: if you run mongodb as a non-root user (recommended) you may
# need to create and set permissions for this directory manually,
# e.g., if the parent directory isn't mutable by the mongodb user.
dbpath=/var/lib/mongodb
#where to log
logpath=/var/log/mongodb/mongod.log
logappend=true
#port = 27017
我发现默认数据存储文件夹不是/data/db
我试过其他方法,比如
sudo service mongod stop
sudo service mongod restart
但它们根本不起作用。
系统启动时可能已经有另一个实例运行,但我该如何停止它?
ERROR: addr already in use
确实意味着您已经有另一个实例 运行。
您是否尝试过:
- 在终端输入
mongo
,看是否连上服务器? - 检查
/var/log/mongodb/mongod.log
中的日志?他们是否告诉您实例已启动? - 键入
ps -edf | grep mongod
并查看是否有进程是 运行?我想这不是一个好的做法,但是如果出现了,你是否尝试kill
它,然后再次键入mongod
?
Aynway,你可能想尝试两件事:
- 当您键入
sudo service mongod stop
并在sudo service mongod restart
之前,尝试在终端中键入mongod
。正如您通常停止 运行 实例一样,您应该能够启动自己的 - 您可以尝试启动另一个实例。为此,您必须至少指定
port
(并选择与默认不同的一个),最好是dbpath
(确保选择一个已经存在的目录路径) .您可以在命令行上执行此操作,例如:
$ mongod --port 28000 --dbpath /path/to/your/db
或者您可以创建自己的 mongodb.conf
,在默认的基础上,更改 port
和 dbpath
的值,然后开始 mongod
指定路径这个配置文件:
$ mongod -f /path/to/your/mongod.conf