1.MySQL的日志类型
日志用于记录数据库的运行情况,以及用户对数据库执行的各类操作。当数据库发生故障时,可以根据日志分析和解决问题,从而对数据库进行恢复。
日志 | 描述 |
---|---|
重做日志 | 重做日志是一种物理格式的日志,记录的是物理数据页面的修改信息,顺序写入redo log file |
回滚日志 | 回滚日志是一种逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现的,这一点是不同于redo log的 |
二进制日志 | 二进制日志是一种逻辑格式的日志,以二进制文件的形式记录了数据库中的操作,但不记录查询语句 |
错误日志 | 错误日志记录着mysqld的启动和停止以及服务器在运行过程中发生错误的相关信息 |
慢查询日志 | 慢查询日志记录执行时间过长和没有使用索引的查询语句 |
一般查询日志 | 记录了服务器接收到的每一个查询或命令,无论这些查询或命令是否正确甚至是否包含语法错误,general log都会将其记录下来 |
中继日志 | 中继日志类似于二进制;可用于复制架构,使从服务器和主服务器的数据保持一致 |
2.慢查询日志
慢查询日志用于记录MySQL数据库中响应时间超过指定阈值的语句。慢查询日志通常也被称为慢日志,因为它不仅仅只针对select语句,像insert、update、delete等语句,只要响应时间超过所设定阈值都会记录在慢查询日志中。
参数 | 描述 |
---|---|
slow_query_log | 是否开启慢查询日志,1表示开启,0表示关闭 |
slow_query_log_file | 慢查询日志存储路径,可选。注意:MySQL5.6之前的版本,参数名为log-slow-queries |
long_query_time | 阈值,当SQL语句的响应时间超过该阈值就会被记录到日志中 |
log_queries_not_using_indexes | 未使用索引的查询也被记录到慢查询日志中,可选 |
log_output | 日志存储方式,默认为FILE。log_output=‘FILE’表示将日志存入文件。log_output=‘TABLE’表示将日志存入数据库。log_output=‘FILE,TABLE’表示将日志同时存入文件和数据库 |
3.配置
#查看是否开启慢查询日志
show variables like 'slow%';
#临时开启慢查询日志
set slow_query_log='ON';
set long_query_time=1;
#慢查询日志文件所在位置
show variables like '%datadir%';