MYSQL8日志查询

MYSQL日志概述

image.png


MYSQL日志分类

image.png

  • 错误日志
  • 二进制日志
  • 查询日志
  • 慢查询日志

Mysql错误日志log-error

image.png
log_error 的默认保存位置为 /var/lib/mysql/主机名.err

-- 查看错误日志保存位置
show variables like 'log_error%';

在计算机中,stderr 是指标准错误输出流(Standard Error)。它是一个文件描述符(file descriptor),用于将程序运行时所产生的错误信息输出到屏幕或重定向到其它文件。

MySQL8 中,log_error 参数设置为 stderr 表示将错误日志输出到标准错误输出流中。这意味着 MySQL 会将错误日志信息直接打印到终端上,而不会将错误日志写入到文件中。
log_error_verbosity 参数用于控制 MySQL8 错误日志的详细程度。它的三个取值分别表示:

  • 1:仅记录错误和严重警告信息(默认设置)。
  • 2:记录错误、警告和普通警告信息。–建议值
  • 3:记录所有错误和警告信息,包括调试信息。

image.png

-- 查看错误日志的位置和日志级别
show variables like '%log_error%';

image.png
image.png


配置错误日志

MySql8log_error 的默认保存位置为 /var/lib/mysql/主机名.err
log-error变量是只读变量,不能通过set修改。
image.png
要配置错误日志的保存目录,需要修改my.cnf配置文件。
vim /etc/my.cnf

[mysqld]
# 指定错误日志路径
log_error=/var/log/mysqld.log
# 指定日志级别
log_error_verbosity=2

配置完成后要重启mysqld服务才能生效。


二进制日志binlog

二进制日志(BINLOG)记录了除了查询之外的所有语句,也就是所有的增删改语句。DDL语句和DML语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySql的主从复制,就是通过该BINLOG实现的。
MYSQL8的BINLOG默认开启的。
image.png

-- 查看binlog是否开启
show variables like '%log_bin%';

image.png


binlog格式

MySQL8binlog日志记录格式默认是ROW
image.png

MySQL8binlog格式有种:ROWSTATEMENTMIXED

  • ROW格式以每个修改行为单位记录更改事件,并将每个修改的行的前后值都记录在二进制日志中。可以确保从服务器上的数据与主服务器一致,但需要更多磁盘空间和网络带宽。
  • STATEMENT格式以SQL语句为单位记录更改事件,并将每个执行的SQL语句记录到二进制日志中。容易理解和分析,但可能会出现复制不一致问题。
  • MIXED格式是ROWSTATEMENT格式的混合体,根据实际情况选择最合适的方式来记录更改事件。既能减少日志开销,又能保证数据一致性。

MySQL 8的binlog格式建议选择Row格式或Mixed格式:

  • 如果数据一致性非常重要,则选择ROW格式;
  • 如果需要平衡日志开销和数据一致性,则选择MIXED格式;
  • 如果应用程序只执行简单的查询,则可以考虑使用STATEMENT格式。
-- 查看binlog的格式
show variables like 'binlog_format';

image.png


持久化配置binlog

image.png

[mysqld]
# 配置binlog文件前缀mysqlbin
## 生成的文件名:mysqlbin.00001,mysqlbin.00002
log_bin=mysqlbin

# 配置binlog的格式
binlog_format=MIXED

查看binlog事件

-- 查看所有binlog事件(日志)
show binlog events;

image.png

-- 查看当前正在使用的binlog文件的状态
-- 查看最新的binlog日志
show master status;

-- 查看指定binlog事件
show binlog events in 'binlog.000002';

image.png
image.png
image.png

可以使用mysqlbinlog命令查看二进制日志,也可以使用mysqldumpslow命令对普通查询日志进行分析统计


清空binlog

-- 清空所有的binlog日志文件
reset master;
-- binlog文件名又从00001开始

image.png


Mysql查询日志

MySql8的查询日志默认是未开启的。
注意:启用查询日志可能会对MySQL服务器性能产生一定的影响,因此在实际生产环境中建议谨慎使用,并根据实际需求进行相应的配置。
同时,启用查询日志后应定期清理日志文件和日志表以避免占用过多磁盘空间。

查询日志记录用户执行的所有SQL语句及其执行时间等信息,但不包括增删改操作。
image.png


配置日志查询

-- 查看查看日志是否开启
show variables like '%general_log%';

-- 查询日志的默认文件
/var/lib/mysql/主机名.log

-- 临时开启查询日志
set global general_log=1;

image.png

开启查询日志,将记录所有的SELECTINSERTUPDATEDELETE等语句,但不记录DDL(数据定义语言)语句,例如CREATEALTERDROP等语句。

[mysqld]
# 将查询日志输出到文件中
log_output=FILE
# 将查询日志输出到表,而不是文件
# log_output=TABLE
# 将查询日志输出到表和文件中
# log_output=FILE_AND_TABLE
# 启用查询日志
general_log=1
# 指定查询日志输出文件路径
general_log_file=/var/lib/mysql/general.log

配置完成后要重启mysqld服务才能生效。


慢SQL查询日志

sql慢查询。

image.png
如果你想记录DDL语句,可以使用MySQL 8的增强模式查询日志,该模式可以记录所有的SQL语句,包括SELECTINSERTUPDATEDELETECREATEALTERDROP等语句。

-- 查看慢sql查询是否开启
show variables like '%slow_query_log%';

-- 查看慢sql的判定时间
show variables like 'long_query_time';

image.png


临时开启慢SQL查询

-- 临时开启慢查询日志
set global show_query_log=1;

在这里插入图片描述


配置慢SQL查询日志

[mysqld]
# 将查询日志输出到文件中
log_output=FILE
# 启用查询日志
general_log=1
# 指定查询日志输出文件路径
general_log_file=/var/lib/mysql/general.log
# 使用系统时间戳记录日志
log_timestamps=SYSTEM
# 记录查询响应时间统计信息
query_response_time_stats=ON
# 记录所有管理员执行的语句到慢查询日志中
log_slow_admin_statements=ON
# 将查询执行时间设置为0,会记录所有查询语句
# long_query_time=0
# 慢sql的判定时间
long_query_time=10
# 启用慢查询日志功能
slow_query_log=ON
# 指定慢查询日志输出文件路径
slow_query_log_file=/var/lib/mysql/slow-queries.log
# 设置最小扫描行数限制,只有扫描行数超过此限制的查询才会被记录到慢查询日志中
min_examined_row_limit=1000

配置完成后要重启mysqld服务才能生效。


mysqldumpslow查看慢速查询日志中的查询

mysqldumpslow 是一个用于分析MySQL慢查询日志提高数据库性能的命令行工具。它可以用于识别导致MySQL数据库性能问题的慢SQL查询。

该工具会解析慢查询日志并将相似的查询分组,以便您识别模式并相应地优化数据库。它还可以帮助您跟踪导致性能问题的特定查询。

mysqldumpslow 的一些关键特性包括:

  • 可以按各种标准对查询进行排序,例如执行时间或执行次数。
  • 可以根据各种参数(如特定数据库或用户)过滤查询。
  • 可以以各种格式输出结果,包括制表符分隔值和 HTML。
# 按平均查询执行时间从高到低查看慢速查询日志中的查询
# -s 参数指定将日志文件中的查询按哪种方式进行排序
# c 表示按照查询执行平均时间排序
# -t 参数表示返回排名前 10 的查询
mysqldumpslow -t 10 -s c /var/log/mysql/mysql-slow.log

以下是mysqldumpslow的一些使用示例
-s :指定排序方式,默认按照查询时间倒序排列。可选值包括:t(按时间)、a(按查询次数)、l(按锁定时间)、r(按返回记录数)等。

-t :指定输出前几个查询,默认为10。
-g :指定匹配模式。例如,-g “left join” 只匹配包含“left join”的查询语句。
-a :同时显示每条查询的完整语句以及相关信息。
-r :反向排序。
-l :限制分析的日志行数。

  1. 显示慢查询日志中前 10 条最耗时的查询
# -s 参数指定将日志文件中的查询按哪种方式进行排序
## -s t 表示将慢查询日志按照执行时间排序
# -t 参数表示返回排名前 10 的查询
mysqldumpslow -s t -t 10 /path/to/slow-query.log
  1. 显示慢查询日志中执行时间大于等于 5 秒的查询,并按照执行时间排序
# -s 参数指定将日志文件中的查询按哪种方式进行排序
## -s t 表示将慢查询日志按照执行时间排序
# -t 参数表示返回排名前 10 的查询
mysqldumpslow -t 5 -s t /path/to/slow-query.log
  1. 显示慢查询日志中出现次数最多的 5 个查询,并按照出现次数排序
# -s 参数指定将日志文件中的查询按哪种方式进行排序
# c 表示按照查询执行平均时间排序
# -t 参数表示返回排名前 10 的查询
mysqldumpslow -t 5 -s c /path/to/slow-query.log
  1. 显示慢查询日志中特定数据库中的查询,并按照执行时间排序
# -s 参数指定将日志文件中的查询按哪种方式进行排序
## -s t 表示将慢查询日志按照执行时间排序
# -d 指定要分析的数据库
mysqldumpslow -s t -d mydatabase /path/to/slow-query.log
  1. 将查询结果输出为 HTML 格式
# -s 参数指定将日志文件中的查询按哪种方式进行排序
## -s t 表示将慢查询日志按照执行时间排序
# -t 参数表示返回排名前 10 的查询
mysqldumpslow -s t -t 10 --html /path/to/slow-query.log > output.html

慢sql分析优化

explain分析执行计划的指标字段
https://blog.csdn.net/omaidb/article/details/120040657

mysql优化
https://blog.csdn.net/omaidb/article/details/130289660


查看MySQL警告信息

-- 查看MySQL警告
show warnings;

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值