开发者社区 问答 正文

linux一键包mysql日志怎么按月放存


linux 一键包 mysql日志怎么按月放存,这个文件大了120M多时就会报错,请教怎么按年月日存放
log=/alidata/log/mysql/mysql.log

展开
收起
易博 2015-06-04 10:44:15 5196 分享 版权
阿里云 AI 助理回答

在Linux环境下,要实现MySQL日志按年月日自动分割并存档,可以通过配置MySQL的logrotate功能来实现。但直接修改MySQL配置以支持日志自动按大小分割不是标准做法,因为MySQL本身并不直接支持基于文件大小的日志自动分割。不过,结合Linux系统自带的logrotate工具,我们可以间接实现这一需求。

使用logrotate

  1. 创建logrotate配置文件:首先,在/etc/logrotate.d/目录下创建一个MySQL日志的配置文件,比如叫mysql-logrotate
sudo nano /etc/logrotate.d/mysql-logrotate
  1. 编辑配置文件内容,加入以下内容:
/alidata/log/mysql/mysql.log {
    daily
    rotate 30 # 保留最近30天的日志
    size 120M # 当日志文件达到120MB时轮转
    compress # 轮转后的日志进行压缩
    delaycompress # 在下一次日志轮转前不压缩最新的日志文件
    missingok # 如果日志文件丢失,不生成错误信息
    notifempty # 如果日志文件为空,则不进行轮转
    create 640 mysql mysql # 创建新日志文件时的权限和所有者
    postrotate
        /usr/bin/mysqladmin flush-logs
    endscript
}

这个配置意味着每天检查日志文件大小,一旦达到120MB即进行轮转,并且保留最近30天的日志。postrotateendscript之间的命令会在日志轮转后执行,这里使用mysqladmin flush-logs来确保MySQL生成新的日志文件。

  1. 测试配置:可以手动运行logrotate来测试配置是否生效,但通常不需要手动执行,因为大多数Linux发行版会有一个定时任务(如cron job)定期自动执行logrotate。
sudo logrotate -d /etc/logrotate.d/mysql-logrotate

这条命令会以调试模式运行logrotate,显示它将如何操作而不实际更改任何文件。

通过上述步骤,你可以实现MySQL日志按照指定大小自动分割,并按日期归档存储。请根据实际情况调整配置中的参数,如保留日志的天数、文件大小限制等。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答