当前位置: 首页 > news >正文

MySQL 5.7限制general_log日志大小

背景

需求:

  • 在MySQL 5.7.41中开启general_log 并限制其大小,避免快速增长占用硬盘空间。

解决:

  • 通过定时任务,执行简单的脚本,判断general_log 日志的大小,实现对通用查询日志的“每日备份”或“每日清理”的功能。

多说几句:

  • 等保二级要求必须开启MySQL数据库的通用查询日志general_log ,但其文件大小增长速度太快,数据库有效数据都还没增长多少,硬盘空间可能就会被general_log 日志占用不少。而binog 至少还能通过binlog_expire_logs_seconds过期时间参数设置日志保存策略,避免占用空间。没有这样的参数限制general_log,必然要通过其它手段限制general_log空间。

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

提供两种思路:

  1. 思路一:每日检查日志大小,当其超过某个阈值时,将文件复制归档到某个专门存储日志的目录。
  2. 思路二:每日检查日志大小,当超过某个阈值时,不执行归档备份,直接将general_log内容清除。

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

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

思路一:每日备份日志

参考脚本 bak_general_log.sh

#!/bin/bashLOG_FILE="/mnt/general.log"
MAX_SIZE=100if [ -f "$LOG_FILE" ]; thenCURRENT_SIZE=$(du -m "$LOG_FILE" | awk '{print $1}')if [ "$CURRENT_SIZE" -gt "$MAX_SIZE" ]; thenmv "$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 mysqlfi
fi

思路二:每日清空日志

参考脚本 clear_general_log.sh

#!/bin/bashLOG_FILE="/mnt/general.log"
MAX_SIZE=100if [ -f "$LOG_FILE" ]; thenCURRENT_SIZE=$(du -m "$LOG_FILE" | awk '{print $1}')if [ "$CURRENT_SIZE" -gt "$MAX_SIZE" ]; thenecho > "$LOG_FILE"fi
fi

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

  1. 用dd命令快速生成指定大小的文件,比如生成101MB大小的/mnt/general.log文件,可以执行以下命令:
dd if=/dev/zero of=/mnt/general.log bs=1M count=101
  1. 执行之前准备的脚本文件,查看结果。

参考截图

在这里插入图片描述

实际操作:配置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

上述脚本二选一即可。

结束

注意:

  1. 备份脚本中没有指定备份目录。
  2. 备份脚本中涉及了MySQL应用重启。
  3. 备份脚本的具体内容可根据实际情况修改。
http://www.lryc.cn/news/210480.html

相关文章:

  • tomcat9~10猫闪退个人经验
  • Linux之J2EE的项目部署及发布
  • 基于闪电搜索算法的无人机航迹规划-附代码
  • 【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧,源码分析
  • BUUCTF刷题记录
  • 黑客技术(网络安全)—小白自学
  • 免登陆 同步脚本 zookeeper kafka集群详细安装步骤
  • 深入理解NLP
  • Python-自动化绘制股票价格通道线
  • CTF-Crypto学习记录-第四天 “ “ --- SHA1安全散列算法,实现原理。
  • 海南海口大型钢结构件3D扫描全尺寸三维测量平面度平行度检测-CASAIM中科广电
  • 【PyQt学习篇 · ④】:QWidget - 尺寸操作
  • APC学习记录
  • 前端将图片储存table表格中,页面回显
  • [论文阅读]Ghost-free High Dynamic Range Imaging with Context-aware Transformer
  • react高阶成分(HOC)例子效果
  • 【24种设计模式】工厂模式(Factory Pattern)
  • 树——对称二叉树
  • 拉扎维模拟CMOS集成电路设计西交张鸿老师课程P10~13视频学习记录
  • 3.线性神经网络
  • python常用内置函数的介绍和使用
  • 2023辽宁省赛E
  • visual studio 启用C++11
  • 获取某个抖音用户的视频列表信息
  • 【C语言】strcpy()函数(字符串拷贝函数详解)
  • 机器学习之IV编码,分箱WOE编码
  • 区块链技术与应用 【全国职业院校技能大赛国赛题目解析】第六套区块链系统部署与运维
  • 山西电力市场日前价格预测【2023-10-30】
  • win10虚拟机安装教程
  • 2011-2021年“第四期”数字普惠金融与上市公司匹配(根据城市匹配)/上市公司数字普惠金融指数匹配数据