事务日志
保障了RDBMS事务的ACID,磁盘的随机IO转换为顺序IO,尽可能降低宕机对内存中数据造成的影响。
事务日志分为undo log和redo log
- undo log中记录了未正常提交的事务,因为事务未正确执行完,因此必须回滚,从而保证数据一致性
- redo log中记录了已正常提交但未同步到持久化存储上的情况,因此MySQL会重新执行一遍事务,然后让数据存储到磁盘上,从而保证数据一致性。
错误日志
记录MySQL守护进程启动和关闭过程中产生的错误信息,运行中产生的错误信息
二进制日志
主要用于主从复制架构,日志审计。记录了可能引起数据库内容更改的SQL语句或数据行记录,例如新增(Insert)、更新(Update)、删除(Delete)、授权信息变更(Grant Change)等,还会记录变更语句的发生时间、执行时长、操作数据等额外信息,但是它不会记录诸如Select、Show等这些不会引起数据修改的SQL语句。
涉及常用命令:
查看二进制日志有哪些
show master logs
查看当前使用的日志文件
show master status
查看指定二进制日志的事件详细信息
show binlog events in 'mysql-bin.000004'
中继日志
中继日志主要用于在主从复制架构中,在 slave节点上开启该日志类型,用于从master同步二进制日志数据;
查询日志
开启查询日志功能,会记录所有的查询操作,这在繁忙的数据库应用中会增加额外的IO开销,磁盘空间增长也会很快,不建议开启;通常用于DBA调试优化时临时开启
慢查询日志
查询日志,所有的查询都会记录;但慢查询日志会记录执行比较慢的查询语句,
究竟执行多久定义为慢,这个可以通过变量long_query_time来设定,
慢查询通常会开启,便于DBA进行分析并进行性能优化
开启慢查询
法一:vim /usr/local/mysql/my.conf
slow_query_log = 1
long_query_time = 3
法二:mysql -uroot -pnibaba -e "set global slow_query_log on;"
查看慢查询日志
cat /data/mysql/bogon-slow.log