目录

传送门

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%';

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

MySQL日志系列(1):MySQL各种日志相关推荐

  1. MySQL日志系列(2):binlog日志管理

    目录 传送门 binlog 日志索引文件 查看当前日志文件SQL命令 binlog日志文件更新 binlog日志文件删除 自动删除日志文件配置 手动删除日志文件 暂时停止binlog日志 使用binl ...

  2. SpringBoot 日志系列:(二)日志配置

    一.application.properties 或 application.yml 配置 1.1 日志级别 1.2 文件输出 1.3 日志输出格式 二.自定义日志配置 2.1 根节点 <con ...

  3. 【Mysql数据库系列】Mysql锁表信息查看与解决

    解除mysql数据库锁表状态的两种方法 第一种: 1.查询是否锁表 show open tables where in_use > 0; 2.查询进程 show processlist; 或 s ...

  4. mysql 开发进阶篇系列 41 mysql日志之慢查询日志

    一.概述 慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间.慢日志默认写入到参数datadir(数据目录)指定的路径下.默认文件 ...

  5. mysql 二进制日志详解_Mysql二进制日志详解

    引言 注:图片取自网络 提一下比较重要的几个: 重做日志(Redo Log):重做日志是实现mysql事务的持久性的原理之一,当新增数据时,Redo Log会备份新数据,在事务提交前,只要持久化Red ...

  6. MySQL高级篇知识点——MySQL 事务日志

    目录 1.redo 日志 1.1.为什么需要 REDO 日志? 1.2.REDO 日志的好处与特点 1.3.redo 的组成 1.4.redo 的整体流程 1.5.redo log 的刷盘策略 1.6 ...

  7. 清理MySQL undo log_清理mysql日志

    [Mysql 学习]日志的维护 MySQL服务器可以创建各种不同的日志文件,从而可以很容易地看见所进行的操作.但是,对于生产库而言,会产生大量的日志占用大量磁盘空间,你必须定期清理这些文件,确保日志不 ...

  8. mysql 二进制日志变化_mysql-二进制日志

    mysql---二进制日志 记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件 二进制日志的开启 #是否启用了日志 mysql> show variables like ...

  9. mysql 慢日志 作用_MySQL慢查询日志的作用和开启

    前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.lon ...

最新文章

  1. 级联人脸检测--Detecting Faces Using Inside Cascaded Contextual CNN
  2. 全球及中国4-氨基间甲酚行业应用需求与发展策略分析报告2022版
  3. matlab梯度检测,Matlab:关于梯度的一阶导数边缘检测
  4. 日志审计产品(转载)
  5. 部署在Netweaver上的Fiori应用的WebContent文件夹
  6. matlab inline feval,matlab中关于函数句柄、feval函数以及inline函数的解析
  7. “七大属性加持,三个全新升级组件”这个高性能利器有点厉害
  8. 转载 Android入门学习_代码常用布局
  9. bootstrap table 合并行_ElementUI Table组件如何使用合并行或列功能深入解析
  10. 分享一个开源的项目,数据结构和算法必知必会的50个代码实现
  11. window安装ipython_windows ipython安装
  12. 编程专业人的良好习惯(练习、时间管理、压力、团队协作)
  13. 得物(毒)APP,8位抽奖码需求,这不就是产品给我留的数学作业!
  14. 小镇青年的神话背后,是你想不到的辛酸小镇青年
  15. 【Java】用java程序求李白的酒
  16. rviz点云渲染卡顿问题
  17. Office2016 打开excel出现丢失appvisvsubsystems32.dll
  18. python入门(四)小康小白
  19. iptables 防火墙中的SNAT和DNAT
  20. 微信小程序中vant/weapp安装,初始化,及使用

热门文章

  1. 旅游产品销售如何引流?旅游产品如何有效推广
  2. 【AliOS Things】首届灭虫活动,找Bug,赢AirPods,智能手表
  3. macOS Big Sur 11.7.8 (20G1351) 正式版 ISO、PKG、DMG、IPSW 下载
  4. The ‘Access-Control-Allow-Origin‘ header contains multiple values
  5. 最常见的linux命令(centOS 7.6)
  6. 分布式/微服务理论知识
  7. 2D向量,求某个向量或是某个点相对另一个向量来说是左边、还是右边
  8. 第一个用计算机动画模拟的商品是,数码动画的应用领域
  9. postgresql源码学习(21)—— 事务日志②-日志初始化
  10. from d2l import torch as d2l这个语句中torch报错的解决方法