|
Complete! 升级完成后,我们来试着启动下服务:
[root@mysql-master mongo]# /etc/init.d/mongod start
Starting mongod: all output going to: /var/log/mongo/mongod.log
forked process: 11577
[FAILED]
糟糕,服务启不来,我们换下别的启动方法.
[root@mysql-master mongo]# which mongod
/usr/bin/mongod
[root@mysql-master mongo]# /usr/bin/mongod -f /etc/mongod.conf
forked process: 11590
all output going to: /var/log/mongo/mongod.log
child process started successfully, parent exiting
我们来看一下,唉,这样是能正常启动的.
[root@mysql-master mongo]# ps -ef | grep mongo
root 11590 1 2 10:58 ? 00:00:00 /usr/bin/mongod -f /etc/mongod.conf
root 11601 11451 0 10:58 pts/0 00:00:00 grep mongo
既然服务启动了,我们来看一下能不能连接:
[root@mysql-master mongo]# mongo
MongoDB shell version: 2.2.0
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
> use admin
switched to db admin
> db.auth("root","redhat")
1
> show dbs
admin 0.203125GB
jzf 0.203125GB
local 0.203125GB
test 0.203125GB
> use jzf
switched to db jzf
> show collections
blog
food
myself
system.indexes
system.users
test
test.test
user
> db.food.find()
{ "_id" : 1, "fruit" : [ "apple", "banana", "peach", "strawberry" ] }
{ "_id" : 2, "fruit" : [ "apple", "orange", "peach", "strawberry" ] }
{ "_id" : 3, "fruit" : [ "cherry", "orange", "peach", "strawberry" ] }
{ "_id" : 4, "fruit" : [ "cherry", "orange", "kumquat", "strawberry" ] }
> exit
bye
由上面可以看出,服务器版本上升了(原来的2.0.7升到了2.2.0).而且原来的数据都在!突然感觉备不备份都没差,当然生产环境中最好别偷懒.
可是为什么我们之前的第一种方式服务启不来呢,下面的操作是我试图再次用那种方式启动:
[root@mysql-master mongo]# ps -ef | grep mongo
root 11590 1 0 10:58 ? 00:00:01 /usr/bin/mongod -f /etc/mongod.conf
root 11618 11451 0 11:26 pts/0 00:00:00 grep mongo
[root@mysql-master mongo]# kill -2 11590
[root@mysql-master mongo]# ps -ef | grep mongo
root 11621 11451 0 11:26 pts/0 00:00:00 grep mongo
[root@mysql-master mongo]# /etc/init.d/mongod restart
Stopping mongod: [FAILED]
Starting mongod: all output going to: /var/log/mongo/mongod.log
forked process: 11639
[FAILED]
还是启不来,我们来看看日志,看到底是什么原因
[root@mysql-master mongo]# vim /var/log/mongo/mongod.log
Thu Aug 16 11:27:10 [initandlisten] opening db: test
Thu Aug 16 11:27:10 [initandlisten] couldn't open /var/lib/mongo/test.ns errno:13 Permission denied
Thu Aug 16 11:27:10 [initandlisten] error couldn't open file /var/lib/mongo/test.ns terminating
Thu Aug 16 11:27:10 dbexit:
Thu Aug 16 11:27:10 [initandlisten] shutdown: going to close listening sockets...
Thu Aug 16 11:27:10 [initandlisten] shutdown: going to flush diaglog...
Thu Aug 16 11:27:10 [initandlisten] shutdown: going to close sockets...
Thu Aug 16 11:27:10 [initandlisten] shutdown: waiting for fs preallocator...
Thu Aug 16 11:27:10 [initandlisten] shutdown: lock for final commit...
Thu Aug 16 11:27:10 [initandlisten] shutdown: final commit...
Thu Aug 16 11:27:10 [initandlisten] shutdown: closing all files...
Thu Aug 16 11:27:10 [initandlisten] closeAllFiles() finished
Thu Aug 16 11:27:10 [initandlisten] journalCleanup...
Thu Aug 16 11:27:10 [initandlisten] removeJournalFiles
Thu Aug 16 11:27:10 [initandlisten] flushing directory /var/lib/mongo/journal
Thu Aug 16 11:27:10 [initandlisten] removeJournalFiles end
Thu Aug 16 11:27:10 [initandlisten] shutdown: removing fs lock...
Thu Aug 16 11:27:10 dbexit: really exiting now
打开日志一看,很明显的字眼映入眼帘:errno:13 Permission denied,这种错误信息太常见了!第一感觉当然是看数据库的目录权限咯:
[root@mysql-master mongo]# ls -l /var/lib/mongo/
total 852856
-rw------- 1 root root 67108864 Aug 14 23:21 admin.0
-rw------- 1 root root 134217728 Aug 14 23:28 admin.1
-rw------- 1 root root 16777216 Aug 14 23:21 admin.ns
drwxr-xr-x 2 mongod mongod 4096 Aug 16 11:34 journal
-rw------- 1 root root 67108864 Aug 15 00:36 jzf.0
-rw------- 1 root root 134217728 Aug 15 02:45 jzf.1
-rw------- 1 root root 16777216 Aug 15 00:36 jzf.ns
-rw------- 1 mongod mongod 67108864 Aug 14 12:50 local.0
-rw------- 1 mongod mongod 134217728 Aug 14 18:50 local.1
-rw------- 1 mongod mongod 16777216 Aug 14 12:50 local.ns
-rwxr-xr-x 1 mongod mongod 0 Aug 16 11:34 mongod.lock
drwxr-xr-x 2 root root 4096 Aug 15 02:35 test
-rw------- 1 root root 67108864 Aug 15 02:35 test.0
-rw------- 1 root root 134217728 Aug 15 02:45 test.1
-rw------- 1 root root 16777216 Aug 15 02:35 test.ns
看到这里,我想大家应该明白,为什么后面那种方法能正常启动了.那么我们来改一下目录权限,看看前面那种启动方式能不能正常启动服务:
[root@mysql-master mongo]# chown -R mongod. /var/lib/mongo/
[root@mysql-master mongo]# ls -l /var/lib/mongo/
total 852856
-rw------- 1 mongod mongod 67108864 Aug 14 23:21 admin.0
-rw------- 1 mongod mongod 134217728 Aug 14 23:28 admin.1
-rw------- 1 mongod mongod 16777216 Aug 14 23:21 admin.ns
drwxr-xr-x 2 mongod mongod 4096 Aug 16 11:34 journal
-rw------- 1 mongod mongod 67108864 Aug 15 00:36 jzf.0
-rw------- 1 mongod mongod 134217728 Aug 15 02:45 jzf.1
-rw------- 1 mongod mongod 16777216 Aug 15 00:36 jzf.ns
-rw------- 1 mongod mongod 67108864 Aug 14 12:50 local.0
-rw------- 1 mongod mongod 134217728 Aug 14 18:50 local.1
-rw------- 1 mongod mongod 16777216 Aug 14 12:50 local.ns
-rwxr-xr-x 1 mongod mongod 0 Aug 16 11:34 mongod.lock
drwxr-xr-x 2 mongod mongod 4096 Aug 15 02:35 test
-rw------- 1 mongod mongod 67108864 Aug 15 02:35 test.0
-rw------- 1 mongod mongod 134217728 Aug 15 02:45 test.1
-rw------- 1 mongod mongod 16777216 Aug 15 02:35 test.ns
[root@mysql-master mongo]# /etc/init.d/mongod start
Starting mongod: forked process: 11703
all output going to: /var/log/mongo/mongod.log
child process started successfully, parent exiting
[ OK ]
正常启动了.那么这两种方法倒底有什么不同的地方呢?我们来看一下mongod的启动脚本
[root@mysql-master ~]# vim /etc/init.d/mongod
......
MONGO_USER=mongod
MONGO_GROUP=mongod
......
start()
{
echo -n $"Starting mongod: "
daemon --user "$MONGO_USER" $NUMACTL $mongod $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod
}
原来,mongod启动脚本中服务启动的用户是mongod,而用后一种方法启动用户是root.那么服务启不了,报权限被拒绝也是很正常的事啦.下面我们来分别看下:
|
|
|