1、首先使用ps -ef查找进程的执行语句并保留它;这个的目的是保留进程执行的参数不变;
例如,重启单个mongodb的过程:
查找:
1
ps -ef|grep mongod
获得:
1
root 2928 2903 0 14:51 pts/0 00:00:00 grep /usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf
2、使用kill -9 PID杀掉该进程;
1
kill -9 2928
3、使用保留的进程语句重启进程;
执行:
1
/usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf
即可。
1、首先使用ps -ef查找进程的执行语句并保留它;这个的目的是保留进程执行的参数不变;例如重启单个mongodb的过程:
查找:ps -ef|grep mongod
获得:
root 2928 2903 0 14:51 pts/000:00:00 grep /usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf
2、使用kill -9 PID杀掉该进程;
kill -9 2928
3、使用保留的进程语句重启进程;
/usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf
按照常理,把如下命令/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/m.log --directoryperdb
放在/etc/rc.local文件中就可以实现开机自启动了,第一次重启机器发现mongodb顺利启动了,再次重启机器后,通过ps没有查看到相应mongod进程,也就是启动失败了。原因是由于重启机器,导致非正常停止mongod服务,mongod.lock中还记录了上次运行的进程号,为了数据的安全需要执行
/usr/local/mongodb/bin/mongod –repair,
当然如果直接把mongod.lock文件删除也可以重新启动了,例如:
/usr/local/mongodb/bin/mongod --repair
/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/m.log --directoryperdb
或
rm -rf /data/db/mongod.lock
/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/m.log --directoryperdb
注意上述启动Mongodb都是没有增加journal参数,如果带了此参数就不会那么麻烦了,例如
/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/m.log --directoryperdb --journal就可以了,就算是非正常重启机器,mongodb也会根据日志去修复数据库的。
另外,如果mongodb的数据目录是通过mount的NFS文件夹,自启动好像有问题的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)