MySQL日志系列(1):MySQL各种日志

目录

传送门

MySQL日志分类

错误日志

查看错误日志

设置错误文件

通用查询日志

查看通用查询日志

设置通用查询日志 

binlog

查看binlog日志

设置binlog

慢查询日志

查看慢查询日志

​编辑

设置慢查询日志

数据库版本说明


传送门

对于一些开发来说,MySQL大多数时候可能只是单纯的使用来存储数据,会写几句SQL就敢上手写代码了。

久了之后,开发过程中比较关注的也是索引的使用,Mysql索引是什么

或者高级一些的锁的使用,Mysql锁系列(1):概述

MySQL日志分类

在程序优化中,有很多优化的地方及方案,但是SQL查询优化肯定是其中一项。

上面提到,开发的时候不仅仅是实现功能,还要关注性能,MySQL索引的正确使用就起到关键作用。但是一开始设计好的索引,在程度运行中并没有发挥作用,或者随着数据量上升导致索引失效,这个时候就需要动态的监控SQL执行时间来发现这些发问题。那么通过MySQL的慢查询日志就可以查询到执行比较的慢的查询语句SQL,然后再针对性优化。

索引优化跟MySQL是有密切关联的。了解Mysql的日志也是很有好处的,比如binlog可以用来做为主从复制。

MySQL的日志大致分为以下几类:

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

错误日志

错误文件一般是mysql.err文件(文件名称可以自定义)。记录MySQL服务的启动,运行或停止服务时出现的问题,

查看错误日志

比如下面这种日志的样式,因为是按文本文件记录,可以直接打开,比如

cat /data/mysql/mysql.err

会展示如下图所示的日志格式 

里面会记录MySQL相关的操作,比如启动日志

/usr/local/mysql/bin/mysqld (mysqld 5.7.36-log) starting as process ...

 停止日志

/usr/local/mysql/bin/mysqld: Shutdown complete

还有主要的错误日志,里面记录刚才启动失败的原因

2022-08-24T15:18:49.857529Z 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.7.36-log) starting as process 137459 ...
mysqld: File '/data/mysql/bin-log/bin_log.index' not found (Errcode: 2 - No such file or directory)
2022-08-24T15:18:49.860114Z 0 [ERROR] Aborting

设置错误文件

MySQL的错误日志默认都是开启的,一般只会根据需要修改日志路径。可以通过命令查询当前错误日志的设置

SHOW VARIABLES like '%log_error%';

查询出当前的配置为

这个路径可以在配置文件my.cnf里面设置

log-error=/data/mysql/mysql.err

log-error=path+filename,其中path为路径,filename为文件名称,一般为.err结尾

修改了这个配置之后,需要重启服务

service mysql restart

通用查询日志

查询日志也叫通用查询日志,文件一般是mysql.log文件(文件名称可以自定义)

查看通用查询日志

会记录MySQL的所有用户操作,包括服务启动,关闭,还有查询更新等SQL语句,如下命令

tail -fn 200 mysql.log

可以展示下面日志格式

上面的日志记录了客户端用户连接,用户为root

Connect	root@ip on  using TCP/IP

 root用户连接上了以后,在nacos库里面执行了下面的查询

select * from config_info;

在通用日志里面也进行了记录

Init DB	nacos
2022-09-10T02:36:03.923428Z	    6 Query	SET PROFILING=1
2022-09-10T02:36:03.959440Z	    6 Query	SHOW STATUS
2022-09-10T02:36:04.006402Z	    6 Query	SHOW STATUS
2022-09-10T02:36:04.074408Z	    6 Query	select * from config_info
2022-09-10T02:36:04.206927Z	    6 Query	SHOW STATUS
2022-09-10T02:36:04.312479Z	    6 Query	SELECT QUERY_ID, SUM(DURATION) AS SUM_DURATION FROM INFORMATION_SCHEMA.PROFILING GROUP BY QUERY_ID
2022-09-10T02:36:04.402987Z	    6 Query	SELECT STATE AS `状态`, ROUND(SUM(DURATION),7) AS `期间`, CONCAT(ROUND(SUM(DURATION)/0.003750*100,3), '%') AS `百分比` FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID=3 GROUP BY STATE ORDER BY SEQ
2022-09-10T02:36:04.699803Z	    6 Query	SELECT * FROM `nacos`.`config_info` LIMIT 0
2022-09-10T02:36:04.735794Z	    6 Query	SHOW COLUMNS FROM `nacos`.`config_info`

设置通用查询日志 

该日志默认都是关闭的,可以通过命令查询当前通用查询日志的设置

SHOW VARIABLES like '%general_log%';

 查询出当前的配置为

一共2项配置,其中

  • general_log表示是否开启,ON-开启,OFF-关闭
  • general_log_file表示日志路径

这个路径可以在配置文件my.cnf里面设置

general_log=ON

general_log_file=path+filename,其中path为路径,filename为文件名称,一般为.log结尾

修改了这个配置之后,需要重启服务

binlog

binlog就是通常意义的二进制日志,文件一般是binlog.index文件(文件名称可以自定义)

查看binlog日志

记录所有更改数据有语句,可以用于数据复制,比如下面

在控制台执行了一条插入语句,则会生成如上的binlog日志

INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`, `encrypted_data_key`) 
VALUES ('11', 'test11', 'DEFAULT_GROUP', 'test:\r\n  id: aa', 'e761ae7c0bf7356db9d8104423581b6b', '2022-06-18 14:40:49', '2022-06-18 14:40:49', 'nacos', '112.45.96.24', '', '', NULL, NULL, NULL, 'yaml', NULL, '');

 binlog生成的日志可能有的打开不是这个的SQL语句,而是一些看不懂的日志格式,比如

这是因为可以在MySQL配置文件中my.cnf

binlog可以设置日志格式

  • STATEMENT:每一条会修改数据的sql语句会记录到binlog中
  • ROW:不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了
  • MIXED:以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式

设置binlog

 该日志默认都是关闭的,可以通过命令查询当前日志的设置

SHOW VARIABLES like '%log_bin%';

 查询出当前的配置为

可以通过设置其中1项配置,其中

  • log-bin,来启用并设置binlog的路径,比如log-bin=/data/mysql/bin_log/binlog

这个路径可以在配置文件my.cnf里面设置

log-bin=path,其中path为路径,文件名称由系统决定,不用做设置

修改了这个配置之后,需要重启服务

慢查询日志

记录所有执行时间超过设置阈值时间的SQL,或者不使用索引的查询,阈值时间可以通过long_query_time设置,可以全局查询出来默认为10s

SHOW VARIABLES like '%long_query%';

查看慢查询日志

 文件一般是slow.log文件(文件名称可以自定义)

设置慢查询日志

该日志默认是关闭的,可以通过命令查询当前查询日志的设置

SHOW VARIABLES like '%slow_query%';

 查询出当前的配置为

 

一共2项配置,其中

  • slow_query_log表示是否开启,ON-开启,OFF-关闭
  • slow_query_log_file表示日志路径

这个路径可以在配置文件my.cnf里面设置

slow_query_log=ON

slow_query_log_file=path+filename,其中path为路径,filename为文件名称,一般为.log结尾

修改了这个配置之后,需要重启服务

数据库版本说明

以上所有配置都是基于MySQL版本5.7.36,可能不同版本的配置有所不同。可以通过

SHOW VARIABLES like '%log%';

命令查询一下调整相关配置 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值