Mysql数据库日志相关操作

timo-nbktp 1年前 ⋅ 875 阅读

在任何一种数据库中,都会有各种各样的日志,记录着数据库工作的方方面面,以帮助数据库管理员追踪数据库曾经发生过的各种事件。MySQL也不例外。

1,错误日志

错误日志是MysQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,可以首先查看此日志。

该日志是默认开启的,默认存放目录为mysql的数据目录,默认的日志文件名为hostname.err (hostname是主机名)。
下面来演示一遍:

sql语句返回错误日志存放的地方。
show variables like 'log_error%';

至于这个当前目录,即存放我们数据库文件的data目录,可通过show variables like '%datadir%';语句查到。

找到DESKTOP-3HJOHII.err文件,用nopade++打开即可查看。

2,二进制日志

        二进制日志(BINLOG)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但是不包括数据查询语句。此日志对于灾难时的数据恢复起着极其重要的作用,MySQL的主从复制,就是通过该binlog实现的。
       二进制日志,MySQI8.0默认已经开启,低版本的MySQL的需要通过配置文件开启,并配置MySQL日志的格式。Windows系统: my.ini Linux系统:my.cnf
下面介绍查询二进制日志所用到的sql

2.1 binlog日志查询基本操作

1,查询Mysql是否开启了binlog日志

show variables like 'log_bin';

2,查看binlog日志的格式

SHOW VARIABLES LIKE 'binlog_format';

3,查看所有日志

show binlog events;

4,查看最新的日志(在查看之前我做了一个update操作)

show master status;

可以看到,最新的日志在bin000027文件中,偏移量为501,(这些binlog日志文件都可以在data目录下找到)下面可以接着查询。

5,查询指定的binlog日志

show binlog events in 'DESKTOP-3HJ0HII-bin.000027';

可以看到,501记录了前面的一个update操作,前面几行记录了可以看到记录了update操作的整个事务开启过程。(注,后面的日志是后面又做的一个update操作,读者不必疑惑)

6,从指定的位置开始,查看指定的binlog日志。

show binlog events in 'DESKTOP-3HJ0HII-bin.000027' from 501;

7,从指定的位置开始,查看指定的binlog日志,限制查询的条数。

show binlog events in 'DESKTOP-3HJ0HII-bin.000027' from 501 limit 2;


这里的limit用法就是我们前面所学的limit关键字用法。

8,清空所有的binlog日志文件

reset master;

2.2 补充:日志格式

1,STATEMENT
该日志格式在日志文件中记录的都是SQL语句(statement),每一条对数据进行修改的SQL都会记录在日志文件中,通过Mysql提供的mysqlbinlog工具,可以清晰的查看到每条语句的文本。主从复制的时候,从库(slave)会将日志解析为原文本,并在从库重新执行一次。
2,ROW
该日志格式在日志文件中记录的是每一行的数据变更,而不是记录sQL语句。比如,执行sQL语句:updatetb_book set status=‘1’,如果是STATEMENT日志格式,在日志中会记录一行sQL文件;如果是ROW,由于是对全表进行更新,也就是每一行记录都会发生变更,ROW格式的日志中会记录每一行的数据变更。

3,MIXED
混合了STATEMENT和 ROW两种格式。
ps:开启binlog日志,配置binlog日志的格式

配置完以后要重启mysql服务器才会生效

3,查询日志

1,查看mysql是否开启了查询日志

show variables like 'general_log';
2,开启查询日志

set global general_log=1;

注意,该语句开启只是在此次会话中开启,要永久开启需要配置配置文件。
3,怎么查看查询日志?还是在data目录下可以找到,有一个主机名.log的文件,例如我的电脑里面就是DESKTOP-3HJ0HII.log点开查看即可,注意:该日志会记录所有的增删改查。

4,慢查询日志

慢查询日志记录了所有执行时间超过参数long_query_time设置值并且扫描记录数不小于
min_examined_row_limit的所有的SQL语句的日志。long_query_time默认为10秒,最小为0,精度可以到微秒。

这个日志的作用是:我们可以查看我们以前做过的某些查询,哪些比较耽误时间,方便我后期进行优化。
1,查看慢查询日志是否开启

show variables like 'slow_query_log%';

此时慢查询是关闭的,可以看到,如果开启慢查询以后,慢查询日志存放在DESKTOP-3HJOHll-slow.log文件中
2,开启慢查询日志set global slow_query_log=1;

3,查看慢查询的超时时间show variables like 'long_query_time%;

 

 

--end--

 

 

 

 

版权 本着开源共享、共同学习的精神,本文转载自 https://blog.csdn.net/weixin_42445051/article/details/123031654 , 如果侵权之处,请联系博主进行删除,谢谢~