MySQL日志
二进制日志:记录所有更改数据的语句,用于用户数据复制
错误日志:记录mysql服务启动 运行或停止时出现的问题
通用查询日志:记录建立的客户端链接和执行的语句
慢查询日志:记录执行时间超过long_query_time的所有查询或不适用索引的查询
中继日志:记录赋值时从主服务器收到的数据改变
数据定义语句日志:
一、慢查询日志
记录执行时间超过指定时间的查询语句,可以找出哪些查询语句执行时间较长、执行效率较低
1、启动慢查询日志
默认是关闭的,开启2种方法:
第一、通过修改my.cnf 或者 my.ini 重启mysql服务开启慢查询日志
第二、通过set语句设置慢查询日志开关启动 慢查询日志功能
配置文件方式打开:
[mysqld] long_query_time=n slow_query_log=ON slow_query_log_file=[path[filename]]
说明:
long_query_time 设定阈值 超出设定值被记录到慢查询日志 默认10s n表示秒
slow_query_log 开启慢查询日志的开关
slow_query_log_file 慢查询日志的目录和文件名信息 path参数指定慢查询日志的存储路径
filename 参数指定日志的文件名,生成日志文件的完整名称为 filename-slow.err
如果不指定存储路径,默认存储到mysql数据库的数据文件夹下,如果不指定文件名,默认文件名为hostname-slow.log
mysql> show variables like '%slow%'; +-----------------------------+--------------------------+ | Variable_name | Value | +-----------------------------+--------------------------+ | log_slow_admin_statements | OFF | | log_slow_extra | OFF | | log_slow_replica_statements | OFF | | log_slow_slave_statements | OFF | | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | XTZJ-2021XXASFT-slow.log | +-----------------------------+--------------------------+ 7 rows in set, 1 warning (0.09 sec)
mysql> show variables like '%long_query_time%'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set, 1 warning (0.00 sec)
修改my.cnf
[mysqld] long_query_time=2 slow_query_log=ON
mysql> show variables like '%slow%'; +-----------------------------+--------------------------+ | Variable_name | Value | +-----------------------------+--------------------------+ | log_slow_admin_statements | OFF | | log_slow_extra | OFF | | log_slow_replica_statements | OFF | | log_slow_slave_statements | OFF | | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | XTZJ-2021XXASFT-slow.log | +-----------------------------+--------------------------+ 7 rows in set, 1 warning (0.00 sec)
日志文件:
C:\ProgramData\MySQL\MySQL Server 8.0\Data\XTZJ-2021XXASFT-slow.log
2、查看和分析慢查询日志
查看慢查询日志所在目录
mysql> show variables like '%slow_query_log_file%'; +---------------------+--------------------------+ | Variable_name | Value | +---------------------+--------------------------+ | slow_query_log_file | XTZJ-2021XXASFT-slow.log | +---------------------+--------------------------+ 1 row in set, 1 warning (0.00 sec)
查看慢查询日志要求的查询超时时长:
mysql> show variables like '%long_query_time%'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set, 1 warning (0.00 sec)
3、关闭慢查询日志
2种方法,修改my.cnf 或 my.ini
[mysqld]下的slow_query_log 设置为off或者0 保存重启mysql服务
[mysqld]
slow_query_log=OFF
或者注释
#slow_query_log=OFF
或者 删除该项
[mysqld]
使用set语句设置
SET GLOBAL slow_query_log=OFF;
4、删除慢查询日志
慢查询日志目录默认为mysql数据目录,手动删除ELEPH-PC-slow.log
使用命令mysqladmin 重新生成慢查询日志文件
mysqladmin -uroot -p flush-logs
注意:通用查询日志和慢查询日志都只存在新的日志文件中,如果需要旧的查询日志,就必须事先备份