Mysql日志系统-Mysql serve层2
一、InnoDB引擎层的日志
1、通用查询日志,默认关闭
MySQL通用查询日志:
- 它是记录建立的客户端连接和执行的所有DDL和DML语句(不管是成功语句还是执行有错误的语句),默认情况下,它是不开启的。
- 请注意,它也是一个文本文件。
- 可以通过以下的sql查看查询日志的状态:
SHOW VARIABLES LIKE '%general_log%';
使用以下命令开启通用查询日志,一般不开启,这是为了测试,当然也可以修改配置文件,重启服务:
# 在全局模式下,开启通用查询日志,1表示开启,0表示关闭
SET GLOBAL general_log=1;#执行语句
SELECT * FROM `my_student`;
SELECT * FROM `my_student`;
开启后,我们随便执行sql语句之后,你会发现data目录多了以下文件:
查看文件 / 使用more命令查看该文件:
more VM-12-17-centos.log
2、慢查询日志
mysql8.0版本慢查询日志默认是开启的,使用如下命令查看慢查询日志的状态:SHOW VARIABLES LIKE '%slow_query_log%';
那么,何为慢?mysql通过一个变量 ‘long_query_time’ 来确定sql慢不慢,执行时间大于该值就会被记录在慢查询日志中,默认是10s:服务器动时会生成慢查询日志并记录 / 执行sql语句的时间大于默认时间也会记录
show variables like 'long_query_time'#修改
set long_query_time = 3;
以下是【慢查询日志】的记录文本:
优化MySQL:
- 通过慢查询日志查看哪些语句存在问题,对这些问题做处理;
- 根据当前服务器设置更大的buffer pool;
- 查看binlog,binglog刷盘频繁也会影响性能,关闭binlog
3、错误日志
错误日志(Error Log)主要记录 MySQL 服务器启动和停止过程中的信息、服务器在运行过程中发生的故障和异常情况等。一旦发生mysql服务无法启动、程序崩溃一定要记得去查询错误日志:SHOW VARIABLES LIKE '%log_error%';
我们随便人为一个错误导致他无法启动,重新启动mysql命令如下:
service mysqld restart
systemctl mysqld restart
我们将inndb的系统表空间文件重命名,重新启动mysql服务,发生问题:
查询错误日志,寻找蛛丝马迹:
修改回正确的名字,重新启动成功:
查看window错误日志: