MySQL高级第十六篇:数据库日志有哪些(慢查询日志、通用查询日志、错误日志和二进制日志)

news2024/9/20 22:58:10

MySQL高级第十六篇:数据库日志有哪些(慢查询日志、通用查询日志、错误日志和二进制日志)

  • 一、MySQL支持的日志有哪些?
    • 1. 日志类型总结
    • 2. 日志有什么缺点吗?
  • 二、通用查询日志(slow query log)
  • 三、错误日志(error log)
  • 四、二进制日志(bin log)
    • 1. 概述
    • 2.binlog写入机制
    • 3. binlog和redolog有什么区别?
    • 4. 怎么保证binlog 和 redolog 一致性(两阶段提交)
  • 五、中继日志(relay log)

一、MySQL支持的日志有哪些?

MySQL有不同类型的日志文件,用来存储不同类型的日志,分为二进制日志、错误日志、通用查询日志和慢查询日志,这也是常用的4种。MySQL 8又新增两种支持的日志:中继日志和数据定义语句日志。使用这些日志文件,可以查看MySQL内部发生的事情。

1. 日志类型总结

  • 慢查询日志:记录所有执行时间超过long_query_time的所有查询,方便我们对查询进行优化。
  • 通用查询日志:记录所有连接的起始时间和终止时间,以及连接发送给数据库服务器的所有指令,对我们复
    原操作的实际场景、发现问题,甚至是对数据库操作的审计都有很大的帮助。
  • 错误日志:记录MySQL服务的启动、运行或停止MySQL服务时出现的问题,方便我们了解服务器的状态,从而对服务器进行维护。
  • 二进制日志:记录所有更改数据的语句,可以用于主从服务器之间的数据同步,以及服务器遇到故障时数据
    的无损失恢复。
  • 中继日志:用于主从服务器架构中,从服务器用来存放主服务器二进制日志内容的一个中间文件。从服务器
    通过读取中继日志的内容,来同步主服务器上的操作。
  • 数据定义语句日志:记录数据定义语句执行的元数据操作。
    除二进制日志外,其他日志都是文本文件。默认情况下,所有日志创建于MySQL数据目录中。

2. 日志有什么缺点吗?

  • 降低MySQL数据库的性能
  • 日志会占用大量的磁盘空间

二、通用查询日志(slow query log)

通用查询日志用来记录用户的所有操作,包括启动和关闭MySQL服务、所有用户的连接开始时间和截止时间、发
给MySQL数据库服务器的所有SQL指令等。

当我们的数据发生异常时,查看通用查询日志,还原操作时的具体场景,可以帮助我们准确定位问题。

# 查看当前状态
SHOW VARIABLES LIKE '%general%';

# 临时开启日志
SET GLOBAL general_log=on;

# 关闭日志
SET GLOBAL general_log=off;

三、错误日志(error log)

错误日志记录了MySQL服务器启动、停止运行的时间,以及系统启动、运行和停止过程中的诊断信息,包括错误、警告和提示等。

通过错误日志可以查看系统的运行状态,便于即时发现故障、修复故障。如果MySQL服务出现异常,错误日志是发现问题、解决故障的首选。

错误日志默认是开启的,且无法被禁止

四、二进制日志(bin log)

1. 概述

  • bin log即binary log,二进制日志文件,也叫作变更日志(update log)。它记录了数据库所有执行的DDL和DML等数据库更新事件的语句,但是不包含没有修改任何数据的语句(如数据查询语句select、show等)。
  • 它以事件形式记录并保存在二进制文件中。
  • 通过这些信息,我们可以再现数据更新操作的全过程。

bin log主要应用场景:

  • 一是用于数据恢复,如果MySQL数据库意外停止,可以通过二进制日志文件来查看用户执行了哪些操作,对
    数据库服务器文件做了哪些修改,然后根据二进制日志文件中的记录来恢复数据库服务器。
  • 二是用于数据复制,由于日志的延续性和时效性,master把它的二进制日志传递给slaves来达到master_slave数据一致的目的。
    可以说MySQL数据库的数据备份、主备、主主、主从都离不开binlog,需要依靠binlog来同步数据,保证数据一致性。
    在这里插入图片描述

2.binlog写入机制

  • binlog的写入时机非常简单,在事务执行过程中,先把日志写到binlog cache,事务提交的时候,再把binlog cache写到binlog文件中。因为一个事务的binlog不能被拆开,无论这个事务多大,也要确保一次性写入,所以系统会给每个线程分配一个块内存作为binlog cache。
    在这里插入图片描述
  • write 和 fsync 的时机,可以由参数sync_binlog控制,默认是0。
  • 为0的时候,表示每次提交事务都只write,由系统自行判断什么时候执行fsync。虽然性能得到提升,但是这种情况会有一定的风险。
  • 如果机器宕机,page cache里面的binglog会丢失。
  • 为了安全起见,我们还可以修改 sync_binlog 参数为 1,表示每次提交事物时都会执行 fsync 刷盘
  • 还有一种折中的方式,设置 sync_binlog 参数为一个大于1的数N,表示每次提交事物都 write ,每N个事物进行一次 fsync 刷盘

3. binlog和redolog有什么区别?

  • redolog 是物理日志,记录内容是“在某个数据页上做了什么修改”,属于InnoDB存储引擎层产生的。

  • redo log让InnoDB存储引擎拥有了崩溃恢复能力。

  • binlog 是逻辑日志,记录内容是语句的原始逻辑,类似于“给ID=2这一行的c字段加1”,属于MySQLServer层。

  • bin log保证了MySQL集群架构的数据一致性。

4. 怎么保证binlog 和 redolog 一致性(两阶段提交)

  • 原理很简单,如下图,将 redolog 的写入拆成 预备 和 提交 两个阶段,我们称之为 两阶段提交
    在这里插入图片描述
  • 使用两阶段提交后,写入binlog时发生异常也不会有影响,因为MySQL根据redo log日志恢复数据时,发现redo log还处于prepare阶段,并且没有对应binlog日志,就会回滚该事务。

五、中继日志(relay log)

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

由于篇幅这章就只介绍各种日志,关于主从复制的相关内容,放在下一篇详细讲解…

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

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

相关文章

【开发工具】idea2023.1社区版设置优化,媲美旗舰版

相信大家很多时候都是用旗舰版来开发,各种序列号破解包各种搞,但说不定哪天又失效了那天又爆泄漏隐私安全问题。随着idea的版本升级破解也不好搞了,所以我就直接用了社区版,经过一番折腾发现社区版一点不比旗舰版差,可…

Linux文件类型与属性

一、文件类型 Linux 系统下一共分为 7 种文件类型。通过 stat 命令或者 ls 命令来查看文件类型。 - :普通文件 d :目录文件 c :字符设备文件 b :块设备文件 l :符号链接文件 s :套接字文件 p &…

Jeston NANO 配置并安装 torch+ torchvision

由于nano的arm64架构,所以用它进行深度学习配置部署时会与用普通电脑(x86)有所不同: x86架构 x86架构是最常用的计算机架构之一,它是基于英特尔的8086处理器所设计的,后来又逐渐发展成x86-64架构,支持64位处…

开放原子训练营(第二季)RT-Thread Nano学习营刘玉宽

4月22日周六,早早起床充满期待的来到了北京艾丽华酒店,参加“2023年RT-Thread线下培训”。这是疫情三年以来开放原子在北京第一次组织的线下活动。 进入到会场,被震撼了,好火爆啊————满满一屋子人,有白发苍苍的老者…

MySQL运维36-排队论

文章目录 1、排队模型2、什么是排队论3、李特尔法则(Little’s law)3.1、李特尔法则的内容3.2、李特尔法则的意义 4、肯德尔排队表示法4.1、肯德尔表示法的核心要素A/S/m4.2、肯德尔表示法中对顾客达到分布的表示:4.3、用肯德尔表示法表示的常…

day03_注释丶关键字丶标识符丶常量

​注释 注释的概念:在编写程序的过程中,对程序代码进行解释说明。 代码本身和人类的自然语言相比,可读性肯定是要差一些,所以为了更快能够知道代码的含义、作用、需要注意地方,所有程序员都应该养成写注释的好习惯。 …

【安卓源码】Binder机制1-Servicemanager 进程的启动和defaultServiceManager

1. servicemanager 进程的启动 对于用户空间,不同进程之间彼此是不能共享的,而内核空间却是可共享的。Client进程向Server进程通信,恰恰是利用进程间可共享的内核内存空间来完成底层通信工作的,Client端与Server端进程往往采用io…

Linux客观题错题笔记

目录 第一章课后测试 课堂测试一 课堂测试2 第二次课后测试 课堂测验4 第4次课后作业 Linux 课堂测试5 第五次课后测试 自测一 实验疑难点 第一章课后测试 a 课堂测试一 d 课堂测试2 bb 第二次课后测试 a , b c,d,c 课堂测验4 a 第4次课后作业 c.dc,c Lin…

自动化测试系列-Selenium三种等待详解

一. 强制等待 sleep 在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!_哔哩哔哩_bilibili在华为工作了10年的大佬出的Web自动化测试教程,华为现用技术教程!共计16条视频,包括:1. 【web自动…

[POJ - 1015]Jury Compromise(01背包问题)

[POJ - 1015]Jury Compromise(01背包问题) 一、问题二、分析1、状态表示2、状态转移3、方案输出 三、代码 一、问题 二、分析 这道题可以转化为一个01背包问题,问题描述可以改为,每个物品具有两个属性 a a a和 b b b,…

异构系统的事务统一处理模型Saga

承接上文分布式事务Seata-TCC事务模式 Saga事务模式相对来说是最复杂的,用的不多,只需要把概念理解透就可以了。 Saga是Seata提供的长事务解决方案,在业务流程中每个参与者都提供本地事务,当出现某个参与者失败的情况则补偿前面已…

如何设计一个牛逼的API接口

在日常开发中,总会接触到各种接口。前后端数据传输接口,第三方业务平台接口。一个平台的前后端数据传输接口一般都会在内网环境下通信,而且会使用安全框架,所以安全性可以得到很好的保护。这篇文章重点讨论一下提供给第三方平台的…

[自注意力神经网络]Mask Transfiner网络-论文解读

本文为CVPR2022的论文。国际惯例,先贴出原文和源码: 原论文地址https://arxiv.org/pdf/2111.13673.pdf源码地址https://github.com/SysCV/transfiner 一、概述 传统的Two-Stage网络,如Mask R-CNN虽然在实例分割上取得了较好的效果&#xff…

OSCP-Twiggy(ZeroMQ、SaltStack)

目录 扫描 ​编辑WEB 扫描 WEB 80端口 运行着一个名为Mezzanine的东西。快速的谷歌搜索显示这是一个内容管理系统,所以让我们看看它是否对任何可以在我们的目标机器上获得shell的东西都是脆弱的: mezzanine版本是4.3.1,并且此漏洞已在4.2.1中修补。 searchsploit没有返回…

说说MySQL中MVCC机制的原理

一、概述: 了解了MySql的底层架构后,我们今天要深入了解下什么是MVCC。 MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种多并发控制的方法,一般在数据库管理系统中,实现对数据…

NAS私有云存储 - 搭建Nextcloud私有云盘并公网远程访问

文章目录 摘要视频教程1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 转载自内网穿透工具的文章:使用Nextcl…

LVS负载均衡集群

引言 如今,在各种互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求也越来越高,单台服务器也将难以无法承担所有的访问需求。 一、群集的含义 集群、群集 由多台主机构成,但对外,只表现为一…

ubuntu-18.0.04 鸿蒙HarmonyOS系统源码(HOSP)下载

最近小编在研究鸿蒙开发,想要研究下鸿蒙源码,这里记录下源码下载中遇到的问题及解决,也为HarmonyOS的生态的建设提供下帮助,希望能帮到需要的人。 前置步骤:如果你之前下载过AOSP源码,那这里下载鸿蒙源码应…

第五章-数字水印-2-原理及实现

数字水印原理 根据之前图像获取位平面的操作可知,最低位位平面对整体图像的影响最小,因此数字水印的原理为在图像的最低有效位上嵌入隐藏信息,即在图像的最低位替换为数字水印位平面,完成数字的嵌入操作,对已嵌入数字…

Jenkins+Python自动化测试持续集成详细教程(全网独家)

目录 一、前言 二、环境准备 三、创建Jenkins Job 四、编写Python自动化测试脚本 五、测试报告生成与展示 六、持续集成流程优化 七、实战演练 八、常见问题及解决方案 九、结论 一、前言 Jenkins是目前最为流行的CI/CD工具之一,它可以支持多种语言和技术…