mysql日志那些事

news2024/11/17 17:39:16

一、Mysql常见日志

MySQL有不同类型的日志文件,用来存储不同类型的日志,分为二进制日志、错误日志、通用查询日志、慢查询日志和中继日志,使用这些日志可以查看MySQL内部发生的事情。  


二、慢查询日志(slow query log)

1、慢查询日志介绍

慢查询日志(slow query log):记录所有执行时间超过long_query_time的所有查询,方便我们对查询进行优化。

 show variables like '%slow%';

查询慢日志时间参数设置

show variables like '%long_query_time%';

如果需要调整可使用set global long_query_time=1;set long_query_time=1;

 注意:在设置long_query_time时间时,既要设置全局的,还要设置当前session的,但是要想永久保留慢查询时间,要把上面涉及到参数写入到配置文件中,并重启mysql服务。

2、慢查询日志分析工具-mysqldumpslow

在生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活,MySQL提供了日志分析工具mysqldumpslow。
查看mysqldumoslow的帮助信息可以使用mysqldumpslow --help

参数(-s和-t)介绍:

-s 这个是排序参数,可选的有:

​ al: 平均锁定时间

​ ar: 平均返回记录数

​ at: 平均查询时间

​ c: 访问次数

​ l: 锁定时间

​ r: 返回记录

​ t: 查询时间

-t n 显示头n条记录。

(1)访问次数最多的20个sql语句

mysqldumpslow -s c -t 20  ***/slow.log

(2)返回记录集最多的20个sql

mysqldumpslow -s r -t 20 ***/slow.log

(3)按照时间排序的前10条SQL

mysqldumpslow -s t -t 10 ***/slow.log

举例说明查出来字段的意思:

[root@gads04919 bin]# ./mysqldumpslow -s t -t 10 /data/mysql/slow.log

Reading mysql slow query log from /data/mysql/slow.log

Count: 3398704  Time=0.15s (505325s)  Lock=0.00s (1661s)  Rows=1.0 (3398704), gads[gads]@6hosts

  select count(*) from ac_acctdetail a where a.AC_SERIALNO='S'

Count:这类sql语句执行了多少次。

TIME:执行的最大时间,Time=0.15s (505325s) 最大的执行时间是0.15s,总共花费了505325s。

Rows:单次返回的结果数。3398704次总共返回了3398704条记录。

三、通用查询日志(general query log)

该日志记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令,对我们复原操作的实际场景、发现问题,甚至是对数据库操作的审计都有很大的帮助。开启会占用大量的磁盘空间,默认是关闭的。  

show variables like '%general%';

四、错误日志

记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便我们了解服务器的状态,从而对服务器进行维护。 

SHOW VARIABLES LIKE 'log_err%';

五、二进制日志(Binlog)

binlog即binary log,二进制日志文件,也叫作变更日志(update log)。它记录了数据库所有执行的DDL和DML等数据库更新事件的语句,但是不包含没有修改任何数据的语句(如数据查询语句select、show等)。二进制日志应用场景有数据复制和数据恢复。

show variables like '%log_bin%';

log_bin_basename 二进制日志文件名 :二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句select)语句事件。
log_bin_index 二进制的索引文件名:(文件名后缀为.index)用于记录所有的二进制文件 。

当MySQL创建二进制日志文件时,先创建一个以“filename”为名称、以“.index”为后缀的文件,再创建一个以“filename”为名称、以“.000001”为后缀的文件。
MySQL服务重新启动一次,以“.000001”为后缀的文件就会增加一个,并且后缀名按1递增。即日志文件的个数与MySQL服务启动的次数相同;如果日志长度超过了 max_binlog_size 的上限(默认是1GB),就会创建一个新的日志文件。

1、binlog模式

Statement–基于SQL语句的复制(statement-based replication,SBR),
Row–基于行的复制(row-based replication,RBR),
Mixed–混合模式复制(mixed-based replication,MBR)。
(1)Statement
每一条会修改数据的sql都会记录在binlog中。
优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。
缺点:由于记录的只是执行语句,为了这些语句能在slave上正确运行,因此还必须记录每条语句在执行的时候的一些相关信息,以保证所有语句能在slave得到和在master端执行时候相同的结果。另外mysql的复制,像一些特定函数功能,slave可与master上要保持一致会有很多相关问题。

(2)Row
它不记录sql语句上下文相关信息,仅保存哪条记录被修改。
优点: binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。所以rowlevel的日志内容会非常清楚的记录下每一行数据修改的细节。而且不会出现某些特定情况下的存储过程,或function,以及trigger的调用和触发无法被正确复制的问题.
缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容。

(3)Mixed
在Mixed模式下,一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种。
(4)查看binlog_format

show variables like 'binlog_format';

2、binlog日志解析

两种方式

(1)、 由于binlog是二进制文件,所以无法直接使用文本打开,需要使用对应的解析工具才可以查看具体内容。不适合使用大日志场景

show binary events

show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
参数解释:
a、IN 'log_name':指定要查询的binlog文件名(不指定就是第一个binlog文件)
b、FROM pos:指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)
c、LIMIT【offset】:偏移量(不指定就是0)
d、row_count :查询总条数(不指定就是所有行)

(2)mysqlbinlog工具
mysqlbinlog是mysql原生自带的binlog解析工具,速度快而且可以配合管道命令过滤数据,适合解析大量 binlog文件,建议使用。

mysqlbinlog常见的选项有一下几个:

a、--start-datetime;从二进制日志中读取指定等于时间戳或者晚于本地计算机的时间

b、--stop-datetime;从二进制日志中读取指定小于时间戳或者等于本地计算机的时间 取值和上述一样

c、--start-position;从二进制日志中读取指定position 事件位置作为开始。

d、--stop-position;从二进制日志中读取指定position 事件位置作为事件截至

六、中继日志

中继日志只在主从服务器架构的从服务器上存在。从服务器为了与主服务器保持一致,要从主服务器读取二进制日志的内容,并且把读取到的信息写入本地的日志文件中,这个从服务器本地的日志文件就叫中继日志。然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主从服务器的数据同步。搭建好主从服务器之后,中继日志默认会保存在从服务器的数据目录下。 

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

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

相关文章

windows安装RabbitMq,修改数据保存位置

1、先安装Erlang, Erlang和RabbitMQ有版本对应关系。 官网RabbitMQ与Erlang版本对应RabbitMQ Erlang Version Requirements — RabbitMQ 2、安装RabbitMQ。 3、修改数据保存地址。找到安装目录下的sbin文件夹,找到rabbitmq-env.bat,编辑文件…

初识Hadoop-概述与关键技术

一.大数据概述 1.什么是大数据 高速发展的信息时代,新一轮科技革命和变革正在加速推进,技术创新日益成为重塑经济发展模式和促进经济增长的重要驱动力量,而“大数据”无疑是核心推动力。 那么,什么是“大数据”呢&#xff1…

力扣hot100 二叉树的最近公共祖先 递归

Problem: 236. 二叉树的最近公共祖先 👨‍🏫 参考大佬题解 💖 图解 时间复杂度, 示例: O ( n ) O(n) O(n) 空间复杂度, 示例: O ( n ) O(n) O(n) 💖 AC code /*** Definition for a binary tree node.*…

在Java中正确使用Optional

Optional类是在Java 8中引入的,用于解决NullPointerException的问题。 java.util.Optional类是一个泛型类型的类,只包含一个类型为T的值。其目的是提供对可能为null的类型T的引用对象的更安全的替代方案。但是,只有在正确使用的情况下&#…

Discourse 访问统计数据的不一致

Discourse 如果使用网站跟踪程序,例如 Google Analytics 得到的网站访问数据和真实的网站访问数据是不一致的。 通常 Google Analytics 提供的数据更少,或者说是少很多。 这是因为 Discourse 的数据调用使用的是 API,在你的页面载入后&…

Java医院综合绩效考核系统源代码

医院绩效考核管理系统是采用B/S架构模式设计、使用JAVA语言开发、后台使用MySql数据库进行管理的一整套计算机应用软件。系统和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作…

【C语言小游戏】贪吃蛇

文章目录 1.引言2.运行图2.涉及知识3 Windows API3.1 控制台3.2 控制台屏幕坐标3.3 操作句柄3.4 控制台屏幕光标3.5 监视按键 4. 设计说明5. 完整代码 1.引言 使⽤C语⾔在Windows环境的控制台中模拟实现经典⼩游戏贪吃蛇 实现基本的功能: 贪吃蛇地图绘制蛇吃⻝物的…

《BackTrader量化交易图解》第9章:回测结果分析

文章目录 9. 回测结果分析9.1 常用量化分析指标9.2 Analyzer 分析类9.3 Analyzer 分析模块架构图9.4 SQN 指数9.5 案例:回测数据基本分析9.6 案例:回测数据扩展指标分析 9. 回测结果分析 9.1 常用量化分析指标 使用BackTrader等量化软件做交易会生成大…

js(JavaScript)数据结构之字典

什么是数据结构? 下面是维基百科的解释: 数据结构是计算机存储、组织数据的方式。数据结构意味着接口或封装:一个数据结构可被视为两个函数之间的接口,或者是由数据类型联合组成的存储内容的访问方法封装。 我们每天的编码中都会…

审稿变慢?还疯狂拒稿?这本毕业神刊如今争议不断,还值得一投吗?

【SciencePub学术】 IEEE ACCESS 期刊评说 网友辣评 评说1:麻了,11月17收到外审,现在意见还没回来啊,神刊肿么了? 评说2:两个审稿人评审的,一个拒绝(最终意见大修)&…

代码随想录 Leetcode707. 设计链表

题目: 代码(首刷看解析 2024年1月11日): class MyLinkedList { private:struct ListNode{int val;ListNode* next;ListNode(int val):val(val),next(nullptr){}};int size;ListNode* dummyHead; public:MyLinkedList() {dummyHead new List…

序章 初始篇—转生到vue世界!

Vue.js 是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项…

四、C++运算符(4)比较运算符

作用&#xff1a;用于表达式的比较&#xff0c;并返回一个真值或者假值 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> using namespace std; int main() {//int a 10;int b 20; //变量a重新赋值为100//cout << (ab) << end…

【Redis】Redis 进阶

文章目录 1. BigKey1.1 MoreKey1.2 BigKey 2. 缓存双写一致性更新策略2.1 读缓存数据2.2 数据库和缓存一致性的更新策略2.3 canal 实现双写一致性 3. 进阶应用3.1 统计应用3.2 hyperloglog3.3 GEO3.4 bitmap 4. 布隆过滤器5. Redis 经典问题5.1 缓存预热5.2 缓存穿透5.3 缓存击…

order by 与 分页 的冲突

order by 与 分页 的冲突 问题背景 Oracle拼接SQL&#xff0c;JAVA使用SQLQueryExecutor执行拼接的SQL&#xff0c;SQL如下&#xff1a; SELECT col_key, col_other_info FROM tb_tableName WHERE col_where_info 一些筛选条件 order by col_updatetime desc 该表中的数…

一行代码给Button添加一个光标焦点动画:得着焦点按钮放大,失去焦点按钮恢复

当光标进入Button的时候&#xff0c;也就是Button得着焦点时&#xff0c;Button出现放大效果&#xff0c;失去焦点的时候&#xff0c;恢复原来的尺寸。 本例仅供学习交流之用 一、效果 按钮得着焦点&#xff0c;放大 按钮失去焦点&#xff0c;恢复 二、给按钮添加动效 得着…

k8s中的基础概念

k8s可以从硬件和软件两方面来理解&#xff1a; 硬件&#xff1a; 1、节点&#xff08;Node&#xff09;&#xff1a;类似于手机、平板、电脑 2、集群&#xff08;Cluster&#xff09;&#xff1a;多个节点组合到一起 3、持久卷&#xff08;Persistent Volumes&#xff09;&…

微信小程序开发WebSocket通讯

官方文档说明&#xff1a;入口 WebSocket连接的链接只支持wss加密方式&#xff0c;且只能用域名的方式 该域名还要在微信公众平台的小程序中登记才能使用&#xff0c;开发->开发管理->服务器域名->修改 该域名要和https使用的一致 以域名地址&#xff1a;dtu.aab…

质量好洗地机有哪些?洗地机口碑榜

在很多人眼中&#xff0c;洗地机可能被简单地视为一种高价的拖把&#xff0c;但作为一个经验丰富的洗地机测评博主&#xff0c;我要强调洗地机在家务工作中的巨大价值。它不仅仅是一种清洁工具&#xff0c;更是集扫地、拖地、洗地以及擦干地板等多项功能于一身的强大设备。通过…

【软件测试】学习笔记-设计GUI自动化测试策略

这篇文章从“实战”这个角度展开&#xff0c;探讨实际的大型全球化电商网站的GUI自动化测试如何开展。这场实战&#xff0c;从以下两个方面展开&#xff1a; 测试策略如何设计&#xff1f;这一点&#xff0c;我会根据亲身经历的实际项目&#xff0c;和你探讨GUI测试的分层测试…