InnoDB中的日志
日志文件记录了影响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这类操作,会导致主从服务器中的数据不一致。
转载自:https://juejin.cn/post/7085323405234290724