日志文件
- 错误日志(error log) 数据库优化
- 二进制日志(bin log)
- 慢查询日志(slow query log) 定位可能存在问题的 SQL 语句
- 查询日志(log)
错误日志
错误日志文件对 MySQL 的启动、运行、关闭工程进行了记录。可以通过命令 SHOW VARIABLES LIKE ‘log_error’ 来定位该日志文件。该文件也记录了一些警告信息或正确信息。
慢查询日志
在 MySQL 启动时设一个阈值,将运行时间超过阈值的所有 SQL 语句都记录到慢查询日志文件中。
该阈值通过参数 long_query_time 设置,默认值是10,即10s。默认情况下,MySQL 不启动慢查询日志,需要手动将参数 log_slow_queries 设置为 ON 。
此外,将参数 log_slow_queries_not_using_indexes 设置为 ON 后,慢查询日志还会记录没有使用索引的 SQL 语句。
通过上面的描述可以知道慢查询日志是个非常有用的优化技巧,但是需要注意的是当数据库的容量较小时,可能因为数据库刚刚建立,此时很可能数据全部缓存在缓冲池中,使得 SQL 语句运行的时间可能非常短,导致慢查询日志捕获不到。
查询日志
记录了所有对 MySQL 数据库请求的信息,无论请求是否得到了正确的执行。默认文件名为:主机名.log 。
二进制日志
记录了对 MySQL 数据库执行更改的所有操作,即不包括 SELECT 和 SHOW。但是,若操作本身并没有导致数据库发生变化,那么该操作可能也会写入二进制日志中,如更改表中不存在的行的值。
作用:
- 恢复
- 复制
- 审计(audit):通过日志分析是否有对数据库的注入攻击
默认情况下,二进制日志文件不启动,需要手动指定参数来启动。
相关参数有
- max_binlog_size :指定最大值,超过后产生新的二进制日志文件,后缀+1,记录到索引文件,默认1G
- binlog_cache_size :事务过程中的二进制日志文件,提交后才会写到二进制日志文件中,默认32K
- sync_binlog :确定同步磁盘的时机
- binlog-do-db
- binlog-ignore-db
- log-slave-update
- binlog_format
重点说下 binlog_format ,他影响了记录二进制日志的格式。可选的值有 STATEMENT 、ROW 、MIXED。
STATEMENT :二进制日志文件记录的是日志的逻辑 SQL 语句
ROW : 记录的是表的行更改情况,导致日志文件增大
MIXED : 默认采用 STATEMENT ,在一些情况下使用 ROW。这些情况有:
- 表的存储引擎为 NDB
- 使用了 UUID()、USER()、CURRENT_USER()、FOUND_ROWS()、ROW_COUNT()
- 使用了 INSERT_DELAY 语句
- 使用了用户自定义函数
- 使用了临时表