mysql 7中日志类型
要么读书,要么旅行,身体和灵魂,必须有一个要去工作。
mysql 日志类型有很多种:
- InnoDB重做日志(redo log):用于确保事务的持久性,并帮助在系统崩溃时进行恢复。
- InnoDB回滚日志(undo log):记录事务修改前的数据版本,用于多版本并发控制(MVCC)和事务回滚。
- 二进制日志(bin log):记录所有更改数据库内容的语句,以及它们执行时的确切时间。这些日志对于复制和数据恢复是重要的。
- 错误日志(error log):记录MySQL启动、运行或停止时出现的问题。这包括错误消息、警告和某些特定于服务器的消息
- 慢查询日志(slow query log):记录执行时间超过long_query_time值的SQL语句。这有助于发现和优化性能瓶颈。
- 一般查询日志(general log):记录MySQL服务器接收到的所有客户端请求。这有助于监视和分析服务器上的活动
- 中继日志(relay log):在复制从服务器上使用,存储从主服务器接收的数据更改。
表格形式:

Redo log-重做日志
作用:确保持久性(Durability)。当系统崩溃重启时,InnoDB会通过Redo Log重做那些已提交但还没来得及写入磁盘的事务,防止数据丢失。
特点:它是物理日志,记录的是“在某个数据页上做了什么修改”,并且是循环写入固定大小的文件。
Undo log-回滚日志
作用:保证原子性(Atomicity)。如果事务执行失败或执行ROLLBACK,Undo Log能提供回滚所需的信息,将数据恢复到修改前的状态。
特点:它是逻辑日志,记录了数据的反向操作(如INSERT对应DELETE)。它也是实现MVCC(多版本并发控制) 的关键,为读操作提供数据的历史版本。
二进制日志 (Binary Log / Binlog):
作用:记录了所有修改数据库数据的DDL和DML语句。它是逻辑日志,记录了SQL语句或行变更的“逻辑”。
用途:是主从复制的基础,也是基于时间点的数据恢复的关键。
中继日志 (Relay Log):
作用:在主从复制架构的从库(Slave)中使用。
工作流程:从库的I/O线程从主库获取Binlog,并写入本地的Relay Log;随后从库的SQL线程会读取并执行Relay Log中的内容,以实现与主库的数据同步。
错误日志 (Error Log):
作用:记录MySQL服务器启动、运行或停止过程中的错误、警告和关键信息。是排查系统级问题的首要检查对象。
查询日志 (General Query Log):
作用:记录所有发送到MySQL服务器的SQL语句及客户端连接信息。
注意:内容非常详细,数据量大,对性能有影响,通常只在调试或审计时临时开启。
慢查询日志 (Slow Query Log):
作用:记录执行时间超过long_query_time阈值,或未使用索引的SQL语句。
用途:是性能优化和SQL调优最重要的工具之一,用于定位需要优化的“慢SQL”。
此外,在MySQL 8.0中还引入了DDL日志,用于记录原子DDL操作(如DROP TABLE)的元数据变更,以保证这类操作的原子性。
简单来说,Redo Log 和 Undo Log 保证了事务的可靠性,Binary Log 是实现主从复制和数据恢复的基础,而 Error Log、Slow Query Log 等则是日常运维和排查问题的关键帮手。

浙公网安备 33010602011771号