Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL5.7限制general_log日志

MySQL5.7限制general_log日志大小的实现

作者:高达可以过山车不行

MySQL5.7.41中为避免通用查询日志general_log快速增长占用硬盘空间,可以通过定时任务执行脚本进行每日备份或清理,从而限制其大小,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

背景

需求:

解决:

多说几句:

实际操作:备份脚本和清理脚本

提供两种思路:

MySQL中开启general日志需要修改my.cnf文件,增加以下两行指定日志存储路径:

[mysqld]
general_log = 1
general_log_file = /mnt/general.log

思路一:每日备份日志

参考脚本 bak_general_log.sh

#!/bin/bash

LOG_FILE="/mnt/general.log"
MAX_SIZE=100

if [ -f "$LOG_FILE" ]; then
    CURRENT_SIZE=$(du -m "$LOG_FILE" | awk '{print $1}')
    
    if [ "$CURRENT_SIZE" -gt "$MAX_SIZE" ]; then
        mv "$LOG_FILE" "$LOG_FILE.$(date +%Y%m%d%H%M%S)"
        touch "$LOG_FILE"
        chmod 0640 "$LOG_FILE"
        chown mysql:mysql "$LOG_FILE"
        systemctl restart mysql
    fi
fi

思路二:每日清空日志

参考脚本 clear_general_log.sh

#!/bin/bash

LOG_FILE="/mnt/general.log"
MAX_SIZE=100

if [ -f "$LOG_FILE" ]; then
    CURRENT_SIZE=$(du -m "$LOG_FILE" | awk '{print $1}')
    
    if [ "$CURRENT_SIZE" -gt "$MAX_SIZE" ]; then
        echo > "$LOG_FILE"
    fi
fi

快速验证脚本的方法:dd创建日志文件

dd if=/dev/zero of=/mnt/general.log bs=1M count=101

参考截图

在这里插入图片描述

实际操作:配置corntab定时任务

给脚本配置可执行权限:

chmod +x bak_general_log.sh
chmod +x clear_general_log.sh

使用cron等工具将脚本定期执行,例如每天凌晨执行一次:

crontab -e

然后在编辑器中添加以下内容:

0 0 * * * /mnt/bak_general_log.sh
0 0 * * * /mnt/clear_general_log.sh

上述脚本二选一即可。

结束

注意:

到此这篇关于MySQL5.7限制general_log日志大小的文章就介绍到这了,更多相关MySQL5.7限制general_log日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文