MySQL 12:MySQL日志
创始人
2024-05-31 13:13:55
0

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

MySQL 的日志分为错误日志、二进制日志、查询日志、慢查询日志。

一、错误日志

错误日志是MySQL中最重要的日志之一。 它记录有关 mysqld 何时启动和停止的信息,以及服务器运行时何时发生任何严重错误的信息。 当数据库因任何故障而无法正常运行时,可以首先查看此日志。

默认开启日志,默认存放目录为mysql的数据目录,默认日志文件名为hostname.err(hostname为主机名)。

show variables like 'log_error%';

二、二进制日志

二进制日志(BINLOG)记录了所有的DDL(数据定义语言)语句和DML(数据操作语言)语句,但不包括数据查询语句。 该日志在灾难期间的数据恢复中起着极其重要的作用。 MySQL的主从复制就是通过这个binlog来实现的。

二进制日志,MySQl8.0已经默认开启,低版本的MySQL需要通过配置文件开启,并配置MySQL日志的格式。

Windows系统:my.ini Linux系统:my.cnf

--配置开启binlog日志, 日志的文件前缀为 mysqlbin -----> 生成的文件名如 : mysqlbin.000001,mysqlbin.000002
log_bin=mysqlbin--配置二进制日志的格式
binlog_format=STATEMENT

日志格式

STATEMENT:该日志格式在日志文件中记录的都是SQL语句(statement),每一条对数据进行修改的SQL都会记录在日志文件中,通过Mysql提供的mysqlbinlog工具,可以清晰的查看到每条语句的文本。主从复制的时候,从库(slave)会将日志解析为原文本,并在从库重新执行一次。

ROW:该日志格式在日志文件中记录的是每一行的数据变更,而不是记录SQL语句。比如,执行SQL语句 : update tb_book set status='1' , 如果是STATEMENT 日志格式,在日志中会记录一行SQL文件; 如果是ROW,由于是对全表进行更新,也就是每一行记录都会发生变更,ROW 格式的日志中会记录每一行的数据变更。

MIXED:混合了STATEMENT 和 ROW两种格式。

-- 查看MySQL是否开启了binlog日志
show variables like 'log_bin';-- 查看binlog日志的格式
show variables like 'binlog_format';-- 查看所有日志
show binlog events;-- 查看最新的日志
show master status;-- 查询指定的binlog日志
show binlog events in 'binlog.000010';
select * from mydb1.emp2;
select count(*) from mydb1.emp2;
update mydb1.emp2 set salary = 8000;-- 从指定的位置开始,查看指定的Binlog日志
show binlog events in 'binlog.000010' from 156;-- 从指定的位置开始,查看指定的Binlog日志,限制查询的条数
show binlog events in 'binlog.000010' from 156 limit 2;
--从指定的位置开始,带有偏移,查看指定的Binlog日志,限制查询的条数
show binlog events in 'binlog.000010' from 666 limit 1, 2;-- 清空所有的 binlog 日志文件
reset master

三、查询日志

客户端的所有操作语句都记录在查询日志中,但二进制日志中不包含查询数据的SQL语句。默认情况下,查询日志记录是禁用的。 如果需要开启查询日志,可以设置如下配置:

#该选项用来开启查询日志 , 可选值 : 0 或者 1 ; 0 代表关闭, 1 代表开启 
general_log=1#设置日志的文件名 , 如果没有指定, 默认的文件名为 host_name.log 
general_log_file=file_name
-- 查看MySQL是否开启了查询日志
show variables like 'general_log';-- 开启查询日志
set global general_log=1;select * from mydb1.emp2;
select * from mydb6_view.emp;select count(*) from mydb1.emp2;
select count(*) from mydb6_view.emp;
update mydb1.emp2 set salary = 9000;

四、慢查询日志

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

# 该参数用来控制慢查询日志是否开启, 可取值: 1 和 0 , 1 代表开启, 0 代表关闭
slow_query_log=1# 该参数用来指定慢查询日志的文件名
slow_query_log_file=slow_query.log# 该选项用来配置查询的时间限制, 超过这个时间将认为值慢查询, 将需要进行日志记录, 默认10s
long_query_time=10

上一篇:SQL注入入门

下一篇:什么是接口测试

相关内容

热门资讯

我的朋友英语作文【优质6篇】 我的朋友英语作文 篇一My Friend LilyI would like to introduce...
求职信英语作文(实用4篇) 求职信英语作文 篇一Dear Hiring Manager,I am writing to appl...
我的家庭英语作文附翻译【精彩... 我的家庭英语作文附翻译 篇一Title: My Loving FamilyMy family is ...
my father英语作文【... my father英语作文 篇一My Father, My HeroMy father is the...
发生在学校里的一件事作文(精... 发生在学校里的一件事作文 篇一第一篇内容:班级合作的奇妙之旅 这是发生在我所在的初中班级里的一...
垃圾分类英语作文120词(通... 垃圾分类英语作文120词 篇一The Importance of Garbage Classific...
英语口语一分钟自我介绍 英语口语一分钟自我介绍  自我介绍是向别人展示自己的重要途径,那么一分钟怎样用英语做自我介绍?下面小...
小学一年级清明节英语作文(精... 小学一年级清明节英语作文 篇一The Qingming FestivalThe Qingming F...
描写寒假的英语作文 描写寒假的英语作文  My winter holiday  During my winter hol...
户外活动的英语作文 户外活动的英语作文(通用24篇)  各位同学们,在学习的过程中要懂得劳逸结合,户外活动是个不错的选择...
英语作文:我的弟弟My Br... 英语作文:我的弟弟My Brother 篇一My Brother's Kindness and Cr...
粗心惹的祸作文350字(精选... 粗心惹的祸作文350字 篇一粗心惹的祸一天,小明放学回家的路上,心不在焉地走着。他一边走一边玩手机,...
我的家教作文 我的家教作文  我有个家教老师,她教英语,我叫她鲍老师。我认识她是从一个星期六,那天,我学钢琴回来,...
英语作文秋天范文200字(实... 英语作文秋天范文200字 篇一:The Beauty of AutumnAutumn is my f...
我的家教(精简3篇) 我的家教 篇一我从小就有一位非常特别的家教,她就是我的外婆。外婆是一个非常智慧和善良的人,她对我的教...
五年级英语作文my holi... 五年级英语作文my holiday 篇一My Holiday in the CountrysideD...
少年宫英语日记带翻译【优质3... 少年宫英语日记带翻译 篇一A Day at the Youth Center在少年宫的一天Dear ...
online shoppin... online shopping英语作文60词 篇一Title: The Convenience of...
我的爱好英语作文(通用6篇) 我的爱好英语作文 篇一我的爱好英语英语是我最喜欢的学科,也是我最热爱的爱好。每天,我都会在学校的英语...
列举多个句子英语【精简3篇】 篇一:列举多个句子英语In today's globalized world, being able...