linux 一键包 mysql日志怎么按月放存,这个文件大了120M多时就会报错,请教怎么按年月日存放
log=/alidata/log/mysql/mysql.log
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Linux环境下,要实现MySQL日志按年月日自动分割并存档,可以通过配置MySQL的logrotate功能来实现。但直接修改MySQL配置以支持日志自动按大小分割不是标准做法,因为MySQL本身并不直接支持基于文件大小的日志自动分割。不过,结合Linux系统自带的logrotate
工具,我们可以间接实现这一需求。
/etc/logrotate.d/
目录下创建一个MySQL日志的配置文件,比如叫mysql-logrotate
。sudo nano /etc/logrotate.d/mysql-logrotate
/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天的日志。postrotate
和endscript
之间的命令会在日志轮转后执行,这里使用mysqladmin flush-logs
来确保MySQL生成新的日志文件。
sudo logrotate -d /etc/logrotate.d/mysql-logrotate
这条命令会以调试模式运行logrotate,显示它将如何操作而不实际更改任何文件。
通过上述步骤,你可以实现MySQL日志按照指定大小自动分割,并按日期归档存储。请根据实际情况调整配置中的参数,如保留日志的天数、文件大小限制等。