mysql 轮训_针对MySQL单一文件名的日志管理(一)轮训

关于MySQL的日志,有一些文件名一直保持不变,但是如果打开会产生很多的文件,那么如何进行保留呢,一般就是使用轮训的方式管理日志,下面就来研究下:

最大的特征:文件名一直不变

根据MySQL提供的数据mysql-log-logrotate脚本可以知道这个命令logrtate

查看/etc/crond.daily/logrotate

/etc/logrotate.cnf

/etc/logrotate.d   需要轮训的脚本放在此目录下

logrotate是根据cron运行的,也就是说定时任务,打开脚本

#

# ATTENTION: The /root/.my.cnf file should be readable

# _ONLY_ by root !

#/opt/mysql/data/hack-slow.log

#/opt/mysql/data/mysql-general.log

/opt/mysql/data/*.log {

create 600 mysql mysql

notifempty

daily

rotate 5

missingok

compress

postrotate

# just if mysqld is really running

if test -x /usr/local/mysql/bin/mysqladmin && \

/usr/local/mysql/bin/mysqladmin ping &>/dev/null

then

/usr/local/mysql/bin/mysqladmin flush-logs

fi

endscript

}

执行命令测试:/usr/sbin/logrotate -f /etc/logrotate.d/mysql-log-rotate可以切换两个配置文件.或者用*.log,切换目录下所有

logrotate常见选项:

选项含义

compress压缩日志文件的所有非当前版本

copy复制当前的日志文件,忽略create参数

copytruncate复制当前的日志文件,并置空当前文件

daily每天轮日志文件i

dateext轮换的日志后缀为-YYYYMMDD格式

delaycompress压缩除了当前和最近之外的所有其他版本

missingok如果日志不存在,不会报错

notifempty如果日志为空,则不轮换

rotate n在轮换方案中包含n个版本的日志

size=logsize如果日志文件大于logsize才轮换

也可以自己手工写一个大致还是这个意思,假设需要保留七天的日志记录

rotate-log.sh

#!/bin/bash

#rotate-log.sh

#Argument 1:log filename

if [ $# -ne 1 ]; then

echo "Usage:$0 logname" 1>&2

exit 1

fi

mysqladmin flush-logs

logfile=$1

mv $logfile.6 $logfile.7

mv $logfile.5 $logfile.6

mv $logfile.4 $logfile.5

mv $logfile.3 $logfile.4

mv $logfile.2 $logfile.3

mv $logfile.1 $logfile.2

mv $logfile $logfile.1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值