日志作用
- 用于记录数据库的运行情况,以及用户对数据库执行的各类操作j记录;
- 当数据库发生异常时,可以根据日志分析和解决问题;
日志类型
日志 | 描述 |
---|---|
重做日志 redo log | 一种物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。 |
回滚日志 undo log | 一种逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现的,这一点是不同于redo log的。 |
二进制日志 bin log | 一种逻辑格式的日志,以二进制文件的形式记录了数据库中的操作,但不记录查询语句。 |
错误日志 error log | 记录着mysqld启动和停止,以及服务器在运行过程中发生的错误的相关信息。 |
慢查询日志 slow query log | 慢查询日志记录执行时间过长和没有使用索引的查询语句。 |
一般查询日志 general log | 记录了服务器接收到的每一个查询或是命令,无论这些查询或是命令是否正确甚至是否包含语法错误,general log都会将其记录下来。 |
中继日志 relay log | 中继日志类似二进制;可用于复制架构中,使从服务器和主服务器的数据保持一致。 |
- 一般这些日志不会全部开启,全部开启会影响数据库性能;
- 比较常用的是错误日志和慢查询日志
慢查询日志
参数说明
参数 | 描述 |
---|---|
slow_query_log | 是否开启慢查询日志,1表示开启,0表示关闭 |
slow_query_log_file | 慢查询日志存储路径 |
long_query_time | 阈值,当SQL语句的响应时间超过该阈值就会被记录到日志中 |
log_queries_not_using_indexes | 未使用索引的查询也被记录到慢查询日志中 |
log_output | 日志存储方式,默认为FILE; log_output=‘FILE’表示将日志存入文件; log_output=‘TABLE’表示将日志存入数据库; log_output=‘FILE,TABLE’表示同时将日志存入文件和数据库 |
开启与查看
#查看是否开启慢查询日志
show variables like 'slow%';
#临时开启慢查询日志
set global slow_query_log='ON';
set long_query_time=1;
#慢查询日志文件所在位置
show variables like '%datadir%';
知识总结,交流学习,不当之处敬请指正,谢谢!