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

浙公网安备 33010602011771号