MongoDB日志切割 分割日志的几个方法

发表时间:2019-08-19 11:21 | 分类:数据库运维 | 浏览:2,336 次

默认安装好MongoDB后是没有日志分割的。比如搭建MongoDB副本集,运行一段时间后发现日志文件变的很大。过大的日志文件造成磁盘空间浪费,写入性能降低,而且在大文件中查找问题麻烦。虽然MongoDB提供了关闭日志的配置参数,但官方不推荐。那么为了避免实际使用中一个日志文件过大,我们需要对日志进行切割。

MongoDB提供了一个 “systemLog.logRotate” 参数,可配置 rename 或者 reopen,默认是rename。

官方文档:https://docs.mongodb.com/v3.2/reference/configuration-options/#systemLog.logRotate

例如配置文件:

# where to write logging data.
systemLog:
  verbosity: 0
  destination: file
  logAppend: true
  logRotate: rename
  path: /var/log/mongodb/mongod27017.log

Rename

姑且根据字面意思认为是重命名,官方文档中也没有找到其他详细的说明。向MongoDB进程发送 SIGUSR1 信号,会自动切割日志,例如老日志文件以 mongodb27017.log.2019-08-19T11:00:00 保存。写脚本配置crontab实现日志切割。

脚本:

#!/bin/sh

datafile=/var/run/mongodb
logfile=/var/log/mongodb
days=15
/bin/kill -SIGUSR1 `cat $datafile/mongod27017.pid`

find $logfile/ -mtime +$days -delete

计划任务:

0 0 * * * /root/scripts/mongodb_log_rotate.sh > /dev/null 2>&1 &

Reopen

通过Linux或者Unix系统的logrotate工具关闭和重新打开文件,在使用logrotate时要设置成reopen模式,可以避免日志丢失。同时开启这个配置后需要确认 systemLog.logAppend 是true。修改配置后重启MongoDB 。

在/etc/logrotate.d/目录下新建一个名为mongod的文件,加上如下内容:

/var/log/mongodb/*.log {
    create 0644 mongod mongod
    daily
    rotate 30
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /var/run/mongodb/mongod27017.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

通过这两种方法都可以实现日志分割,个人使用的是 reopen + logrotate 的方案。

参考:

MongoDB安装:https://zhangnq.com/2927.html

MongoDB副本集搭建:https://zhangnq.com/2933.html

日志分割:https://www.jianshu.com/p/c3cf130bbf78

本文标签:

本文链接:https://www.sijitao.net/3081.html

欢迎您在本博客中留下评论,如需转载原创文章请注明出处,谢谢!

已经有4个回复
Comment (4)
Trackbacks (0)
  1. bnvh  ( 2019.08.24 20:28 ) : #-9

    电商专用快递网站,空包网,单号网www.danhw.com

  2. 大闸蟹礼券批发  ( 2019.08.26 08:18 ) : #-8

    :!: :cool: 优秀

  3. 小姚工作室  ( 2019.08.26 19:47 ) : #-7

    厉害了,我记得我们公司使用的nginx软件txt日志都4G多了,根本无法打开了,原来还能日志分割啊!学习了 :arrow:

    • 章郎虫  ( 2019.08.27 09:01 ) :

      是的,日志大很不好管理,logrotate其实是老技术了。

  1. 还没有Trackbacks
一键脚本 博客历程 留言联系 文章归档 网站地图 谷歌地图
Copyright © 2010-2024 章郎虫博客 All Rights Reserved.