MongoDB 日志切换(Rotate Log Files)实战
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,MongoDB 日志切换(Rotate Log Files)实战1. 在mongo shell下,执行logRotate命令:use admin db.runCommand({logRotate
千家信息网最后更新 2025年02月23日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" done
c) 将如下脚本保存到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/mongodb
4. Mongodb bug
mongodb稳定性差强人意。在切换过程中也会导致mongodb进程终止。
具体内容可以查看下mongodb bug系统:SERVER-4739、SERVER-3339。
脚本
文件
日志
切换
任务
变种
方式
运行
实战
差强人意
代码
信号
内容
参数
命令
工具
拷贝
文件名
方法
最好
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全知识普及材料
互联网科技与政府治理社科院
深圳网红互联网科技有限公司
账无忧怎么登录数据库
前瞻数据库会员开通了怎么退
中国云服务器租用排名
领英 软件开发
arm小服务器可用的网盘系统
服务器安装网站安全狗
labview软件开发方案
夺境网络技术有限公司
网络安全法中的网络安全是指
服务器跑码
数据库提取数据软件
网络技术带来的红利
nba命中率数据库
五十步笑百步翻译软件开发
开源数据库技术栈
如何查看表格个数据库
宝山区上门软件开发厂家哪个好
软件开发人员的素质
深圳市吉屋网络技术有限公司招聘
北京erp 软件开发承诺守信
四川南充网络安全宣传
山西综合软件开发费用
云服务器远程频繁断线
海阳直播软件开发公司有哪些
软件开发繁杂的事务
海洋生态软件开发
看家狗软件开发