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

 更新时间:2025年03月12日 17:07:55   作者:邱邱i  
本文介绍了如何在Linux系统中使用logrotate工具对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慢日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql 5.7.18 zip版安装使用教程

    mysql 5.7.18 zip版安装使用教程

    这篇文章主要为大家详细介绍了mysql 5.7.18 zip版安装使用教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Linux下启动多个mysql服务器例子

    Linux下启动多个mysql服务器例子

    这篇文章主要介绍了Linux下启动多个mysql服务器例子,本文还包括了3个可能遇到的问题及解决方法,需要的朋友可以参考下
    2014-07-07
  • MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的区别

    MySQL中KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的区别

    本文给大家分享的是mysql索引中的KEY、PRIMARY KEY、UNIQUE KEY、INDEX 的区别,即主键索引,唯一索引和普通索引的区别,希望大家能够喜欢
    2017-07-07
  • MySQL存储过程参数的用法及说明

    MySQL存储过程参数的用法及说明

    这篇文章主要介绍了MySQL存储过程参数的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Navicat无法连接MySQL报错1251的解决方案

    Navicat无法连接MySQL报错1251的解决方案

    这篇文章主要为大家详细介绍了Navicat无法连接MySQL报错1251的解决方案,文中解决方法介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2023-12-12
  • Mysql获取当前日期的前几天日期的方法

    Mysql获取当前日期的前几天日期的方法

    这篇文章主要介绍了Mysql获取当前日期的前几天日期的方法,本文直接给出实现代码,需要的朋友可以参考下
    2015-03-03
  • 浅析MySQL 备份与恢复

    浅析MySQL 备份与恢复

    这篇文章主要介绍了MySQL 备份与恢复的相关资料,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-08-08
  • Linux下mysql异地自动备份的方法

    Linux下mysql异地自动备份的方法

    这篇文章主要介绍了Linux下mysql异地自动备份的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 解决mysql安装时出现error Nr.1045问题的方法

    解决mysql安装时出现error Nr.1045问题的方法

    这篇文章主要为大家详细介绍了解决mysql安装时出现error Nr.1045问题的方法,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • MySQL 如何查找并删除重复记录的实现

    MySQL 如何查找并删除重复记录的实现

    这篇文章主要介绍了MySQL 如何查找并删除重复记录的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08

最新评论