欢迎投稿

今日深度:

使用logrotete定时切割mysql的慢日志操作,

使用logrotete定时切割mysql的慢日志操作,


目录
  • 背景:
  • 创建配置文件
    • 关键参数说明
  • 测试
    • 定时任务部署

      背景:

      在 Linux 系统中,logrotate 是常用的日志文件管理工具,可以配置它来对 MySQL 的慢查询日志进行轮转,例如按照每天或者每周进行轮转,将旧的日志文件备份压缩并重新生成新的日志文件来继续记录!

      创建配置文件

      创建一个专门用于配置 MySQL 慢查询日志切割规则的文件,通常放在 /etc/logrotate.d/ 目录下。假设你的 MySQL 慢查询日志文件名为 /var/lib/mysql/[主机名]-slow.log(这里的 [主机名] 需要替换为实际的主机名称,你可以通过 hostname 命令查看主机名),创建名为 mysql-slow 的配置文件(文件路径为 /etc/logrotate.d/mysql-slow

      这是我目前在用的慢日志切割配置,可以直接拿来使用(密码替换进去)

      /data/mysql/my3306/log/slow.log {
          daily
          missingok
          rotate 30
          compress
          notifempty
          create 640 mysql mysql
          dateext                    
          dateformat -%Y%m%d         
          sharedscripts
          postrotate
              /usr/local/mysqlInstall/mysql/bin/mysql -uroot -p密码 -e "SET GLOBAL slow_query_log = OFF; SET GLOBAL slow_query_log = ON;"
          endscript
      }

      关键参数说明

      1. 轮转频率与保留策略

      • **daily**

      每天检查一次日志文件,满足条件则触发轮转。

      • **rotate 30**

      保留最近30次轮转的日志文件(默认按天轮转,即保留30天日志)。

      • **compress**

      压缩旧日志为 .gz 格式,节省磁盘空间。

      2. 文件命名与日期格式

      • **dateext**

      使用日期作为轮转文件的后缀(例如 slow.log-20231101)。

      • **dateformat -%Y%m%d**

      自定义日期格式:-%Y%m%d 表示 -年月日(如 -20231101)。

      3. 文件权限与空文件处理

      • **create 640 mysql mysql**

      轮转后创建的新日志文件权限为 640,所有者为 mysql 用户和组(需确保 MySQL 进程有写入权限)。

      • **notifempty**

      如果日志文件为空,跳过轮转(避免生成无意义的空日志文件)。

      4. 执行脚本与错误处理

      • **sharedscripts**

      所有匹配的日志文件轮转完成后,只执行一次 postrotate 脚本(即使有多个日志文件)。

      • **postrotate**

      轮转后执行以下操作:

      • 临时关闭 MySQL 慢查询日志(slow_query_log = OFF)。
      • 重新开启慢查询日志(slow_query_log = ON),使 MySQL 写入新日志文件。
      • 注意:需替换 -p密码 为实际的 MySQL root 密码。

      5. 其他

      • **missingok**

      如果日志文件不存在,忽略错误继续执行(避免因文件丢失导致任务失败)。

      测试

      配置完成后,可以手动运行 logrotate 命令来测试配置是否正确以及能否正常工作

      logrotate -vf /etc/logrotate.d/mysql-slow

      -f 参数表示强制按照配置文件执行轮转操作

      定时任务部署

      为了避免重复执行,将cron.daily中的logrotate移除

      cd 	/etc/cron.daily
      mv logrotate logrotate.bak

      crontab部署

      0 2 * * *  /usr/sbin/logrotate -vf /etc/logrotate.d/mysql-slow 

      到此这篇关于如何使用logrotete定时切割mysql的慢日志的文章就介绍到这了,更多相关mysql慢日志内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

      您可能感兴趣的文章:
      • SQL Server像MySQL一样拥有慢查询日志的操作方法(Slow Query Log慢日志)
      • MySQL 慢日志相关知识总结
      • MySQL 一则慢日志监控误报的问题分析与解决
      • 详解mysql慢日志查询
      • 关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
      • MySQL的慢日志线上问题及优化方案
      • mysql 5.5 开启慢日志slow log的方法(log_slow_queries)
      • MySQL中按时间获取慢日志信息的方法
      • 根据mysql慢日志监控SQL语句执行效率

      www.htsjk.Com true http://www.htsjk.com/Mysql/48953.html NewsArticle 使用logrotete定时切割mysql的慢日志操作, 目录 背景: 创建配置文件 关键参数说明 测试 定时任务部署 背景: 在 Linux 系统中, logrotate 是常用的日志文件管理工具,可以配置它来对 MyS...
      评论暂时关闭