MySQL 日志初探

零、概述

MySQL 的日志分为 Error Log(错误日志),General Query Log(通用查询日志)、Slow Query Log(慢查询日志)、Binary Log(BinLog),各种日志各有各的用处和配置方式,接下来进行简单的介绍。


一、Error Log(错误日志)

错误日志记录了数据库服务器的启停、故障或异常情况及警告等信息。Error Log 默认开启,并可以通过 log_error 来控制 日志文件路径 或 错误日志的启停。

  • log_error = "< path >"
  • log_error = 0 / 1 控制启停,只能为 0 or 1,未作过实验,但建议错误日志应该随时打开。

日志级别

log_error_verbosity & log_warnings

以上两个系统变量都可以用来控制错误日志的输出级别,从MySQL 5.7.2开始,首选log_error_verbosity系统变量,而不是使用--log-warnings选项或log_warnings系统变量,这个参数从MySQL 8.0.3开始被移除了。

log_error_verbosity (新变量)

  • log_error_verbosity 为 1 错误信息。
  • log_error_verbosity 为 2 错误信息和告警信息。
  • log_error_verbosity 为 3 错误信息、告警信息和通知信息。

log_warnings (旧变量)

  • log_warnings 为0, 表示不记录告警信息。
  • log_warnings 为1, 表示告警信息写入错误日志。
  • log_warnings 大于1, 表示各类告警信息,例如有关网络故障的信息和重新连接信息写入错误日志。

二、General Query Log(通用查询日志)

通用查询日志包含对数据库操作的所有语句,默认 关闭 ,开启 General Query Log 会对数据库照成一定量的性能损失,慎重开启。

通过 general_log = "< ON / OFF >"系统变量控制开关。

通过 general_log_file = "< PATH >" 系统变量开控制日志文件的位置。

日志共分为 4 列:

  • 时间(Time):操作发生的时间,有一些不显示的原因是因为这些sql语句几乎是同时执行的,所以就不另外记录时间了.
  • 链接ID(Id):数据库链接的Id,在Connect操作连接到数据库时生成。
  • 命令类型(Command):Connect就是连接数据库,记录了谁(user@host)连接了那个数据库,Query就是查询数据库(增删查改都显示为查询),可以特定过虑一些操作.
  • 详情(Argument):命令具体所做的操作详情,可能是SQL,也可能是指令或解释。

三、Slow Query Log (慢查询日志)

慢查询日志应该是非常常用的,特别是在进行慢SQL调优时。默认 关闭

  • 通过 slow_query_log = "< ON/OFF >" 系统变量控制启停。
  • 通过 slow_query_log_file = "< path >" 系统变量控制日志文件保存位置。
  • 通过 slow_launch_time = "< time / 单位 秒 >" 系统变量控制记录的阈值,执行时间超过该阈值的SQL会被记录到慢查询日志中。
  • 通过 log_slow_admin_statements = "< ON / OFF >" 系统变量控制是否将 ANALYZE TABLE 和 ALTER TABLE 等管理语句记录到慢查询日志。默认 关闭 ,即只记录 CRUD 语句到日志中。
  • 通过 log_slow_slave_statements = "< ON / OFF >" 系统变量是否将从库(slave)中的慢查询写入到日志中。默认 关闭

慢查询日志共分四列:

  • 时间(Time): SQL发生的具体时间
  • 链接Id(Id): 表示了 谁(user@host)及 链接Id。
  • 概要(Command): 统计了查询的耗时(Query_time),加锁时间(Lock_time),查询返回的行数(Rows_sent),查询检察过的行数(Rows_examined)。
  • 详情(Argument):详情里记录了此次执行的指令或SQL。

四、Binary Log(BinLog)

BinaryLog,从名称里可以看出,他是一种二进制日志,它主要记录了对数据进行改动,包括表、数据改动等。也包括一些潜在改动,比如 UPDATE 或 DETELE 执行结果对任意一条数据都没影响的这种情况(DELETE FROM table WHERE 1 = 2)。除非使用 Row-based logging,否则会包含所有改动数据的 SQL Statement。

作用主要有:

  • 复制:MySQL Replication在Master端开启binlog,Master把它的二进制日志传递给slaves并回放来达到master-slave数据一致的目的。
  • 数据恢复:通过mysqlbinlog工具恢复数据
  • 增量备份: 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。

Binary Log在Mysql中默认 关闭

  • 通过 log_bin = "< ON / OFF >" 系统变量控制Binlog的启停。
  • 通过 log_bin_basename = "< path / name >" 系统变量控制Binlog文件的 主文件名 及路径,Log文件会根据切割条件自动切割为.000001 的形式。
  • 通过 log_bin_index = "< path >" 系统变量控制Binlog的索引文件位置。

关于Binlog的其他内容,限于篇幅,这里不展开讨论。

五、总结

以上内容在 MySQL 5.7.19 下验证过,其他版本可能有细节差异,不再另表。

下表总结了几种日志类型的作用和默认开启情况。

类型 作用 默认情况
Error Log 记录了数据启停,故障,警告等信息。 ON
General Query Log 记录了所有的数据库链接、语句执行情况,开启会增加数据库负担。 OFF
Slow Query Log 记录了执行时间大于阈值的SQL,调试执行性能相关问题时很有用。 OFF
Binary Log 记录了对数据库进行改动的相关事件,主要用于复制、数据恢复、增量备份等。 OFF

六、参考

[1].初探 MySQL 的 Binlog

[2].mysql日志详细解析

[3].MySQL 通用查询日志(General Query Log)

MySQL 日志初探的更多相关文章

  1. Mysql日志解析

    修改Mysql配置 Mysql配置地址为: C:\Program Files (x86)\MySQL\MySQL Server 5.5 如果无法修改可以把my.ini拷贝出来,修改完后,再拷贝回去! ...

  2. Mysql 日志 (转)

    MySQL日志: 主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 错误日志 在mysql数据库中,错误日志功能是默认开启的.并且,错误日志无法被禁止.默认情况下,错误日志存储在mys ...

  3. mysql日志与备份恢复

    一.mysql日志: mysql的日志种类有很多,常见的有二进制日志,一般查询日志,满查询日志,中继日志,事务日志等,具体信息可以通过 mysql> SHOW GLOBAL VARIABLES ...

  4. mysql日志开启和查看

    mysql日志开启和查看. 找到mysql根目录下的my.ini文件,打开在下面插入 log-bin=mysql-bin binlog_format=mixed 然后重启mysql. 在dos端登录m ...

  5. MySQL日志管理

    MySQL日志管理 2013年09月26日 ⁄ MySQL ⁄ 共 14266字 ⁄ 评论数 ⁄ 被围观 , views+ 一.日志类型: MySQL有几个不同的日志文件,可以帮助你找出mysqld内 ...

  6. Mysql日志操作

    Mysql日志 mysql的日志类型:错误日志: -log-err记录mysql服务的启动.运行.停止mysql服务时出现的问题查询日志: -log记录建立的客户端连接和执行的语句慢查询日志: -lo ...

  7. mysql日志详细解析

    MySQL日志: 主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志: 日志是mysql数据库的重要组成部分.日志文件中记录着mysql数据库运行期间发生的变化:也就是说用来记录mysql ...

  8. 如何查询MySql日志

    如何查询MySql日志 分类: mysql2012-02-23 19:14 26756人阅读 评论(2) 收藏 举报 mysqlcommandprintingserversocketoutput 今天 ...

  9. MYSQL启动报1067错误,系统日志中是“服务 mysql 意外停止” Mysql日志中则是:“Plugin \'FEDERATED\' is disabled”

    MYSQL启动报1067错误,系统日志中是"服务 mysql 意外停止" Mysql日志中则是:"Plugin \'FEDERATED\' is disabled&quo ...

随机推荐

  1. 【黑金教程笔记之007】【建模篇】【Lab 06 SOS信号之二】—笔记

    控制模块的协调角色. 实验六用到了实验四的按键消抖模块debounce_module.v和实验五的sos_module.v. 设计思路: debounce_module.v看成一个输入,sos_mod ...

  2. EL表达式(详解)

    EL表达式 1.EL基本内容 1)语法结构        ${expression} 2)[]与.运算符      EL 提供.和[]两种运算符来存取数据.      当要存取的属性名称中包含一些特殊 ...

  3. docker保存对容器的修改

    我有一个Ubuntu的镜像用命令docker run -i -t -v /home/zzq/app/:/mnt/software/ 0ef2e08ed3fa /bin/bash登录进去发现没vi编辑器 ...

  4. c语言程序设计案例教程(第2版)笔记(四)—指针、分配存储空间、文件

    零散知识点: 指针类型:每个变量占用的首单元地址称为这个变量的存储地址. “&”为“取地址运算符”.格式:&  变量名.功能:返回指定变量的存储地址. “*”为“取内容运算”.格式:* ...

  5. [SHOI2002]取石子游戏之三

    Wythoff's Game,详解请见浅谈算法--博弈论中的例6 /*program from Wolfycz*/ #include<cmath> #include<cstdio&g ...

  6. [IOI1998]Picture

    Description 在一个平面上放置一些矩形,所有的边都为垂直或水平.每个矩形可以被其它矩形部分或完全遮盖,所有矩形合并成区域的边界周长称为轮廓周长. 要求:计算轮廓周长. 数据规模: 0≤矩形数 ...

  7. Vasiliy's Multiset CodeForces -706D || 01字典树模板

    就是一个模板 注意这题有一个要求:有一个额外的0一直保持在集合中 #include<cstdio> #include<algorithm> using namespace st ...

  8. Hadoop集群搭建及MapReduce应用

    一.Hadoop集群的搭建与配置 1.节点准备 集群规划: 主机名 IP 安装的软件 运行的进程 weekend 01 192.168.1.60 jdk.hadoop NameNode.DFSZKFa ...

  9. ABP教程(二)- 将ABP在本地运行起来

    上一篇 我们介绍了什么是ABP,这一篇我们通过原作者的”简单任务系统”例子,演示如何运用ABP开发项目 从模板创建空的web应用程序 ABP提供了一个启动模板用于新建的项目(尽管你能手动地创建项目并且 ...

  10. 【JavaScript】之函数的this

    提起函数中的this是很多初学者较为苦恼的,也是很多工作一段时间的人也存在误解的,你问this指向的是谁,大多数人会随口一答当然是指向调用这个函数的元素,当然这也没什么错,可是函数的调用方法不同thi ...