/var/log/mysql/error.log 或数据目录下 hostname.err。/var/log/mysql/binlog。修改配置文件
编辑 /etc/my.cnf 或 /etc/mysql/my.cnf,在 [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 # 阈值(秒)
# 二进制日志
log_bin=/var/log/mysql/binlog/mysql-bin
server_id=1 # 主从复制需设置唯一ID
修改后重启服务:sudo systemctl restart mysql。
动态开启(无需重启)
-- 开启慢查询日志
SET GLOBAL slow_query_log='ON';
SET GLOBAL long_query_time=2;
-- 开启查询日志
SET GLOBAL general_log='ON';
SET GLOBAL general_log_file='/var/log/mysql/query.log';
命令行查看
# 实时查看错误日志
sudo tail -f /var/log/mysql/error.log
# 查看慢查询日志前10条
sudo head -n 10 /var/log/mysql/slow.log
# 查看二进制日志列表
mysql -e "SHOW BINARY LOGS;"
工具分析
mysqldumpslow 或 pt-query-digest 工具。# 按执行时间排序查看慢查询
mysqldumpslow -s t -t 5 /var/log/mysql/slow.log
日志轮转与清理
logrotate 工具按日期或大小分割日志,避免文件过大。cron 定时任务删除超过7天的日志:# 示例:删除7天前的慢查询日志
find /var/log/mysql/ -name "slow-*.log" -mtime +7 -exec rm -f {} \;
expire_logs_days 参数自动过期。