错误日志

MySQL的错误日志记录了 mysqld 启动和停止时,以及服务器在运行过程中出现的任何严重错误。

与binlog一样,在my.ini文件配置:

# error log输出的目录及文件
log-error="C:/1workspace/develop/db/mysql/mysql57/logs/errorlog"

通用查询日志

通用查询日志能够存放到一个文本文件或者表中,全部连接和语句被记录到该日志文件或表,默认不开启该日志。

在my.ini文件[mysqld]组配置通用查询日志:

#通用查询日志输出格式 [none|file|table|file,table]
log_output=file
#是否启用通用查询日志[on|off]        
general_log=on
#通用查询日志位置及名字
general_log_file="C:/1workspace/develop/db/mysql/mysql57/logs/generallog"

慢查询日志

慢查询日志记录的是查询较慢的SQL语句的日志,可用于对执行时间较长、执行效率较低的SQL语句的性能优化。

  1. 临时开启慢查询日志:
set global slow_query_log = on; 

如果想关闭慢查询日志,只需要执行:

set global slow_query_log = off;

2.临时设置慢查询时间临界点

查询时间高于这个临界点的都会被记录到慢查询日志中。

所有执行时间超过1秒的sql都将被记录到慢查询日志:

set long_query_time = 1;
  1. 设置慢查询存储的方式
set globle log_output = file;

这里设置为了file,就是说慢查询日志是通过file保存,默认是none,我们还可以设置为table,如果是table则慢查询信息会保存到mysql库下的slow_log表中。

  1. 查询慢查询日志的开启状态和慢查询日志储存的位置
show variables like '%quer%';

补充:事务日志

事务日志是InnoDB引擎特有的日志,可以帮助提高事务的效率。

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

事务日志采用追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所以采用事务日志的方式相对来说要快得多。

事务日志持久以后,内存中被修改的数据在后台可以慢慢的刷回到磁盘。目前大多数的存储引擎都是这样实现的,我们通常称之为预写式日志,修改数据需要写两次磁盘。

如果数据的修改已经记录到事务日志并持久化,但数据本身还没有写回磁盘,此时系统崩溃,存储引擎在重启时能够自动恢复这部分修改的数据。具有的恢复方式则视存储引擎而定。

查看事务日志参数:

mysql> SHOWGLOBAL VARIABLES LIKE '%log%';
+-----------------------------------------+-----------------------------------+
| Variable_name                           | Value                             |
+-----------------------------------------+-----------------------------------+
| innodb_flush_log_at_trx_commit          | 1             |
|innodb_locks_unsafe_for_binlog          |OFF                               |
| innodb_log_buffer_size                  | 8388608                           |
|innodb_log_file_size                    |5242880                           |
| innodb_log_files_in_group               | 2                      |
|innodb_log_group_home_dir               |./            |
|innodb_mirrored_log_groups              |1              |

总结

  • MySQL日志主要有:

错误日志、通用查询日志、慢查询日志、事务日志、二进制日志

  • MySQL日志的输出位置一般有三种方式:

file(文件),table(表)、none(不保存)

  • MySQL日志主要是用于:

异常监控、性能优化、数据恢复、主从同步