zoukankan      html  css  js  c++  java
  • logrotate实现Mysql慢日志分割

    MySQL慢日志?

      MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10s以上的语句。
      默认情况下,MySQL数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志或多或少会带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。

    慢日志产生情况?

      第一执行时间过长(大于设置的long_query_time阈值);第二未使用索引,或者未使用最优的索引。

      这两种日志默认都是关闭状态,特别是未使用索引的日志,因为这一类的日志可能会有很多,所以还有个特别的开关log_throttle_queries_not_using_indexes用于限制每分钟输出未使用索引的日志数量。

    慢日志输出

      MySQL慢查询日志默认情况下都是统统写入一个文件中,文件会越来越大,非常不方便我们分析。利用logrotate来对MySQL慢查询日志、错误日志进行切割,便于分析和查找问题。

    定义日志论滚策略 

    [root@IDC_db_40 ~]# cat mysql-log-rotate
    /opt/mysql/data/IDC_db_40-slow.log {
    create 600 mysql mysql
    dateext
    notifempty
    daily
    maxage 60
    rotate 30
    missingok
    compress
    olddir /opt/mysql/data/
    postrotate
    # just if mysqld is really running
    if test -x /opt/mysql/bin/mysqladmin &&
    /opt/mysql/bin/mysqladmin ping -uroot -p123qwe,./ -S /tmp/mysql.sock &>/dev/null
    then
    /opt/mysql/bin/mysqladmin flush-logs -uroot -p123qwe,./ -S /tmp/mysql.sock
    fi
    endscript
    }

    设置计划任务

    59 23 * * * /usr/sbin/logrotate -f mysql-log-rotate 

    #每天23:59进行日志分割

    效果展示

    每天都会生成一个压缩包非常方便管理!!!

  • 相关阅读:
    [代码审计]eyoucms前台未授权任意文件上传
    第二届i春秋挖洞大赛的一些感想
    [代码审计]云ec电商系统代码审计
    [代码审计]covercms 后台getshell
    RPO漏洞学习
    [漏洞分析]phpyun系统重装安全隐患#影响从phpyun4.2部分,4.3到4.5全版本
    css块级元素居中
    Linux常用网站
    Linux常用命令
    C#编程网站
  • 原文地址:https://www.cnblogs.com/JeremyWYL/p/8366396.html
Copyright © 2011-2022 走看看