目录一. MySQL 日志有哪些二. 各种日志分析2.1 错误日志2.2 二进制日志2.3 通用查询日志2.4 慢查询日志2.5 中继日志2.6 数据定义语句日志2.7 补充点三. 日志有什么用(优点)四. 日志的弊端一. MySQL 日志有哪些MySQL 数据库为我们提供了很多种不同类型的日志文件用来存储不同类型的日志。主要有错误日志二进制日志通用查询日志慢查询日志。在MySQL8之后又新增了两种日志中继日志和数据定义语句日志(简单了解)。二. 各种日志分析2.1 错误日志错误日志记录 MySQL 服务器的启动运行或停止 MySQL 服务时出现的任何严重问题的相关信息当数据库出现任何问题无法正常使用时建议首先查询此日志。方便我们了解服务器的状态从而对服务器进行维护。错误日志在数据库中是默认开启的。2.2 二进制日志二进制日志记录所有DDL(数据定义语句)和DML(数据操纵语句)但不包括查询(SELECTSHOW)语句。此外1二进制日志还可以用于数据恢复如果 MySQL 数据库发生意外停止可以通过二进制日志文件查看用户查看用户执行了哪些操作对数据库服务器文件做了哪些修改然后通过二进制日志文件中的数据恢复数据库服务器2二进制日志用于主从数据同步由于日志的延续性和时效性主服务器可以把它的二进制日志文件传递给其他从服务器来达到数据同步的目的。MySQL8.0版本中二进制日志在数据库中是默认开启的。MySQL 服务器中有多种格式来记录二进制日志具体格式见下图2.3 通用查询日志通用查询日志记录了客户端的所有增删改查操作语句并且以 SQL 语句的方式记录在通用查询日志中而二进制日志中不包含SELECT查询数据的 SQL 语句。通用查询日志是默认关闭的需要手动开启。如果在业务比较繁忙的系统中开启通用查询日志那么通用查询日志的文件是会非常大的。实际开发过程中可以根据需求考虑是否开启。2.4慢查询日志慢查询日志记录所有执行时间超过 long_query_time(默认是10秒可以另外设置最小为0) 的所有查询并且记录了扫描记录数不小于 min_ examined_row_limit 的所有 SQL 语句的日志。通过慢查询日志可以让我们清楚的知道哪些 SQL 语句执行速度较慢影响整体系统的性能方便我们对 SQL 语句做优化。慢查询日志功能默认也是关闭的。2.5 中继日志中继日志用于主从服务器架构中从服务器用来存放主服务器二进制日志内容的一个中间文件。从服务器通过读取中继日志的内容来同步主服务器上的操作。2.6 数据定义语句日志数据定义语句日志记录数据定义语句执行的元数据操作。2.7 补充点在上述六个数据库日志文件中只有二进制日志采用的是二进制的方式存储日志信息其余五个日志都是采用文本文件的方式存储日志信息。三. 日志有什么用(优点)通过上面对各个日志的简单介绍我们大致可以从中得出一个共同的作用——通过日志文件我们就可以知道数据库内部发生了哪些事当数据库出现故障时我们就可以通过日志快速定位故障原因。四. 日志的弊端日志功能会降低MySQL服务器的性能。因为在查询非常繁忙的数据库服务器中如果开启了通用查询日志和慢查询日志MySQL会花费很多时间来记录日志。日志会占用大量磁盘空间。因为日志也是需要文件进行存贮的嘛对于用户量大操作繁杂的数据库而言日志文件需要的存储空间设置比数据库文件需要的存储空间还要大。