mysql总结-日志

日志类型

二进制日志、错误日志、通用查询日志、慢查询日志、中继日志(mysql8开始)、数据定义语句日志(mysql8开始)

慢查询日志:记录所有执行时间超过 long_query_time的所有查询,方便我们对查询进行优化。
通用查询日志:记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令,对我们复原操作的实际场景、发现问题,甚至是对数据库操作的审计都有很大的帮助。
错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便我们了解服务器的状态,从而对服务器进行维护。
二进制日志:记录所有更改数据的语句(没有查询),可以用于主从服务器之间的数据同步,以及服务器遇到故障时数据的无损失恢复。
中继日志:用于主从服务器架构中,从服务器用来存放主服务器二进制日志内容的一个中间文件。从服务器通过读取中继日志的内容,来同步主服务器上的操作。
数据定义语句日志:记录数据定义语句执行的元数据操作。

开启日志的缺点

降低MySQL数据库的性能:MySQL数据库需要耗费资源和时间去记录日志
占用大量的磁盘空间。对于用户量非常大、操作非常频繁的数据库,日志文件需要的存储空间设置比数据库文件需要的存储空间还要大。

 

通用查询日志

通用查询日志日志说明

记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令,对我们复原操作的实际场景、发现问题,甚至是对数据库操作的审计都有很大的帮助。

会记录所有的操作日志,会消耗数据库5%-10%的性能,一般是不开的,一如一些sql审计或问题排查进行临时打开。

通用查询日志的开启

查看当前状态:show VARIABLES like '%general%';

general_log (OFF/ON,默认是OFF), general_log_file(日志保存的文件位置)

临时配置:

SET GLOBAL general_log=on;#开启通用查询日志
SET GLOBAL general_log_file='path/filename';#设置日志文件保存位置

永久配置,在my.ini中配置
general_log=1 #为1表示开启通用日志查询,值为0表示关闭通用日志查询
log_output=FILE,TABLE#设置通用日志的输出格式为文件和表

通用查询日志的输出位置

可以是FILE(存储在数数据库的数据文件中的主机名.log),也可以是TABLE(存储在数据库中的mysql.general_log)

查看日志

直接查询mysql.general_log表进行查看

# 查看通用查询日志,使用其他命令more cat也可
vim /var/lib/mysql/VM-24-14-centos.log

删除日志

show VARIABLES like '%general%' 找到日志文件位置,进行手动删除

 

慢查询日志

慢查询日志说明

mysql慢查询日志是mysql提供记录的一种日志记录,用来记录mysql中响应时间超过阈值的语句、运行时间、锁表时间、扫描过的行数等

日志可以写在表中也可以写在文件中,如果性能要求比较高的话,建议写在文件里

默认情况下MySQL数据库是不开启慢查询日志的

慢查询日志的开启

查看是否开启:show variables like '%slow_query_log%';

查看slow_query_log的值是OFF还是ON,默认是OFF表示关闭

临时开启:set global slow_query_log='ON'

永久开启:在my.ini中配置 slow_query_log = ON

慢查询日志阈值

long_query_time指定了慢查询的阈值(单位秒),即如果执行语句的时间超过该阈值则为慢查询语句,默认值为10秒,通常设置为1秒。

查看设置的值:show variables like 'long_query_time%';

临时修改:set global long_query_time ='秒数' ;#不用关心小数点后面的

永久修改:在my.ini中设置 long_query_time = 阈值

慢查询日志输出位置

可以写到文件也可以写到表中(mysql.slow_log)

#查看日志输出类型
show variables like 'log_output%';

#查看日志输出文件地址
show variables like 'slow_query_log_file %';

#慢查询日志输出到表中
set global log_output='TABLE';
#慢查询日志仅输出到文本中(即:slow_query_log_file指定的文件)
set global log_output='FILE';
设置 slow_query_log_file输出位置
set slow_query_log_file = '路径.log'
#慢查询日志同时输出到文本和表中
set global log_output='FILE,TABLE';

#查看输出的格式
show variables like '%log_output%'

慢查询日志字段说明

不管是表还是文件,都具体记录了:是那条语句导致慢查询(sql_text),该慢查询语句的查询时间(query_time),锁表时间(Lock_time),以及扫描过的行数(rows_examined)等信息。

慢查询日志条数

在MySQL中有一个变量专门记录当前慢查询语句的个数:输入命令:show global status like ‘%slow%’;

未使用索引sql日志

查看是否开启:show variables like ‘%quer%’;

log_queries_not_using_indexes如果值设置为ON,则会记录所有没有利用索引的查询(注意:该设置生效的前提是slow_query_log的值设置为ON),一般在性能调优的时候会暂时开启。

错误日志

错误日志说明

错误日志记录了MySQL服务器启动、停止运行的时间,以及系统启动、运行和停止过程中的诊断信息,包括错误、警告和提示等。

错误日志的开启

错误日志功能是默认开启的。而且错误日志无法被禁止。

错误日志输出位置

默认情况下,错误日志存储在MySQL数据库的数据文件夹下

查看mysql数据目录:show VARIABLES like '%datadir%'

查看日志文件位置:show VARIABLES like '%log_error%';  log_error就是位置


日志文件名称默认为mysqld.log(linux系统)或hostname.err。如果需要定制文件名,则需要在my.cnf 或者 my.ini中做如下配置(修改后重启mysql):
log_error=[path/[filename]] #path为日志文件所在的目录路径,filename为日志文件名

错误日志的查看

找到文件目录用文本编辑器就可以查看,或者用linux命令进行查看

错误日志的删除

rm -f /var/log/mysql/mysqld.log    

也可以进行重命名文件:mv /var/log/mysql/mysqld.log /var/log/mysql/mysqld.log.old 

在运行状态下删除错误日志文件后,MySQL并不会自动创建日志文件。

重建日志:
install -omysql -gmysql -m0644 /dev/null /var/log/mysql/mysqld.log
mysqladmin -uroot -p flush-logs

posted @ 2023-04-25 17:30  星光闪闪  阅读(38)  评论(0)    收藏  举报