mysql的错误日志和慢查询日志是数据库运维中非常重要的两类日志,前者记录了数据库启动、运行、停止过程中的错误信息,后者记录了执行时间超过指定阈值的查询语句,掌握它们的查看方法能有效提升数据库问题排查和性能优化的效率。

一、mysql错误日志查看方法
1. 查看错误日志默认存储位置
mysql的错误日志存储路径可以通过sql语句直接查询,执行以下命令即可获取当前错误日志的文件路径:
-- 查询错误日志文件路径 SHOW VARIABLES LIKE 'log_error';
执行后会返回类似log_error的变量名,对应的值就是错误日志的完整存储路径,比如/var/log/mysql/error.log。
2. 直接查看错误日志文件
知道日志路径后,可以通过服务器命令行直接查看文件内容,常用命令如下:
- 查看全部日志:
cat /var/log/mysql/error.log - 查看最后100行日志:
tail -n 100 /var/log/mysql/error.log - 实时跟踪日志更新:
tail -f /var/log/mysql/error.log
3. 修改错误日志存储路径
如果需要自定义错误日志的存储位置,可以修改mysql的配置文件my.cnf(Linux系统)或my.ini(Windows系统),在[mysqld]模块下添加或修改以下配置:
[mysqld] # 自定义错误日志路径,注意路径需要有mysql用户的读写权限 log_error = /data/mysql_logs/error.log
修改完成后重启mysql服务即可生效。
二、mysql慢查询日志查看方法
1. 开启慢查询日志
mysql默认可能没有开启慢查询日志,首先需要确认慢查询日志的状态,执行以下sql语句:
-- 查看慢查询日志是否开启 SHOW VARIABLES LIKE 'slow_query_log'; -- 查看慢查询的时间阈值,单位秒 SHOW VARIABLES LIKE 'long_query_time';
如果slow_query_log的值为OFF,需要手动开启,执行以下命令:
-- 开启慢查询日志,重启后失效,永久生效需要修改配置文件 SET GLOBAL slow_query_log = 'ON'; -- 设置慢查询时间阈值为2秒,执行时间超过2秒的查询会被记录 SET GLOBAL long_query_time = 2; -- 设置慢查询日志的存储路径 SET GLOBAL slow_query_log_file = '/data/mysql_logs/slow.log';
2. 永久开启慢查询日志
如果希望慢查询日志永久生效,需要修改mysql配置文件,在[mysqld]模块下添加以下配置:
[mysqld] # 开启慢查询日志 slow_query_log = ON # 慢查询时间阈值,单位秒 long_query_time = 2 # 慢查询日志存储路径 slow_query_log_file = /data/mysql_logs/slow.log # 记录未使用索引的查询 log_queries_not_using_indexes = ON
修改后重启mysql服务,配置即可永久生效。
3. 查看慢查询日志内容
慢查询日志文件中记录了所有符合条件的查询语句,直接查看文件内容即可:
# 查看慢查询日志全部内容 cat /data/mysql_logs/slow.log # 查看最后50行内容 tail -n 50 /data/mysql_logs/slow.log
日志内容中会包含查询的执行时间、锁定时间、发送的行数、扫描的行数以及完整的sql语句,方便分析查询性能问题。
4. 使用工具分析慢查询日志
如果慢查询日志内容较多,手动查看效率较低,可以使用mysql自带的mysqldumpslow工具进行分析,常用命令如下:
# 查看慢查询日志中执行时间最长的10条语句 mysqldumpslow -s t -t 10 /data/mysql_logs/slow.log # 查看慢查询日志中出现次数最多的10条语句 mysqldumpslow -s c -t 10 /data/mysql_logs/slow.log
其中-s参数指定排序方式,t表示按查询时间排序,c表示按查询次数排序,-t参数指定返回的记录条数。
三、注意事项
- 日志文件会占用磁盘空间,需要定期清理或归档,避免磁盘空间不足。
- 慢查询日志的时间阈值不要设置过小,否则会记录大量普通查询,影响数据库性能。
- 修改配置文件后一定要重启mysql服务才能让配置生效,临时通过sql语句修改的配置在重启后会恢复默认值。