MongoDB日志切换(旋转日志文件)实战
,
<强> 1。在mongo shell下,执行logRotate命令:强>,,
use admin ,,, db.runCommand ({logRotate: 1})
需要在蒙戈,mongod,配置服务器运行。
该方式的变种:
)在unix shell下运行:,
mongo localhost/admin -eval “dbo.runCommand {logRotate: 1} "
,
db.getMongo () .getDB (“admin”) .runCommand ({logRotate: 1})
创建脚本logRotate。承宪:,,
# !/bin/sh ,,, #,Clear old  logs ,,, rm /var/log/mongodb/mongod.log。*,,,, #,Rotate logs ,,, mongo logRotate.js
,
d) logRotate。sh//写到计划任务crontab即可(需要期待软件包),
# !/usr/bin/expect -f ,,, spawn /usr/地方/mongodb/bin/mongo admin -udev -ptest -quiet ,,, expect “在”,,,, send db.runCommand (“logRotate”),,,, send “\ r \ n”,,,, expect “在”,,,, send “退出”
,
<强> 2。使用SIGUSR1信号:强>,,
kill -SIGUSR1 & lt; mongod process id>,,,, find /var/log/mongodb/mongodb.log。*, -mtime + 7,删除
该方法的变种:
)用python写的定时脚本,每天产生一个新的日志,超过7天的日志自行删除。
# !/bin/env python import 系统 import 操作系统 import 命令 import datetime,时间 # get mongo pid 时间=mongo_pid commands.getoutput (“/sbin/pidof mongod”) print mongo_pid # send Sig 用mongo if mongo_pid  !=,”: cmd =, "/bin/kill -USR1 % s”, % (mongo_pid) print cmd 时间=mongo_rotate commands.getoutput (cmd) 其他: print “mongod is not 运行……” # clean log which 祝辞,7天 Y=str_now time.strftime (“% - % - % d”) 时间=dat_now time.strptime (str_now“Y % - % - % d”) 时间=array_dat_now datetime.datetime (dat_now [0], dat_now [1], dat_now [2]) lns =, commands.getoutput (“/bin/ls ——full-time /var/log/mongodb/| awk “{print 6美元,9美元}’”) for ln  lns.split拷贝(“\ n”): 时间=ws ln.split () if len (ws), !=, 2: 继续 时间=ws1 time.strptime (ws [0],“Y % - % - % d”) 时间=ws2 datetime.datetime (ws1 [0], ws1 [1], ws1 [2]) if (array_dat_now 作用;ws2) .days 祝辞,7: v_del =, commands.getoutput (“/bin/rm -rf /var/log/mongodb//% s”, %, (ws [1]))
,
在根下crontab - e编辑定时任务
0,2,*,*,*,/根/mongo_log_rotate.py 祝辞/根/null 2祝辞,1
,
<强> 3。日志管理工具logrotate 强>
自动化的最好方式是使用logrotate,其中copytruncate参数能更好工作。
拷贝以下代码到/etc/logrotate。d/mongodb文件中,确保脚本中的路径和文件名正确。
#,vi /etc/logrotate.d/mongodb/var/log/mongodb/* .log { 每天 rotate 7 压缩 dateext missingok notifempty sharedscripts copytruncate postrotate/bin/kill -SIGUSR1  cat /var/lib/mongo/mongod.lock 2祝辞,/dev/null”, 2祝辞,/dev/null | |,真的 endscript } #,logrotate -f /etc/logrotate.d/mongodb
,
<强> 4。Mongodb bug 强>,,
mongodb稳定性差强人意。在切换过程中也会导致mongodb进程终止。,,
具体内容可以查看下mongodb虫系统:服务器- 4739,服务器- 3339。