MySQL 启动时配置日志轮转,主要是通过配置文件与操作系统级别的日志管理工具(如 logrotate)配合实现。MySQL 本身不直接提供自动日志轮转功能,需要依赖外部机制来完成。以下是具体配置方法。
1. 配置 MySQL 日志输出路径
确保 MySQL 的错误日志、慢查询日志等写入指定文件,便于后续轮转管理。
编辑 MySQL 配置文件(通常为 /etc/my.cnf 或 /etc/mysql/my.cnf) 在 [mysqld] 段添加或确认以下配置:[mysqld]
log-error = /var/log/mysql/error.log
slow-query-log = 1
slow-query-log-file = /var/log/mysql/slow.log
long_query_time = 2
sudo mkdir -p /var/log/mysql
sudo chown mysql:mysql /var/log/mysql
2. 使用 logrotate 配置日志轮转
Linux 系统常用 logrotate 工具实现日志自动切割和清理。
创建配置文件:/etc/logrotate.d/mysql 写入以下内容:/var/log/mysql/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 mysql mysql
sharedscripts
postrotate
test ! -f /var/run/mysqld/mysqld.pid || kill -USR1 `cat /var/run/mysqld/mysqld.pid` 2>/dev/null || true
endscript
}
3. 验证配置是否生效
测试 logrotate 配置语法和执行效果:
手动运行一次轮转测试:sudo logrotate -d /etc/logrotate.d/mysql # 调试模式查看执行流程
sudo logrotate -f /etc/logrotate.d/mysql # 强制执行一次轮转
4. 注意事项
MySQL 启动命令本身不控制日志轮转,但需确保启动时正确加载日志路径配置。常见启动方式包括:
sudo systemctl start mysql
或
sudo service mysql start
基本上就这些。通过合理配置 my.cnf 和 logrotate,即可实现 MySQL 日志的自动轮转,避免日志文件过大影响系统运行。不复杂但容易忽略 postrotate 脚本的正确性。
