mysql日志 logrotate_使用logrotate来进行轮换mysql的慢日志

本文提供了一个shell脚本来使用logrotate工具进行MySQL慢查询日志的轮换。脚本中定义了配置文件路径、数据目录、慢查询日志文件名、用户和密码,并创建了一个新的日志脚本,设置了权限、保留天数、日志压缩等选项。最后,将日志轮换任务添加到crontab并重启crond服务。
摘要由CSDN通过智能技术生成

#!/bin/bash

SLOWCFG=/etc/my.cnf

DATADIR=`awk /^datadir/ $SLOWCFG|awk -F"=" '{print $2}'`

SLOWDIR=`cat $SLOWCFG|grep "^slow_query_log_file"|awk -F"=" '{ print $2 }'`

SLOWNAME=`echo $SLOWDIR|awk -F"/" '{print $5}'`

SLOWUSER=root

SLOWPASS=shiyiwen

SLOWSCRIPT=/data/mysql-slow-ratate

NEWSLOWDIR=`find $DATADIR -name "$SLOWNAME*"|xargs ls -lt|awk 'NR==1 { print $9 }'`

OLDDIR=/var/log/old_log

if [[ -z $SLOWDIR || -z $NEWSLOWDIR || -z $SLOWNAME || -z $DATADIR ]];then

echo "Please check configure...."

exit 1

fi

if [ ! -d $OLDDIR ];then

mkdir -p $OLDDIR

fi

cat >$SLOWSCRIPT<

$NEWSLOWDIR {

create 600 mysql mysql

notifempty

dateext

daily

rotate 7

missingok

copytruncate

olddir $OLDDIR

#compress

postrotate

# just if mysqld is really running

if test -x /usr/bin/mysqladmin &&

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

then

/usr/bin/mysqladmin -u$SLOWUSER -p$SLOWPASS flush-logs

fi

endscript

}

EOF

if [ $UID -ne 0 ];then

echo "Please use root running.."

exit 1

fi

echo "59 23 * * * /usr/sbin/logrotate -f $SLOWSCRIPT">>/var/spool/cron/root

/etc/init.d/crond restart

echo -e "\033[34m OK! Sucess\033[0m"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值