mysql 日志归档(slow log和 error log)

简介:mysql 日志slow log和 error log归档,发现还挺麻烦的。因为如果是大文件的话,比如大于200g,如果直接copy的话,就会把IO打满,影响mysql的生产业务。

一 、安全清理mysql 日志文件

脚本首先处理掉大的日志文件,因为logrotate轮转时是先copy,然后再清理日志文件,会打满磁盘IO。

1、把日志文件slow log和error log重命名;

2、然后进入mysql运行

flush slow logs;

flush error logs;

可以从新生成新的slow log和error log日志文件。

然后使用linux 大文件安全清理脚本,就可以安全删除文件了。

二、处理完大日志文件,可以再通过logrotate进行日志轮转:

logrotate的配置如下:

vim /etc/logrotate.d/mysql

/data/logs01/mysql-error.log{
    weekly
    rotate 30
    missingok
    dateext
    olddir  /data/log_bak
    maxsize 500M
    copytruncate
    nocompress
    dateformat -%Y%m%d.%s
}
 
/data/logs01/mysql-slow.log{
    weekly
    rotate 30
    missingok
    dateext
    olddir   /data/log_bak
    maxsize 500M
    copytruncate
    nocompress
    dateformat -%Y%m%d.%s
}

参数说明

     1)log文件大小参数,单位可以为K,M,G

  • size
    触发分割的条件是:1.日志大小达到这个值,和时间周期没有关系。
  • minisize
    触发分割的条件是:1.时间周期到了,2.日志大小达到这个值;两个条件都要满足。
  • maxsize
    触发分割的条件是:1.时间周期到了,2. 日志大小大于这个值;两个条件任何一个满足。

      注意:maxsize 要生效要自己配置定时任务探测周期

        比如:crontab -l

         * */4 * * * /etc/cron.daily/logrotate

     2)daily 指定转储周期为每天   weekly 指定转储周期为每周   monthly 指定转储周期为每月

     3) rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
     4) dateext 使用当期日期作为命名格式
       dateformat .%s 配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数 

      5) copytruncate 如果没有这个选项的话,操作方式:是将原log日志文件,移动成类似log.1的旧文件, 然后创建一个新的文件。如果设置了,操作方式为拷贝原日志文件,并且将其变成大小为0的文件。

      6) missingok 如果日志丢失,不报错继续滚动下一个日志

      7)olddir 备份目录

三、生产环境配置:

1 通过以上分析不想使用crontab的话,就只能使用maxsize参数来根据大小进行分割了。

logrotate配置如下:

/data/logs01/mysql-error.log{
    weekly
    rotate 30
    missingok
    dateext
    olddir  /data/log_bak
    maxsize 500M
    copytruncate
    nocompress
    dateformat -%Y%m%d.%s
}
 
/data/logs01/mysql-slow.log{
    weekly
    rotate 30
    missingok
    dateext
    olddir   /data/log_bak
    maxsize 500M
    copytruncate
    nocompress
    dateformat -%Y%m%d.%s
}

使logrotate每个小时去检查运行一次:

mv  /etc/cron.daily/logrotate  /etc/cron.hourly/  

总结:以上配置会让日志文件大于500M时就会进行日志切割,而不依赖于时间(weekly)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值