mysql 7中日志类型

要么读书,要么旅行,身体和灵魂,必须有一个要去工作。

 

mysql  日志类型有很多种:

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

 

表格形式:

image

 

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 等则是日常运维和排查问题的关键帮手。

 

posted @ 2022-07-05 09:02  方达达  阅读(40)  评论(0)    收藏  举报