计算机网络/计算机科学与应用/系统/运维/开发

MySQL日志

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


注意:通用查询日志和慢查询日志都只存在新的日志文件中,如果需要旧的查询日志,就必须事先备份


mysql 日志

无论人生上到哪一层台阶,阶下有人在仰望你,阶上亦有人在俯视你,你抬头自卑,低头自得,唯有平视,才能看见真实的自己。

评论

^