mysql中的各种日志

news2024/12/26 11:13:52

错误日志

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

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

二进制日志

二进制日志记录所有的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 -pzyq123

mysql> 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.coloradmin.cn/o/1068670.html

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

相关文章

300.最长递增子序列

贪心二分查找 贪心:上升子序列尽可能长,序列上升尽可能慢,每次在上升子序列后加上的那个数尽可能小数组d,长度为len的最长上升子序列,d[i]为长度为i的最长上升子序列的末尾元素最小值,起始len1&#xff0c…

Python--入门

标识符 标识符由字母,数字,下划线_组成 第一个字符不能是数字,必须是字母或下划线 标识符区分大小写 关键字 关键字即保留字,定义标识符时不能使用关键字,python中的关键字如下图 注释 python中的单行注释用 # 多行注…

口袋参谋:0销量宝贝,如何快速获的流量曝光?

​如今的淘宝天猫,新品前期无销量前提下,是无法获得任何流量的,而唯一快速破零的方法:只有S单! 常规的搜索S单,是无法找到宝贝的,如果使用全标题、半标题,直接就会触发搜索降权&…

ssm+vue的公司人力资源管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的公司人力资源管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结…

LLMs 生成式人工智能项目生命周期备忘单Generative AI Project Lifecycle Cheat Sheet

到目前为止,在本课程中,从选择模型到微调模型,再到将其与人类偏好对齐,这一切都将在您部署应用程序之前发生。为了帮助您规划生成式AI项目生命周期的各个阶段,这个速查表提供了每个工作阶段所需的时间和精力的一些指示…

python学习之5个让日常编码更方便简单的库

今天为大家分享 5 个让日常编码更简单的 Python 库,全文3900字,阅读15分钟。 一、sh https://github.com/amoffat/sh 如果曾经在 Python 中使用过 subprocess 库,那么我们很有可能对它感到失望,它不是最直观的库,可…

Centos7安装docker 和docker-compose记录(0报错顺利安装)

文章目录 前言一、docker的安装二、docker-compose的安装总结 前言 我居然没有记录过Centos7安装docker的笔记,真是不可思议。每次vps安装docker都要看网上的文章,而且都非常坑,方法千奇百怪,最后还是决定自己来记录一个完整又方…

Jupyter notebook怎么设置自动跳转问题

1.点击开始,就可以看到Jupyter,然后点击 2.结果就这样: 3你可以复制地址到浏览器,结果: 但是这么做很麻烦,所以有没有更好的办法呢?当然有下面就开始介绍 1.打开cmd(winr,输入cmd),输入以下命令…

第二证券:突发!A股T+0?刚刚,紧急回应!

沪深生意所急迫回应 6日,商场传出一个消息,传延伸A股生意时刻和部分票可日内T0一次。一个版本是提早至9点,然后下午延伸至15:30,另一个版本是上午推延至12点,下午延伸至16:00。 7日&#xff0…

TimeWise-Jira工时管理插件6.0.0发布!对比测评某知名工时插件,谁的数据处理性能更胜一筹?

近期,龙智自研插件TimeWise for Jira(Jira工时管理插件)发布了重要更新——6.0.0版本。这次升级主要针对报表性能做出了优化与提升。 对于企业级应用而言,具高效处理大规模数据的能力是最为关键。龙智深谙国内用户需求&#xff0…

阿里云关系型数据库RDS详细介绍PolarDB_MySQL_MariaDB_SQL Server_PostgreSQL

阿里云RDS关系型数据库大全,关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,阿里云百科分享阿里云RDS关系型数据库大全: 目录 阿里云RDS关系型数据库大全 …

【Axure高保真原型】自适应多行输入框

今天和大家分享自适应多行文本框的原型模板,我们可以在输入框里输入文字,随着文字的数量,输入框的高度也会自动调整……具体效果可以打开下方原型地址体验或者点击下方视频观看 【原型效果】 【Axure高保真原型】自适应多行输入框 【原型预览…

重装系统Win10专业版步骤和详细教程

在Windows 10专业版中,使用一键重装系统能够迅速恢复系统到出厂默认状态,以便重新开始。一键重装系统的步骤相对简单,但确保备份重要文件和软件是重要的一步。本文将详细介绍如何一键重装系统Win10专业版的步骤和教程,确保您能轻松…

智能穿戴领域,健康鞋步力宝品牌引领新商业模式发展

智能时代正在将我们带向一个从学习驱动到全面普及的新境界。这个趋势的深远影响不仅改变了我们的生活方式,更改变了我们对智能的理解。当今的智能穿戴,已经越来越成为更多人日常生活的必需品,不论是日常佩戴无感成为腕上伴侣,还是…

【Java】Scanner.nextLine() 返回空行/不起作用(吸收换行符)

解决方法直达 问题描述 使用 Java 的 Scanner 类来读取数据的时候容易遇到的一个坑是 nextLine() 莫名其妙地就无法使用了。 具体表现为:好像 nextLine() 没执行就直接返回空字符串了。 例如 Scanner scanner new Scanner(System.in); System.out.println(&quo…

【three.js】简介和本地部署

跟着b站大佬学习three.js,让你实现3d前沿技术不是梦! 由于访问three.js官网是国外的网站,非常慢Three.js – JavaScript 3D Library 因此我们可以访问b站大佬在国内搭建好的本地three.js官网,大家访问如下链接即可,…

git项目删除业务代码、并清除所有提交记录,以此为基础创建出一个干净仓库、再另建一个远程代码库推上去

1、先把项目的.git文件夹删除,里面全是之前项目的提交记录 2、在本地项目地址启动git Bash Here后 执行命令 git remote add origin 远程仓库地址 注意后面接的是远程仓库地址 远程仓库要提前把代码块建好 3、如果出现报错:Updates were rejected because the remote conta…

论文阅读--On optimization methods for deep learning

深度学习的优化方法研究 论文信息:Le Q V, Ngiam J, Coates A, et al. On optimization methods for deep learning[C]//Proceedings of the 28th International Conference on Machine Learning, ICML 2011, Bellevue, Washington, USA, June 28 - July 2, 2011. …

JAVA NIO深入剖析

4.1 Java NIO 基本介绍 Java NIO(New IO)也有人称之为 java non-blocking IO是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方…

【已解决】Python读取sql数据,报错:Not an executable object,解决方案

【已解决】Python读取sql数据,报错:Not an executable object,解决方案 1.报错内容: 通过Python连接sql,读取sql中数据,报错:Not an executable object。具体代码及报错内容见下: …