MySQL 日志

发布于:2025-02-22 ⋅ 阅读:(10) ⋅ 点赞:(0)

MySQL 日志

慢查询日志(Slow query log)

  • 慢查询⽇志由执⾏时间超过系统变量 long_query_time 指定的秒数的SQL语句组成,并且检
    查的⾏数⼤于系统变量 min_examined_row_limit 指定值。被记录的慢查询需要进⾏优化,
    可以使⽤mysqldumpslow客⼾端程序对慢⽇志进⾏分析汇总。
  • 获取初始锁的时间不计⼊执⾏时间,mysqld在执⾏完SQL语句并释放所有锁后才将符合条件的语
    句写⼊慢速查询⽇志,因此⽇志顺序可能与执⾏顺序不同。

慢查询日志的参数

  • long_query_time 的默认值是10,最小值是0;
  • 默认情况下,不记录管理语句,也不记录不使用索引的查询
  • 默认为关闭(不开启),要启⽤慢查询⽇志可以使⽤:请使用 –slow_query_log[={0|1}]
  • 默认日志名为host_name-slow.log,可以使用slow_query_log_file=file_name修改
  • 使用 –log-short-format 选项,以简要格式记录慢查询⽇志
  • 要记录管理语句,启⽤ log_slow_admin_statements 系统变量。管理语句包括 ALTER
    TABLEANALYZE TABLECHECK TABLECREATE INDEXDROP INDEX
    OPTIMIZE TABLEREPAIR TABLE
  • 要记录不使⽤索引的查询,启⽤ log_queries_not_using_indexes 系统变量。当记录不使
    ⽤索引的查询时,⽇志会快速增长,通过设置系统变量
    log_throttle_queries_not_using_indexes 限制每分钟写⼊慢查询⽇志同类查询的数
    量,默认值是0,表示无限制。

二进制日志(Binary log)

  • Linux下默认开启

  • ⼆进制⽇志包含数据库更改的"事件",不会记录 SELECT 和 SHOW ,例如:记录表的创建操作或

    表数据的更改,⼆进制⽇志还包含每个语句更新数据时花费的时间信息,启动⼆进制⽇志,对服务

    器性能稍微有些影响;

  • 除了基于⾏的⽇志模式,它还包含可能进⾏更改数据的语句事件,例如 DELETE 操作没有匹配到
    查找到的⾏;

  • ⼆进制⽇志的作用:

主从节点数据复制:从节点服务器读取主节点服务器上的⼆进制⽇志⽂件,并根据⼆进制⽇志
中记录的事件在从节点上执⾏相同的操作,保证主从节点服务器上数据⼀致,实现数据复制功
能。在主从复制专题中我们重点讲解复制过程;
数据恢复:从某个时间点恢复备份数据后,将重新执⾏备份时间点之后记录在⼆进制⽇志中的
事件。这些事件使数据库从备份点更新到当前最新状态

  • ⼆进制⽇志的语句中如果涉及⽤⼾的密码,则由服务器进⾏加密,不会以纯⽂本形式出现。

错误⽇志(Error log)

  • 主要记录MySQL服务器在启动、运行过程中发生的错误和异常情况。
  • 错误日志功能是默认开启的,且无法被禁止。

⼀般查询⽇志(General query log)

  • 记录客户端连接到MySQL服务器的时间、用户、主机等信息。
  • 记录客户端提交的所有SQL语句,包括数据的增删改查等操作。
  • 在MySQL数据库中,一般查询日志功能默认是关闭的。

中继日志(Relay Log)

  • 中继日志在从服务器上记录主服务器上的二进制日志(Binary Log)事件。
  • 从服务器通过读取和执行中继日志中的事件,实现与主服务器的数据同步。
  • 默认关闭

DDL日志(Data Definition Language)

  • 用于记录数据定义语言操作的日志。DDL操作用于管理、维护和修改数据库对象的结构,

    例如创建和修改数据表、视图、索引和存储过程等。

  • 默认关闭

回滚日志/撤销日志(undo log)

  • InnoDB存储引擎用来撤销SQL操作的一种日志。当一条写入类型的SQL语句执行时,都会记录Undo Log。

  • 事务回滚:当事务出现错误或需要主动执行回滚操作时,InnoDB使用Undo Log将事务的操作撤销,

    使数据库恢复到事务开始之前的状态。

  • MVCC(多版本并发控制):在并发场景下,InnoDB通过Undo Log支持MVCC,允许多个事务并发执行而不会互相阻塞。

    Undo Log保存了数据的多个版本,事务可以根据隔离级别读取适当的版本,而不是总是最新的数据。

重做日志(redo log)

  • Redo Log记录了对数据库所做的物理修改操作,这些修改操作是在事务执行过程中产生的。

    当系统发生故障或崩溃时,可以利用Redo Log进行数据的恢复,确保事务的持久性。