Mysql 中的日志种类
-
binlog
二进制日志文件
-
undo log
回滚日志,实现事务的原子性和MVCC
-
redo log
重做日志,实现事务持久性
-
relay log
中继日志
-
error log
错误日志
-
slow query log
慢查询日志
-
general log
一般查询日志
binlog
binlog 记录了所有的 DDL (创建表、修改表、删除表)、DML(crud)操作,包含语句的消耗时间。主要目的是复制和恢复
使用场景
- 主从复制
master 端开启binlog, 主节点将二进制文件传递给从节点保持数据一致性。
-
数据恢复
使用mysqlbinlog工具恢复数据
undo log
提供回滚和MVCC,数据修改时不仅记录了redo log,还记录了undo log,如果因为某些原因事务失败或回滚失败,可以借助undo 进行回滚. undo log 是逻辑日志,可以认为delete 时,undo log 会记录一条insert 记录,反之亦然,update 操作时,会记录相反的update 记录。
redo log
redo 记录事务执行后的状态,事务开启后就会产生,重启mysql 时,根据redo log 进行重做,达到持久性。
relay log
error log
错误日志记录了MySQL Server每次启动和关闭的详细信息以及运行过程中所有较为严重的警告和错误信息。
slow query log
慢日志记录执行时间过长和没有使用索引的查询语句,报错select、update、delete以及insert语句,慢日志只会记录执行成功的语句。
查看慢查询时间:
show variables like “long_query_time”;默认10s
查看慢查询配置情况:
show status like “%slow_queries%”;
查看慢查询日志路径:
show variables like “%slow%”;
开启慢日志
set global slow_query_log = 1;