InnoDB中的日志

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情

日志文件记录了影响MySQL数据库的各种类型活动。 常见的日志文件有

  • 错误日志
  • 二进制日志
  • 慢查询日志
  • 查询日志

错误日志

错误日志文件对MySQL的启动、运行、关闭过程进行了记录。用户可以通过命令SHOW VARIABLES LIKE'log_error'来定位该文件。

慢查询日志

慢查询日志可以帮助我们定位可能会出问题的sql,Innodb中存在参数slow_query_type,

  • 0表示不将SQL语句记录到慢查询日志中
  • 1表示根据运行时间将SQL语句记录到慢查询日志中,该阈值可以通过参数long_query_time来设置,默 认值为10,代表10秒。
  • 2表示根据逻辑IO次数将SQL记录到慢查询日志中
  • 3表示根据运行时间及逻辑IO次数将SQL记录到慢查询日志中

查询日志

使用方法同慢查询日志

二进制日志-binlog

二进制日志(binary log)记录了对MySQL数据库执行更改的所有操作,如果一个update语句并没有使数据库修改,也可能会记录在日志中(稍后说为什么可能)。

由于binlog记录了对数据库的修改,因此我们可以将其用作远程数据库和master数据库之间同步

也可以通过二进制日志中的信息来进行审计,判断是否有sql注入等风险

在使用InnoDB时,所有未提交binlog会被记录到一个缓存中去,等该事务提交时直接将缓存刷新到文件中。该缓存的大小由binlog_cache_size决定,默认大小为32K。

binlog的文件格式有三种可能,分别是行,sql语句,和混合。

需要关注的其实也就是行和sql语句的区别。

sql语句虽然更加的经济(当改动行很多时,语句本身占用更少的空间)。但如果以sql语句存储的话,对于触发器,uuid这类操作,会导致主从服务器中的数据不一致。

猜你喜欢

转载自juejin.im/post/7085323405234290724