[Linux] 利用logrotate对MySQL日志进行轮转

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

日志轮转特别适用于具有固定文件名的日志文件,比如MySQL的出错日志、常规查询日志、慢查询日志等。Linux系统有一个非常好用的根据logratate可以实现自动轮转,本文介绍它的原理和用法。

默认情况下,logrotate部署为每天运行的cron job,你可以在目录/etc/cron.daily里找到名为logrotate的配置文件。那么它是在每天的上面时候运行的呢?打开文件/etc/crontab就知道了,下面是我机器上的情况:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
从上面的配置我们可以知道,/etc/cron.daily是在每天凌晨4:02执行。也就是说,每天4:02分/etc/cron.daily/logrotate将会自动执行,下面是它的内容:

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
从上面我们可以知道,logratate默认的配置文件是/etc/logratate.conf,下面是它的内容:

EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
[root@lx202 /etc/cron.daily ]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 1
}

/var/log/btmp {
    missingok
    monthly
    minsize 1M
    create 0600 root utmp
    rotate 1
}
从上面我们可以知道,这个默认的配置文件将读取目录/etc/logrotate.d,所以我们只要把自己写的配置文件放到该目录下即可。

MySQL本省提供了一个rotate的参考配置文件,在support-files目录下,文件名为mysql-log-rotate,内容如下:

# This logname can be set in /etc/my.cnf
# by setting the variable "err-log"
# in the [safe_mysqld] section as follows:
#
# [safe_mysqld]
# err-log=/opt/mysql/data/mysqld.log
#
# If the root user has a password you have to create a
# /root/.my.cnf configuration file with the following
# content:
#
# [mysqladmin]
# password = <secret>
# user= root
#
# where "<secret>" is the password.
#
# ATTENTION: This /root/.my.cnf should be readable ONLY
# for root !

/opt/mysql/data/mysqld.log {
        # create 600 mysql mysql
        notifempty
        daily
        rotate 3
        missingok
        compress
    postrotate
        # just if mysqld is really running
        if test -x /opt/mysql/bin/mysqladmin && \
           /opt/mysql/bin/mysqladmin ping &>/dev/null
        then
           /opt/mysql/bin/mysqladmin flush-logs
        fi
    endscript
}

logrotate常见选项:

选项含义
compress压缩日志文件的所有非当前版本
copy复制当前的日志文件,忽略create参数
copytruncate复制当前的日志文件,并置空当前文件
daily每天轮日志文件i
dateext轮换的日志后缀为-YYYYMMDD格式
delaycompress压缩除了当前和最近之外的所有其他版本
missingok如果日志不存在,不会报错
notifempty如果日志为空,则不轮换
rotate n在轮换方案中包含n个版本的日志
size=logsize如果日志文件大于logsize才轮换

我们只要根据自己的需要,修改相应配置即可,下面是一个例子:

1)创建MySQL root密码文件

vi /root/.my.cnf

[mysqladmin]
password = ***
user= root

chmod 600 /root/.my.cnf
2)把mysql-log-rotate拷贝至/etc/logrotate.d目录下,修改其内容为:

/data/mysql/log/slow.log
/data/mysql/log/alert.log {
        create 600 mysql mysql
        notifempty
        daily
        rotate 7
        missingok
        # compress
    postrotate
        # just if mysqld is really running
        if test -x /opt/mysql/bin/mysqladmin && \
           /opt/mysql/bin/mysqladmin ping &>/dev/null
        then
           /opt/mysql/bin/mysqladmin flush-logs
        fi
    endscript
}

3)执行以下命令测试

/usr/sbin/logrotate -f /etc/logrotate.d/mysql-log-rotate


logrotate 日志切割 原理 logrotate 原理 logrotate 是怎么做到滚动日志时不影响程序正常的日志输出呢?logrotate 提供了两种解决方案。 create copytruncate Linux 文件操作机制 介绍一下相关的 Linux 下的文件操作机制。 Linux 文件系统里文件和文件名的关系如下图。 目录也是文件,文件里存着文件名和对应的 inode 编号。通过这个 inode... 阅读详情

相关推荐

linux logrotate 配置说明

文章目录logrotate参数配置logrotate配置方式dateformat 配置示例示列1示列2运行logrotatecrontab 定时debug 模式:verbose 模式 logrotate参数 参数 说明 dailyweeklymonthlyyearly 切割周期,多久切割一次。daily : 切割周期为 每天weekly : 切割周期为 每周monthly : 切割周期为 每月yearly: 切割周期为 每年 size size

猎人在吃肉 2万+

linux 进程管理 日志轮转 systemctl logratate模板

linux 进程管理 日志轮转 systemctl logrotate模板

logrotate 使用说明

介绍使用logrotate来管理服务日志

heyongshen的博客 1951

MySQL log rotate配置

`logrotate` 是 Linux 系统中用于管理和轮换日志文件的实用工具。它旨在自动管理日志文件的增长,避免日志文件变得过大,从而节省磁盘空间并防止单个日志文件占用过多空间。

不积跬步,无以至千里;不积小流,无以成江海。 866

Linux日志管理2之logratate

一、logrotate日志轮转

qq_45955904的博客 841

mysql日志 logrotate_mysqllogrotate脚本

随着业务量的增加和时间的推移mysql日志势必会越来越多、越来越大,那么就要用系统的logrotate轮替mysql日志(logrotate可以参看:http://jim123.blog.51cto.com/4763600/1880582),当然平时用的mysql都是二进制包部署安装的,其实mysql的二进制包中的support-files文件夹里就有提供mysqllogrotate脚本,文...

weixin_35763787的博客 350

mysql 日志轮转_[Linux] 利用logrotateMySQL日志进行轮转_MySQL

bitsCN.com[Linux] 利用logrotateMySQL日志进行轮转日志轮转特别适用于具有固定文件名的日志文件,比如MySQL的出错日志、常规查询日志、慢查询日志等。Linux系统有一个非常好用的根据logratate可以实现自动轮转,本文介绍它的原理和用法。默认情况下,logratate部署为每天运行的cron job,你可以在目录/etc/cron.daily里找到名为logra...

weixin_42407606的博客 205

mysql 日志轮转_[Linux] 利用logrotateMySQL日志进行轮转 - mysql数据

[Linux] 利用logrotateMySQL日志进行轮转日志轮转特别适用于具有固定文件名的日志文件,比如MySQL的出错日志、常规查询日志、慢查询日志等。Linux系统有一个非常好用的根据logratate可以实现自动轮转,本文介绍它的原理和用法。默认情况下,logratate部署为每天运行的cron job,你可以在目录/etc/cron.daily里找到名为logratate的配置文件。...

weixin_36393718的博客 142

mysql 日志轮转_[Linux]利用logrotateMySQL日志进行轮转_MySQL

bitsCN.com[Linux] 利用logrotateMySQL日志进行轮转日志轮转特别适用于具有固定文件名的日志文件,比如MySQL的出错日志、常规查询日志、慢查询日志等。Linux系统有一个非常好用的根据logratate可以实现自动轮转,本文介绍它的原理和用法。默认情况下,logratate部署为每天运行的cron job,你可以在目录/etc/cron.daily里找到名为logra...

weixin_33492770的博客 303

logrotate测试_利用logrotateMySQL日志进行轮转

日志轮转特别适用于具有固定文件名的日志文件,比如MySQL的出错日志、常规查询日志、慢查询日志等。Linux系统有一个非常好用的根据logratate可以实现自动轮转,本文介绍它的原理和用法。默认情况下,logrotate部署为每天运行的cron job,你可以在目录/etc/cron.daily里找到名为logrotate的配置文件。那么它是在每天的上面时候运行的呢?打开文件/etc/cront...

weixin_33355385的博客 262

Linux日志管理工具:Logrotate

本文详细介绍了Linux系统中的日志管理工具Logrotate的概念、安装、用法,并给出了若干示例。

jclee95的个人博客 2012

别再让日志撑爆你的Linux服务器了!手把手教你用logrotate配置Nginx和MySQL日志轮转

本文详细介绍了如何使用logrotate工具配置Nginx和MySQL日志轮转,避免日志文件撑爆Linux服务器磁盘空间。通过实战案例和高级技巧,帮助运维人员实现自动化日志管理,提升服务器稳定性。文章涵盖核心原理、配置示例及疑难排查,特别适合需要优化日志系统的Linux管理员。

weixin_33675507的博客 1006

高效管理日志文件——深入解析日志轮转Logrotate实践

日志轮转是系统稳定性的“隐形守护者”。通过合理配置。

duanhwonline的专栏 909

Linux日志轮转管理:logrotate 完全指南

Linux日志轮转工具logrotate核心解析 日志轮转Linux系统维护的关键环节,logrotate作为标准工具通过定时任务自动管理日志文件。文章深入剖析其双层架构(文本日志与二进制日志分离)、两种轮转机制(create方案保证数据完整性和copytruncate方案兼容性优先)及详细工作流程。配置体系采用主配置文件定义全局参数,子目录实现服务专属规则,支持按时间/大小触发轮转,并提供压缩、权限控制等丰富功能。

vortex5的博客 761

logrotate mysql_linuxlogrotate日志进行切割压缩(nginx,mysql)

logrotate简介日志轮转特别适用于具有固定文件名的日志文件,比如MySQL的出错日志、常规查询日志、慢查询日志等。Linux系统有一个非常好用的根据logratate可以实现自动轮转,本文介绍它的原理和用法。logrotate是管理日志文件的工具,在CentOS系统中,命令的位置在/usr/sbin/logrotate,常用的操作如:-d, --debug Don...

weixin_34698042的博客 508

Linux--rsyslog系统日志 logrotate日志轮转

rsyslog 系统日志管理 关心问题:哪类程序—》产生的什么日志----》放到什么地方 logrotate日志轮转 将大量的日志,分割管理,删除旧日志。 一、处理日志的进程 第一类: rsyslogd: 系统专职日志程序。 处理绝大部分日志记录, 系统操作有关的信息,如登录信息,程序启动关闭信息,错误信息 第二类: httpd/nginx/mysql: 各类应用程序,可以以自己的方式记录日志. ...

m0_46400195的博客 475

自动化运维-配置Mysql、emqx、redis、nginx等通用性Linux日志分割工具 - logrotate

前言:logrotate 是一个在 Linux 系统中用于管理和轮转日志文件的工具。它的主要目的是帮助系统管理员自动执行日志文件的轮转、压缩、删除和邮件通知等任务,以防止日志文件占用过多的磁盘空间,同时保持日志文件的可管理性。

weixin_66855479的博客 1529

别再让日志撑爆你的Linux服务器了:手把手教你用logrotate配置Nginx和MySQL日志轮转

本文详细介绍了如何使用logrotate工具配置Nginx和MySQL日志轮转,避免日志文件撑爆Linux服务器磁盘空间。通过实战案例解析关键参数设置,包括按时间或大小轮转日志压缩和历史保留策略,并提供排错技巧与容器环境适配方案,帮助管理员建立长效日志管理机制。

weixin_33726318的博客 609

Linux 日志管理三件套:rsyslog+journalctl+logrotate

本文详细介绍了Linux系统中的日志管理服务,涵盖rsyslog、ELK、journalctl及logrotate等核心工具。从rsyslog的基础配置与日志分类,到ELK在分布式环境中的应用;从journalctl的二进制日志查询技巧,到logrotate日志分割与压缩策略。通过实战案例,深入解析了如何自定义日志规则、实现远程日志转发、利用MySQL存储日志,以及通过logrotate有效管理日志文件大小。本文旨在帮助系统管理员和开发者全面掌握Linux日志管理技能,提升系统运维效率与故障排查能力。

coder4_的博客 1244
上一篇: [MySQL] 变量(参数)的查看和设置
下一篇: [MySQL] 探索权限表
Zhu_Julian
博客等级 码龄13年 392粉丝 199原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值