前些天,一位开发同事找到我,说他测试环境的 mongodb 经常挂掉,要我写一个监控或复活的脚本。我觉得很奇怪,测试环境又没啥负载,经常挂掉肯定有非常规原因。
跑过去看了一下日志,发现存在 stop 记录,我就纳闷了,没人操作他还会自己 stop。这明显不是挂掉了,于是到 history 中看了下同事的启动命令:
1 |
/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/data/mongodb.log --logappend & |
原来如此!因为他没有用 nohup 启动,所以只要他的终端离线或者关闭,mongodb 就会自动退出了!解决办法很简单,如下启动即可:
1 |
nohup /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/data/mongodb.log --logappend >/dev/null 2>&1 & |
这样敲命令也着实苦逼,所以从网上找了一个 mongodb 服务脚本就舒服多了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
#!/bin/sh # #mongod - Startup script for mongod # # chkconfig: - 85 15 # description: Mongodb database. # processname: mongod # Source function library . /etc/rc.d/init.d/functions # things from mongod.conf get there by mongod reading it # OPTIONS OPTIONS=" --dbpath=/home/data/mongodb/ --logpath=/home/data/mongodb/mongodb.log --logappend &" #mongod mongod="/usr/local/mongodb/bin/mongod" lockfile=/var/lock/subsys/mongod start() { echo -n $"Starting mongod: " daemon $mongod $OPTIONS RETVAL=$? echo [ $RETVAL -eq 0 ] && touch $lockfile } stop() { echo -n $"Stopping mongod: " killproc $mongod -QUIT RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f $lockfile } restart () { stop start } ulimit -n 12000 RETVAL=0 case "$1" in start) start ;; stop) stop ;; restart|reload|force-reload) restart ;; condrestart) [ -f $lockfile ] && restart || : ;; status) status $mongod RETVAL=$? ;; *) echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}" RETVAL=1 esac exit $RETVAL |
将代码保存到 /etc/init.d/mongodb,然后使用 chmod +x /etc/init.d/mongodb 添加执行权限。
现在,就可以使用 service 命令来控制 mongodb 了:
1 2 3 |
service mongodb start|stop|restart #或 /etc/init.d/mongodb start|stop|restart |
非常简单,贴到博客记录一下,以备不时之需。
2015年06月06日 am12:40
这块我不懂,就来水一下吧。
因为我想要看看能否抢到沙发!!!
2015年06月08日 am10:34
楼上的不要闹好吗,不就是点英文字母,拼凑出来的额
2015年06月09日 pm9:08
看评价也够搞笑的,原来一篇我看不懂的文章,也能会搞笑的评论。英语我还真只认识单个的。楼上告诉我,能写汉字就能写文章了。我回去写小说去
2015年06月09日 pm10:02
2015年06月10日 pm12:27
我真想问问,都是怎么学会的?看着我就头疼。。。
2016年06月04日 am10:59
谢谢博主分享。 很不错的文章。
2016年06月12日 am11:38
我去 就我一个人看不懂吗。
2016年08月23日 pm2:46
感觉Mongodb用着别扭,还是MySQL用着习惯