MySQL慢查询日志是一种记录执行时间超过指定阈值的SQL语句的日志。通过开启慢查询日志,可以有效地监控和优化数据库性能,找出执行效率低下的SQL语句。
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2; -- 设置慢查询时间为2秒MySQL慢查询日志主要记录以下类型的信息:
原因:可能是因为MySQL配置文件中未开启慢查询日志,或者配置错误。
解决方法:
编辑MySQL配置文件(通常是my.cnf或my.ini),添加或修改以下配置:
[mysqld]
slow_query_log = ON
long_query_time = 2
slow_query_log_file = /var/log/mysql/slow-query.log然后重启MySQL服务:
sudo systemctl restart mysql原因:配置文件中指定的慢查询日志文件路径不存在或不可写。
解决方法:
确保配置文件中指定的慢查询日志文件路径存在,并且MySQL用户有写权限。例如:
slow_query_log_file = /var/log/mysql/slow-query.log确保/var/log/mysql目录存在,并且MySQL用户有写权限:
sudo mkdir -p /var/log/mysql
sudo chown mysql:mysql /var/log/mysql原因:慢查询日志文件过大,占用过多磁盘空间。
解决方法:
定期清理慢查询日志文件,或者设置日志轮转。可以使用logrotate工具进行日志轮转:
sudo apt-get install logrotate创建/etc/logrotate.d/mysql-slowquery文件,添加以下内容:
/var/log/mysql/slow-query.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 mysql mysql
}然后运行logrotate命令:
sudo logrotate -f /etc/logrotate.conf通过以上步骤,你可以成功开启MySQL慢查询日志,并解决常见的相关问题。