MySQL日志文件分类

日志文件

  • 错误日志(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。这些情况有:

  1. 表的存储引擎为 NDB
  2. 使用了 UUID()、USER()、CURRENT_USER()、FOUND_ROWS()、ROW_COUNT()
  3. 使用了 INSERT_DELAY 语句
  4. 使用了用户自定义函数
  5. 使用了临时表
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容