MySQL-运行日志切割

背景

在生产环境中,基于慢日志进行性能分析的场景下,为防止慢查询日志文件等日志文件过大,不利于日志文件的读取和分析,也会影响MySQL Server 的性能。有必要按照一定的规则切割日志文件。

实施

下面以慢查询日志文件为例,进行说明。其它日志文件类似的方式实施。

慢查询日志文件切割

通过mysqladmin flush-logs [log_type]的方式实现日志切割

cat > /scripts/cut_slow_log.sh <<-'EOF'
#!/bin/sh

#OPT_time=`date -d yesterday +"%Y-%m-%d"`
OPT_time=$(date "+%Y-%m-%d")
rmbaktime=$(date -d '-7 days' "+%Y-%m-%d")
SLOW_DIR=/var/lib/mysql/slow_log
MYSQL_HOME=/usr/local/mysql

# 账号(执行 flush-logs 命令 ,需要有reload权限,允许使用flush语句)
user="root"
passwd="xxxxxx"


#提前创建好一个存放目录:/var/lib/mysql/slow_log/
#重命名旧慢查询日志
mv ${SLOW_DIR}/slow.log ${SLOW_DIR}/slow-${OPT_time}.log

# 刷新慢查询日志文件
${MYSQL_HOME}/bin/mysqladmin -u$user -p$passwd --socket=/tmp/mysql.sock flush-logs slow
# ${MYSQL_HOME}/bin/mysql -u$user -p$passwd --socket=/tmp/mysql.sock -e "set global slow_query_log_file='${SLOW_DIR}/slow.log';"

#删除历史slow.log
rm -rf ${SLOW_DIR}/slow-$rmbaktime.log

EOF

# 定时任务:每天0点执行该脚本
0 0 * * * sh /scripts/cut_slow_log.sh > /dev/null 2>&1
原文地址:https://www.cnblogs.com/binliubiao/p/15041504.html