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%';
命令查询一下调整相关配置
MySQL日志系列(1):MySQL各种日志相关推荐
- MySQL日志系列(2):binlog日志管理
目录 传送门 binlog 日志索引文件 查看当前日志文件SQL命令 binlog日志文件更新 binlog日志文件删除 自动删除日志文件配置 手动删除日志文件 暂时停止binlog日志 使用binl ...
- SpringBoot 日志系列:(二)日志配置
一.application.properties 或 application.yml 配置 1.1 日志级别 1.2 文件输出 1.3 日志输出格式 二.自定义日志配置 2.1 根节点 <con ...
- 【Mysql数据库系列】Mysql锁表信息查看与解决
解除mysql数据库锁表状态的两种方法 第一种: 1.查询是否锁表 show open tables where in_use > 0; 2.查询进程 show processlist; 或 s ...
- mysql 开发进阶篇系列 41 mysql日志之慢查询日志
一.概述 慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间.慢日志默认写入到参数datadir(数据目录)指定的路径下.默认文件 ...
- mysql 二进制日志详解_Mysql二进制日志详解
引言 注:图片取自网络 提一下比较重要的几个: 重做日志(Redo Log):重做日志是实现mysql事务的持久性的原理之一,当新增数据时,Redo Log会备份新数据,在事务提交前,只要持久化Red ...
- MySQL高级篇知识点——MySQL 事务日志
目录 1.redo 日志 1.1.为什么需要 REDO 日志? 1.2.REDO 日志的好处与特点 1.3.redo 的组成 1.4.redo 的整体流程 1.5.redo log 的刷盘策略 1.6 ...
- 清理MySQL undo log_清理mysql日志
[Mysql 学习]日志的维护 MySQL服务器可以创建各种不同的日志文件,从而可以很容易地看见所进行的操作.但是,对于生产库而言,会产生大量的日志占用大量磁盘空间,你必须定期清理这些文件,确保日志不 ...
- mysql 二进制日志变化_mysql-二进制日志
mysql---二进制日志 记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件 二进制日志的开启 #是否启用了日志 mysql> show variables like ...
- mysql 慢日志 作用_MySQL慢查询日志的作用和开启
前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.lon ...
最新文章
- 级联人脸检测--Detecting Faces Using Inside Cascaded Contextual CNN
- 全球及中国4-氨基间甲酚行业应用需求与发展策略分析报告2022版
- matlab梯度检测,Matlab:关于梯度的一阶导数边缘检测
- 日志审计产品(转载)
- 部署在Netweaver上的Fiori应用的WebContent文件夹
- matlab inline feval,matlab中关于函数句柄、feval函数以及inline函数的解析
- “七大属性加持,三个全新升级组件”这个高性能利器有点厉害
- 转载 Android入门学习_代码常用布局
- bootstrap table 合并行_ElementUI Table组件如何使用合并行或列功能深入解析
- 分享一个开源的项目,数据结构和算法必知必会的50个代码实现
- window安装ipython_windows ipython安装
- 编程专业人的良好习惯(练习、时间管理、压力、团队协作)
- 得物(毒)APP,8位抽奖码需求,这不就是产品给我留的数学作业!
- 小镇青年的神话背后,是你想不到的辛酸小镇青年
- 【Java】用java程序求李白的酒
- rviz点云渲染卡顿问题
- Office2016 打开excel出现丢失appvisvsubsystems32.dll
- python入门(四)小康小白
- iptables 防火墙中的SNAT和DNAT
- 微信小程序中vant/weapp安装,初始化,及使用
热门文章
- 旅游产品销售如何引流?旅游产品如何有效推广
- 【AliOS Things】首届灭虫活动,找Bug,赢AirPods,智能手表
- macOS Big Sur 11.7.8 (20G1351) 正式版 ISO、PKG、DMG、IPSW 下载
- The ‘Access-Control-Allow-Origin‘ header contains multiple values
- 最常见的linux命令(centOS 7.6)
- 分布式/微服务理论知识
- 2D向量,求某个向量或是某个点相对另一个向量来说是左边、还是右边
- 第一个用计算机动画模拟的商品是,数码动画的应用领域
- postgresql源码学习(21)—— 事务日志②-日志初始化
- from d2l import torch as d2l这个语句中torch报错的解决方法