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

一、错误日志

错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。
该日志是默认开启的,默认存放目录/var/log/,默认的日志文件名为mysqld.log 。(yum安装)

MySQL里查看位置  :

mysql> show variables like '%log_error%';
+---------------------+---------------------+
| Variable_name       | Value               |
+---------------------+---------------------+
| binlog_error_action | ABORT_SERVER        |
| log_error           | /var/log/mysqld.log |
| log_error_verbosity | 3                   |
+---------------------+---------------------+
3 rows in set (0.01 sec)

实例:

在一台服务器修改MySQL的配置文件uuid,打开另一个窗口动态查看错误日志

[root@zhuku ~]# vim /var/lib/mysql/auto.cnf 
重启服务
[root@zhuku ~]# systemctl restart mysqld
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
报错了修改uuid  加一位,然后打开另一个终端  动态查看错误日志[root@zhuku ~]# tail -f /var/log/mysqld.log    -----这是另一个窗口显示2023-10-03T08:02:12.032739Z 0 [ERROR] Garbage characters found at the end of the server_uuid value in auto.cnf file. It should be of length '36' (UUID_LENGTH). Clear it and restart the server. 
2023-10-03T08:02:12.032782Z 0 [ERROR] Initialization of the server's UUID failed because it could not be read from the auto.cnf file. If this is a new server, the initialization failed because it was not possible to generate a new UUID.
2023-10-03T08:02:12.032789Z 0 [ERROR] Aborting

二、二进制日志

二进制日志(binlog)记录所有的DDL语句和DNL语句,但不包括数据查询语句。

作用:1.灾难时的数据恢复

2.MySQL的主从复制,在MySQL8版本中,默认二进制日志时开启的,涉及的参数如下:

mysql> show variables like '%log_bin%';
+---------------------------------+--------------------------------+
| Variable_name                   | Value                          |
+---------------------------------+--------------------------------+
| log_bin                         | ON                             |
| log_bin_basename                | /var/log/mysql/mysql-bin       |
| log_bin_index                   | /var/log/mysql/mysql-bin.index |
| log_bin_trust_function_creators | OFF                            |
| log_bin_use_v1_row_events       | OFF                            |
| sql_log_bin                     | ON                             |
+---------------------------------+--------------------------------+
6 rows in set (0.00 sec)###  log_bin_basename是最终生成的二进制文件存放地址
###  log_bin_index 是日志索引文件

日志格式

日志格式含义
statement  基于sQL语句的日志记录,记录的是SQL语句,对数据进行修改的SQL都会记录在日志文件中。
row基于行的日志记录,记录的是每一行的数据变更(默认)
mixed  混合了STATEMENT和ROW两种格式,默认采用STATEMENT,在某些特殊情况下会自动切换为ROW进行记录。
mysql> show variables like '%binlog_format%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.00 sec)

查看二进制日志

由于日志是以二进制方式存储的,不能直接读取,需要通过二进制日志查询工具mysqlbinlog来查看,具体语法: 
mysqlbinlog   [ 参数选项]    logfilename

参数选项:
   -d              指定数据库名称,只列出指定的数据库相关操作。
   -o              忽略掉日志中的前n行命令。
   -v               将行事件(数据变更)重构为SQL语句
   -w              将行事件(数据变更)重构为SQL语句,并输出注释信息

实验:

由于默认是ROW,在MySQL中修改表的数据,查看二进制文件是如何显示的

mysql> select * from zhucong;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | aaa  |   21 |
|    2 | bbb  |   21 |
|    3 | ccc  |   21 |
+------+------+------+
3 rows in set (0.00 sec)mysql> update zhucong set id=101;
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 0

查看二进制日志

[root@zhuku mysql]# mysqlbinlog -v mysql-bin.000001 ### UPDATE `db2`.`zhucong`
### WHERE                     -------where是更新条件
###   @1=100                    -----@是字段
###   @2='aaa'
###   @3=21
### SET
###   @1=101
###   @2='aaa'
###   @3=21
### UPDATE `db2`.`zhucong`
### WHERE
###   @1=100
###   @2='bbb'
###   @3=21
### SET
###   @1=101
###   @2='bbb'
###   @3=21
### UPDATE `db2`.`zhucong`
### WHERE
###   @1=100
###   @2='ccc'
###   @3=21
### SET
###   @1=101
###   @2='ccc'
###   @3=21
# at 457
#231003 17:31:47 server id 1  end_log_pos 488 CRC32 0xec1bf22b 	Xid = 21
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

语法是:mysqlbinlog   参数   二进制日志文件名字

修改日志格式

默认是ROW

[root@zhuku ~]# vim /etc/my.cnf     #修改配置文件进去添加:
binlog-format=statement重启服务:
# systemctl restart mysqld查看是否修改成功
mysql> show variables like '%binlog_format%';
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+
1 row in set (0.00 sec)

实验2

创建一个新表,添加数据

mysql> use db2;
mysql> create table student(id int,name varchar(10),age int);
mysql> insert into student(id,name,age) values(1,'tom',18),(2,'jack',19),(3,'ml',20);mysql> select * from student;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | tom  |   18 |
|    2 | jack |   19 |
|    3 | ml   |   20 |
+------+------+------+
3 rows in set (0.00 sec)

观察二进制日志是否有记录

[root@zhuku mysql]# cd /var/lib/mysql
[root@zhuku mysql]# ls[root@zhuku mysql]# mysqlbinlog mysql-bin.000002  
切记: 修改完数据的日志格式以后,将产生新的二进制日志文件

日志删除

三、查询日志

查询日志中记录了客户端的所有操作语句,而二进制日志不包含查询数据的SQL语句。默认情况下,查询日志是未开启

mysql> show variables like '%general%';
+------------------+---------------------------+
| Variable_name    | Value                     |
+------------------+---------------------------+
| general_log      | OFF                       |
| general_log_file | /var/lib/mysql/congku.log |
+------------------+---------------------------+
2 rows in set (0.01 sec)

想要打开查询日志,可以设置配置文件

vim /etc/my.cnf加入下面俩行
general_log=1
#该选项用来开启查询日志,可选值: 0或者1 ; 0代表关闭,1 代表开启general_log_file=/var/lib/mysql/mysql_chaxun.log#设置日志的文件名,如果没有指定,默认的文件名为host_ name.log重启MySQL服务;
systemctl restart mysqld

由于查询日志的存放路径是/var/lib/mysql 因此我们可以通过动态查看

实践

窗口一输入:
[root@zhuku ~]# mysql -pzyq123mysql> show databases;
mysql> use db1;
mysql> show tables;
mysql> select * from hh;窗口二动态查询:
tail -f /var/lib/mysql/mysql_chaxun.log 2023-10-04T03:22:25.293695Z	    5 Connect	root@localhost on  using Socket
2023-10-04T03:22:25.294124Z	    5 Query	select @@version_comment limit 1
2023-10-04T03:22:29.661774Z	    5 Query	show databases
2023-10-04T03:23:23.658351Z	    5 Query	SELECT DATABASE()
2023-10-04T03:23:23.658684Z	    5 Init DB	db1
2023-10-04T03:23:23.659608Z	    5 Query	show databases
2023-10-04T03:23:23.660486Z	    5 Query	show tables
2023-10-04T03:23:23.660882Z	    5 Field List	hh 
2023-10-04T03:23:23.682859Z	    5 Field List	idol 
2023-10-04T03:23:27.395442Z	    5 Query	show tables
2023-10-04T03:23:32.343584Z	    5 Query	select * from hh

四、慢查询日志

慢查询日志记录了所有执行时间超过参数long_ query_ _time设置值并且扫描记录数不小于min_ examined_ _row_ _limit的所有的SQL语句的日志,默认未开启。long_ query_ _time 默认为10秒,最小为0,精度可以到微秒。

#慢查询日志
slow_ query_ _log=1
#执行时间参数
long_ query_ _time=2

默认情况下,不会记录管理语句,也不会记录不使用索引进行查找的查询。可以使用log_ _slow_ _admin_ statements和更改此行为log_ _queries_ not_ _using_ indexes, 如下所述

#记录执行较慢的管理语句
log_ slow_ admin_ statements =1 
#记录执行较慢的未使用索引的语句
log_ _queries_ not_ using_ indexes = 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/114058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序路由传参的方法?

小程序路由传参的方法有两种: 1.通过URL参数传递:可以在跳转页面时在URL中携带参数,目标页面可以通过获取URL参数来使用。使用wx.navigateTo或wx.redirectTo方法进行页面跳转,并在URL中添加参数。 示例代码如下: // …

2019年亚太杯APMCM数学建模大赛A题基于图像分析的二氧化硅熔化表示模型求解全过程文档及程序

2019年亚太杯APMCM数学建模大赛 A题 基于图像分析的二氧化硅熔化表示模型 原题再现 铁尾矿的主要成分是二氧化硅,而二氧化硅是铁尾矿成分中最难熔化的部分。因此,铁尾矿的熔融行为可以用二氧化硅的熔融行为来表示。然而,高温熔池的温度超过…

Android FloatingActionButton 使用神坑记录

1.FloatingActionButton 死活都不是圆形 必须加上下面这个属性才是圆形 app:shapeAppearance"style/ShapeAppearanceOverlay.Material3.Button"2.FloatingActionButton 中间的icon不居中 加上下面的属性,然后大小跟你的控件大小一致 app:fabCustomSiz…

C语言标准规范版本介绍

0 Preface/Foreword ANSI:American National Standards Institute,美国国家标准协会 ISO:International Organization for Standardization,国际标准组织 IEC:International Electrotechnical Commission&#xff0…

Jmeter的性能测试

性能测试的概念 定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。 由定义可知性能关注的是软件的非功能特性,所以一般来说性能测试介入的时机是在功能测试…

Python---练习:while循环嵌套(用两次while三步走--里外各一次)

1、循环嵌套的引入 案例: 有天女朋友又生气了,惩罚:说3遍“老婆大人, 我错了”,这个程序是不是循环即可?但如果女朋友说:还要刷今天晚饭的碗,这个程序怎么书写? 思考&…

面试题 01.06. 字符串压缩

​​题目来源: leetcode题目,网址:面试题 01.06. 字符串压缩 - 力扣(LeetCode) 解题思路: 计算压缩后的字符串长度,如果该长度小于原字符串长度,返回压缩后的字符串,否则…

MOSFET(五):DrMos

一、简介 DrMos(Driver MOSFET)技术是 Intel 于2004年推出的服务器主板节能技术,即把 2 个MOSFET和 1 个MOS驱动器 三合一,集成在一个封装中。集成后的 DrMos 面积是分离MOSFET的 ,功率密度是其 倍,通过搭…

Flink中的时间和窗口操作

1.窗口概念 在大多数场景下,我们需要统计的数据流都是无界的,因此我们无法等待整个数据流终止后才进行统计。通常情况下,我们只需要对某个时间范围或者数量范围内的数据进行统计分析:如每隔五分钟统计一次过去一小时内所有商品的点击量;或者每发生1000次点击后,都去统计一…

android 13/14高版本SurfaceFlinger出现VSYNC-app/VSYNC-appSf/VSYNC-sf剖析

问题背景: 了解surfaceflinger的vsync同学都可能知道vsync属于一个节拍器,主要用来控制有节奏的渲染,不至于会产生什么画面撕裂等现象。 一般vsync都有会有2部分: app部分vsync,控制各个app可以有节奏的上帧 surfacef…

UVM-什么是UVM方法学

概念简介 百度对UVM的解释如下: 通用验证方法学(Universal Verification Methodology, UVM)是一个以SystemVerilog类库为主体的验证平台开发框架,验证工程师可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境 UVM…

GIT 分支管理办法

GIT 分支管理办法 一. 大型项目分支管理中存在的痛点 大型项目中需求的上线存在很大的不确定性,而且往往存在多版本、多团队、多开发并行的情况。尤其是大型企业对上线分支中编号的管理十分严苛,严禁夹带上线。这时对于开发而言,没有一个好…

ubuntu18.04服务器双网口配置上外网

记录一下配置服务器过程,本以为简单,结果整了一天。 服务器有2个网口,网口2是用来上外网的,原来用的01-netcfg.yaml进行ip地址设置,主要就用2条命令: vi /etc/netplan/01-netcfg.yaml (打开后…

UE4 AI群集实现

逻辑就不用说了,就是计算对应图形位置让每个Pawn移动到该位置 因为有时候AI与AI会卡住 所以加上这个Bool为true,以及设置两个AI之间至少隔的距离,设置在一个合理的参数即可 有时候AI群集,AI与AI会比较紧密,可以将Caps…

初始 c++(1)

目录: 目录 1: 命名空间的详解 2:c的输入与输出关键字及理解 3:详细讲解第一个c程序(每段代码的意思) 4:缺省参数的理解 5:函数重载 引言:从今天开始我们就开始学习c了,让我们一起开始新的知识吧! 1:命名空间 所谓的命名空间…

分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测(SE注意力机制)

分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测(SE注意力机制) 目录 分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测(SE注意力机制)分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLAB实…

【MySQL】视图、函数、存储过程优缺点

文章目录 1. 概述2. 视图2.1 优点2.2 缺点 3. 存储过程与存储函数3.1 优点3.2 缺点 1. 概述 因为视图、函数、存储过程的使用一般具有使用少或具备争议的特点,所以该章主要记录对应的优缺点,需要使用时需结合业务谨慎评估是否使用 2. 视图 一个或者多…

Tomcat设置IP黑名单和白名单server.xml

方式一&#xff1a; -- 只允许192.168.1.2和192.168.2.3 <Context path"" docBase"xxxAdmin" debug"0" reloadable"true" ><Valve className"org.apache.catalina.valves.RemoteAddrValve" allow"192.168.1.…

用 pytorch 训练端对端验证码识别神经网络并进行 C++ 移植

文章目录 前言安装安装 pytorch安装 libtorch安装 opencv&#xff08;C&#xff09; 准备数据集获取训练数据下载标定 编码预分析 数据集封装格式 神经网络搭建神经网络训练神经网络测试神经网络预测C 移植模型转换通过跟踪转换为 Torch Script通过注解转换为 Torch Script 编写…

Python基础复习【第二弹】【黑马】

本篇是观看b站黑马视频所做的笔记第一弹&#xff0c;为99-126节。 b站-黑马Python import json from pyecharts.charts import Line from pyecharts.charts import Bar from pyecharts.options import * from pyecharts.globals import ThemeType # 1.1 将一个列表转换为json…