MongoDB 日志切换(Rotate Log Files)实战
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,MongoDB 日志切换(Rotate Log Files)实战1. 在mongo shell下,执行logRotate命令:use admin db.runCommand({logRotate
千家信息网最后更新 2025年11月08日MongoDB 日志切换(Rotate Log Files)实战
MongoDB 日志切换(Rotate Log Files)实战
1. 在mongo shell下,执行logRotate命令:
use admin db.runCommand({logRotate:1})
需要在mongos,mongod,config server运行。
该方式的变种:
a) 在unix shell下运行:
mongo localhost/admin -eval "dbo.runCommand({logRotate:1})"#!/bin/sh ### log rotate mongo localhost/admin -evel "db.runCommand({logRotate:1})" ### compress newly rotated for f in /var/log/mongodb/mongod.log.????-??-??T??-??-??; do 7za a "$f.z" "$f" rm -f "$f" donec) 将如下脚本保存到logRotate.js文件:
db.getMongo().getDB("admin").runCommand({logRotate:1})
创建脚本logRotate.sh:
#!/bin/sh # Clear old logs rm /var/log/mongodb/mongod.log.* # Rotate logs mongo logRotate.js
d) logRotate.sh //写到计划任务crontab即可(需要expect软件包)
#!/usr/bin/expect -f spawn /usr/local/mongodb/bin/mongo admin -udev -ptest -quiet expect ">" send db.runCommand("logRotate") send "\r\n" expect ">" send "exit"2. 使用SIGUSR1信号:
kill -SIGUSR1find /var/log/mongodb/mongodb.log.* -mtime +7 -delete
该方法的变种:
a) 用python写的定时脚本,每天产生一个新的log,超过7天的log自行删除。
#!/bin/env pythonimport sysimport osimport commandsimport datetime,time#get mongo pidmongo_pid = commands.getoutput("/sbin/pidof mongod")print mongo_pid#send Sig to mongoif mongo_pid != '':cmd = "/bin/kill -USR1 %s" %(mongo_pid)print cmdmongo_rotate = commands.getoutput(cmd)else:print "mongod is not running..."#clean log which > 7 daysstr_now = time.strftime("%Y-%m-%d")dat_now = time.strptime(str_now,"%Y-%m-%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 in lns.split('\n'):ws = ln.split()if len(ws) != 2:continuews1 = time.strptime(ws[0],"%Y-%m-%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]))在root下crontab -e编辑定时任务
0 2 * * * /root/mongo_log_rotate.py >/root/null 2>&1
3. 日志管理工具logrotate
自动化的最好方式是使用logrotate,其中copytruncate参数能更好工作。
拷贝以下代码到/etc/logrotate.d/mongodb文件中,确保脚本中的路径和文件名正确。
# vi /etc/logrotate.d/mongodb/var/log/mongodb/*.log {dailyrotate 7compressdateextmissingoknotifemptysharedscriptscopytruncatepostrotate/bin/kill -SIGUSR1 `cat /var/lib/mongo/mongod.lock 2> /dev/null` 2> /dev/null || trueendscript}# logrotate -f /etc/logrotate.d/mongodb4. Mongodb bug
mongodb稳定性差强人意。在切换过程中也会导致mongodb进程终止。
具体内容可以查看下mongodb bug系统:SERVER-4739、SERVER-3339。
脚本
文件
日志
切换
任务
变种
方式
运行
实战
差强人意
代码
信号
内容
参数
命令
工具
拷贝
文件名
方法
最好
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发售后是干嘛
南宁青秀区公安局网络技术岗
网络安全信息化平台建设方案
财政部软件开发公司
芜湖oa管理软件开发定制
苏州正规软件开发定制费用
金山区品牌软件开发不二之选
linux平台软件开发
Vue tcp服务器
财务要求要金蝶数据库
企业密信的服务器大全
二零一八网络安全宣传周
饥荒为什么无法到达科雷服务器
梦幻西游服务器和商人比例
如何部署java服务器
计算机网络技术大一期末考试
企业网络安全技术外文文献
js 显示数据库图片路径
湖南造it服务器云主机
省直网络安全员面试技能操作
部分服务器连接交换机灯不亮
地点坐标数据库
诺顿网络安全官网
斗战神与服务器断开
赤壁市宇宇网络技术工作室
县区缺乏网络安全方面人才
物联网技术手机软件开发项目
建邺区软件开发质量推荐
神奇宝贝服务器苹果版
安徽网络安全非标机箱制造厂