MySQL自带的日志以及InnoDB存储引擎所带的日志分别介绍如下:
MySQL自带的日志
-
错误日志(Error Log):
- 记录MySQL服务器启动、停止或运行过程中出现的错误信息。
- 有助于诊断MySQL服务器的故障。
-
查询日志(General Query Log):
- 记录MySQL服务器收到的所有SQL语句,无论这些语句是否执行成功。
- 可以用于审计或调试目的,但会对性能产生一定影响,因此通常不建议在生产环境中启用。
-
慢查询日志(Slow Query Log):
- 记录执行时间超过指定阈值的SQL语句。
- 有助于识别和优化性能低下的查询。
-
二进制日志(Binary Log,binlog):
- 记录所有更新数据库数据的SQL语句(如INSERT、UPDATE、DELETE等),以及可能导致数据改变的数据定义语句(DDL)。
- 是MySQL数据复制、数据恢复和增量备份的基础。
InnoDB存储引擎带的日志
-
重做日志(Redo Log):
- InnoDB存储引擎特有的物理日志。
- 记录数据页的物理修改,用于崩溃恢复,保证事务的持久性。
- 采用循环写的方式,即当日志文件写满时,会从头开始覆盖旧日志。
-
回滚日志(Undo Log):
- InnoDB存储引擎特有的逻辑日志。
- 记录事务在修改数据前的原始值,用于事务回滚和多版本并发控制(MVCC)。
- 在事务执行过程中,每当对数据页进行修改时,都会生成相应的undo日志。
综上所述,MySQL自带的日志主要包括错误日志、查询日志、慢查询日志和二进制日志,而InnoDB存储引擎特有的日志包括重做日志和回滚日志。这些日志在MySQL的运行、维护、优化以及数据恢复等方面都发挥着重要作用。
注意:Relay Log(中继日志)
Relay Log(中继日志)确实属于MySQL主从复制架构中的一部分,但它不是MySQL Server自带的日志类型,而是与主从复制功能紧密相关的日志。
在MySQL的主从复制过程中,主服务器(Master)会将其数据更改记录到二进制日志(Binary Log,简称binlog)中。这些binlog文件随后被从服务器(Slave)的I/O线程读取并写入到本地的Relay Log中。Relay Log在从服务器上生成,并记录了从主服务器中复制得到的binlog信息。之后,从服务器的SQL线程会读取Relay Log中的事件,并按照顺序执行这些事件以重演主服务器上的数据更改。
因此,虽然Relay Log不是MySQL Server自带的传统日志类型(如错误日志、查询日志、慢查询日志和二进制日志),但它在MySQL的主从复制架构中扮演着至关重要的角色。它确保了主从服务器之间的数据一致性和同步性,是实现MySQL高可用性和数据冗余的重要机制之一。
总的来说,Relay Log是MySQL主从复制过程中的一种特殊日志类型,它不属于MySQL Server自带的日志范畴,但它是实现MySQL主从复制功能不可或缺的一部分。