利用logrotate对MySQL日志进行轮转下载

系统大全为您分享

[Linux] 利用logrotate对MySQL日志进行轮转 日志轮转特别适用于具有固定文件名的日志文件,比如MySQL的出错日志、常规查询日志、慢查询日志等。Linux系统有一个非常好用的根据logratate可以实现自动轮转,本文介绍它的原理和用法。默认情况下,logratate部署为每天运行的cron job,你可以在目录/etc/cron.daily里找到名为logratate的配置文件。那么它是在每天的上面时候运行的呢?打开文件/etc/crontab就知道了,下面是我机器上的情况:[plain] SHELL=/bin/bash  PATH=/sbin:/bin:/usr/sbin:/usr/bin  MAILTO=root  HOME=/    # run-parts  01 * * * * root run-parts /etc/cron.hourly  02 4 * * * root run-parts /etc/cron.daily  22 4 * * 0 root run-parts /etc/cron.weekly  42 4 1 * * root run-parts /etc/cron.monthly  从上面的配置我们可以知道,/etc/cron.daily是在每天凌晨4:02执行。也就是说,每天4:02分/etc/cron.daily/logratate将会自动执行,下面是它的内容:[plain] #!/bin/sh    /usr/sbin/logrotate /etc/logrotate.conf  EXITVALUE=$?  if [ $EXITVALUE != 0 ]; then      /usr/bin/logger -t logrotate “ALERT exited abnormally with [$EXITVALUE]”  fi  exit 0  从上面我们可以知道,logratate默认的配置文件是/etc/logratate.conf,下面是它的内容:[plain] EXITVALUE=$?  if [ $EXITVALUE != 0 ]; then      /usr/bin/logger -t logrotate “ALERT exited abnormally with [$EXITVALUE]”  fi  exit 0  [root@lx202 /etc/cron.daily ]# cat /etc/logrotate.conf  # see “man logrotate” for details  # rotate log files weekly  weekly    # keep 4 weeks worth of backlogs  rotate 4    # create new (empty) log files after rotating old ones  create    # uncomment this if you want your log files compressed  #compress    # RPM packages drop log rotation information into this directory  include /etc/logrotate.d    # no packages own wtmp — we'll rotate them here  /var/log/wtmp {      monthly      minsize 1M      create 0664 root utmp      rotate 1  }    /var/log/btmp {      missingok      monthly      minsize 1M      create 0600 root utmp      rotate 1  }  从上面我们可以知道,这个默认的配置文件将读取目录/etc/logrotate.d,所以我们只要把自己写的配置文件放到该目录下即可。MySQL本省分享了一个rotate的参考配置文件,在support-files目录下,文件名为mysql-log-rotate,内容如下:[plain] # This logname can be set in /etc/my.cnf  # by setting the variable “err-log”  # in the [safe_mysqld] section as follows:  #  # [safe_mysqld]  # err-log=/opt/mysql/data/mysqld.log  #  # If the root user has a password you have to create a  # /root/.my.cnf configuration file with the following  # content:  #  # [mysqladmin]  # password =  # user= root  #  # where “” is the password.  #  # ATTENTION: This /root/.my.cnf should be readable ONLY  # for root !    /opt/mysql/data/mysqld.log {          # create 600 mysql mysql          notifempty          daily          rotate 3          missingok          compress      postrotate          # just if mysqld is really running          if test -x /opt/mysql/bin/mysqladmin &&             /opt/mysql/bin/mysqladmin ping &>/dev/null          then             /opt/mysql/bin/mysqladmin flush-logs          fi      endscript  }  logrotate常见选项:选项 含义compress 压缩日志文件的所有非当前版本copy 复制当前的日志文件,忽略create参数copytruncate 复制当前的日志文件,并置空当前文件daily 每天轮日志文件idateext 轮换的日志后缀为-YYYYMMDD格式delaycompress 压缩除了当前和最近之外的所有其他版本missingok 如果知识兔日志不存在,不会报错notifempty 如果知识兔日志为空,则不轮换rotate n 在轮换方案中包含n个版本的日志size=logsize 如果知识兔日志文件大于logsize才轮换我们只要根据自己的需要,修改相应配置即可,下面是一个例子:1)创建MySQL root密码文件vi /root/.my.cnf[plain] [mysqladmin]  password = ***  user= root  chmod 600 /root/.my.cnf2)把mysql-log-rotate拷贝至/etc/logrotate.d目录下,修改其内容为:[plain] /data/mysql/log/slow.log  /data/mysql/log/alert.log {          create 600 mysql mysql          notifempty          daily          rotate 7          missingok          # compress      postrotate          # just if mysqld is really running          if test -x /opt/mysql/bin/mysqladmin &&             /opt/mysql/bin/mysqladmin ping &>/dev/null          then             /opt/mysql/bin/mysqladmin flush-logs          fi      endscript  }  3)执行以下命令测试[plain] 

/usr/sbin/logrotate -f /etc/logrotate.d/mysql-log-rotate    

以上就是系统大全给大家介绍的如何使的方法都有一定的了解了吧,好了,如果知识兔大家还想了解更多的资讯,那就赶紧点击系统大全官网吧。

本文来自系统大全http://www.win7cn.com/如需转载请注明!推荐:win7纯净版

下载仅供下载体验和测试学习,不得商用和正当使用。

下载体验

请输入密码查看下载!

如何免费获取密码?

点击下载

评论