[MySQL]错误日志

2021/4/28 19:25:18

本文主要是介绍[MySQL]错误日志,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

错误日志(errorlog)

默认是开启的,而且从5.5.7以后无法关闭错误日志,错误日志记录了运行过程中遇到的所有严重的错误信息,以及 MySQL每次启动和关闭的详细信息。

二进制日志(bin log)

记录数据变化

binlog记录了数据库所有的ddl语句和dml语句,但不包括select语句内容,语句以事件的形式保存,描述了数据的变更顺序,binlog还包括了每个更新语句的执行时间信息。如果是DDL语句,则直接记录到binlog日志,而DML语句,必须通过事务提交才能记录到binlog日志中。 生产中开启数据备份、恢复、主从

DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。
DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 和select 等。(增添改查)
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。

通用查询日志(general query log)

啥都记录 耗性能 生产中不开启

慢查询日志(slow query log)

SQL调优 定位慢的 select

默认是关闭的。

需要通过以下设置进行开启:

#开启慢查询日志
slow_query_log=ON
#慢查询的阈值
long_query_time=3
#日志记录文件如果没有给出file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名,但不
是绝对路径名,文件则写入数据目录。
slow_query_log_file=file_name

记录执行时间超过long_query_time秒的所有查询,便于收集查询时间比较长的SQL语句

重做日志(redo log)

  1. 什么时候产生:(事务开始执行后,立刻保存的日志,保存内容是本次事务的操作内容)

事务开始之后就产生redo log,redo log的落盘并不是随着事务的提交才写入的,而是在事务的执行过程中,便开始写入redo log文件中。

  1. 什么时候释放

当对应事务的脏页写入到磁盘之后,redo log的使命也就完成了,重做日志占用的空间就可以重用(被覆盖)。

  1. 作用

确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。

  1. 内容

物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。

重做日志的目的:万一实例或者介质失败,重做日志文件就能派上用场。

每个InnoDB存储引擎至少有一个重做日志文件组,每个文件组下至少有2个重做日志文件,如默认的ib_logfile0、ib_logfile1。InnoDB存储引擎先写重做日志文件1,当达到文件的最后时,会切换至重做日志文件2,当重做日志文件2也被写满时,会再被切换到重做日志文件1中。

图片

回滚日志(undo log)

  1. 什么时候产生:(事务开始前,对当前数据库数据的备份。)

事务开始之前,将当前是的版本生成undo log,undo 也会产生 redo 来保证undo log的可靠性

  1. 什么时候释放:

当事务提交之后,undo log并不能立马被删除,而是放入待清理的链表。由purge线程判断是否由其他事务在使用undo段中表的上一个事务之前的版本信息,决定是否可以清理undo

  1. 作用:

保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读

  1. 内容:

逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现的,这一点是不同于redo log的。

中继日志(relay log)

从主服务器复制过来的日志:从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后从服务器SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致

show variables like '%relay%';

结果

+---------------------------+----------------------------------+

| Variable_name             | Value                            |

+---------------------------+----------------------------------+

| max_relay_log_size        | 0                                |

| relay_log                 | relay-mysql                      |

| relay_log_basename        | /var/lib/mysql/relay-mysql       |

| relay_log_index           | /var/lib/mysql/relay-mysql.index |

| relay_log_info_file       | relay-log.info                   |

| relay_log_info_repository | FILE                             |

| relay_log_purge           | ON                               |

| relay_log_recovery        | ON                               |

| relay_log_space_limit     | 0                                |

| sync_relay_log            | 10000                            |

| sync_relay_log_info       | 10000                            |

max_relay_log_size
relay log 允许的最大值,如果该值为0,则默认值为 max_binlog_size (1G);
如果不为0,则 max_relay_log_size 则为最大的relay_log文件大小;
relay_log
定义 relay_log 的位置和名称,如果值为空,则默认位置在数据文件的目录;
relay_log_index
定义 relay_log 索引的位置和名称,记录有几个 relay_log 文件,默认为2个
relay_log_info_file
定义 relay-log.info 的位置和名称
relay-log.info 记录 master 主库的 binary_log 的恢复位置和 从库 relay_log 的位置;


                   

这篇关于[MySQL]错误日志的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程