欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL日志

程序员文章站 2022-11-17 09:27:02
日志文件对于任何应用程序都是非常重要的,许多操作都需要记录到日志,然后可以利用日志文件查错纠错等。 mysql中当然也有日志,mysql的日志大概分为五种,即错误日志、查询日志、慢查询日志、二进制日志和事务日志。 查看日志相关的全局变量。 一、错误日志 在mysql数据库中,错误日志功能是默认开启的 ......

日志文件对于任何应用程序都是非常重要的,许多操作都需要记录到日志,然后可以利用日志文件查错纠错等。

mysql中当然也有日志,mysql的日志大概分为五种,即错误日志、查询日志、慢查询日志、二进制日志和事务日志。

查看日志相关的全局变量。

-- 查询日志相关全局变量
show global variables like '%log%';

 

一、错误日志

在mysql数据库中,错误日志功能是默认开启的,并且,错误日志无法被禁止。

mysql的日志主要记录服务器启动和关闭过程的信息、服务器运行过程中的错误信息、事件调度器运行一个事件时产生的信息等。

-- 查看错误日志文件的地址
show global variables like 'log_error';

-- 查看警告信息是否也写入到错误日志中,默认值为2。如果要启用,将其值设置为1;如果要禁用,将其值设置为0。
show global variables like 'log_warnings';

mysqladmin命令重新创建一个新的错误日志文件。

-- mysqladmin命令重新创建一个新的错误日志文件,原错误日志文件加上后缀old
mysqladmin -u root -p flush-logs

sql语句重新创建一个新的错误日志文件。

-- 重新创建一个新的错误日志文件,原错误日志文件加上后缀old
flush logs;

 

二、查询日志

由于查询日志会记录用户所有的操作,在使用量比较大时服务器的I/O操作较多,会大大降低服务器的性能,所以默认为关闭的,并且不建议开启。

-- 查看查询日志是否开启
show global variables like 'general_log';

-- 查看查询日志的文件地址
show global variables like 'general_log_file';

-- 是否开启日志,设置为开启时,表示开启所有的日志功能
show global variables like 'log';

-- 查看日志输出的格式,可以是表(table)或文件(file)。如果设置为table,则日志在mysql.general_log表中;如果设置为none,则不启用日志
show global variables like 'log_output';

 

三、慢查询日志

慢查询日志是用来记录执行时间超过指定超时时间的查询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化。

一般建议开启,它对服务器性能的影响微乎其微,但是可以记录mysql服务器上执行时间超时的查询语句。

-- 查看超时时间,单位为秒(s)
show global variables like 'long_query_time';

-- 查看是否开启慢查询日志
show global variables like 'log-slow-queries';

-- 查看慢查询日志是否开启,如果设置为开启,则执行时间超过超时时间,即为慢查询
show global variables like 'slow_query_log';

-- 查看慢查询日志的文件地址
show global variables like 'slow_query_log_file';

 

四、二进制日志

二进制日志也叫作变更日志,主要用于记录修改数据或有可能引起数据改变的mysql语句,并且记录了语句发生时间、执行时长、操作的数据等。

所以通过二进制日志可以查询mysql数据库中进行了哪些变化。

 

 

五、事务日志

事务日志(InnoDB存储引擎所特有的日志)可以帮助提高事务的效率。

使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把改修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。

-- 查看在事务提交时InnoDB是否同步日志从缓冲到文件中
-- 如果为0,表示每隔一秒同步一次,并进行一次磁盘访问,会造成大量的磁盘I/O,性能很差
-- 如果为1,表示只有在事务提交时才会同步,并进行一次磁盘访问
-- 如果为2,表示只有在事务提交时才会同步,但不进行磁盘访问,可能会丢失整个事务
show global variables like 'innodb_flush_log_at_trx_commit';

-- 查看InnoDB事务日志组的文件个数
show global variables like 'innodb_log_files_in_group';

-- 查看InnoDB事务日志组的文件地址
show global variables like 'innodb_log_group_home_dir';

-- 查看是否对事务日志做镜像
show global variables like 'innodb_mirrored_log_groups';