MySQL日志系统

news2024/10/6 0:33:41

MySQL相关文章

  • 慢sql搜集分析工具搭建

前言

日志系统可谓是MySQL中的重中之重,一些MySQL的特性也通过依赖于日志实现的。

本篇文章过一遍日志相关的东西,方便日后复习。

binlog

概念

  • 二进制日志文件,记录了所有的DDL(数据库定义语言,create、alter、drop)和DML(数据库操作语言,select、update、insert、delete)语句,以事件形式记录,包含语句所执行的消耗的时间。

  • 用作于主从架构下的数据同步,也可以用作误删操作后基于binlog恢复到指定时间点。通过自带的mysqlbinlog命令恢复。

  • 两阶段提交时也会依赖binlog实现事务数据一致。

存储规则

  • binlog的默认是保持时间由参数expire_logs_days配置,也就是说对于非活动的日志文件,在生成时间超过expire_logs_days配置的天数之后,会被自动删除。

在这里插入图片描述

  • 配置文件的路径为log_bin_basename,binlog日志文件按照指定大小,当日志文件达到指定的最大的大小之后,进行滚动更新,生成新的日志文件。对于每个binlog日志文件,通过一个统一的index文件来组织。
    在这里插入图片描述

redolog

概念

  • 重做日志,主要记录事务执行后的状态,用来恢复未写入磁盘的已成功事务更新的数据。

    • 数据库对数据做修改时会将磁盘中的数据加载到buffer pool中,然后再buffer pool中修改,这时内存中的数据与磁盘数据不一致成为脏页
    • 如果这时候db发生重启,这些数据由于还在内存中未同步到磁盘中(随机io),会发生数据丢失
    • 为了避免这种现象,当buffer pool的数据发生变化结束后把相应修改记录保存在redolog文件中
    • 当db发生崩溃时恢复的时候,可以根据这个文件的记录内容,重新应用到磁盘文件,数据保持一致。
  • redolog是innodb引擎独有的日志

存储规则

  • 数据空间有限,循环写入,write pos表示当前位置,一边写一遍后移,checkpoint表示要清除的位置
  • 记录对数据的修改操作,主要目的是的随机IO变成顺序IO,提升性能。
  • redolog没有记录完整数据,真正落盘不需要redolog,等到merge时直接将buffer pool持久化到磁盘

与binlog的区别

  • redolog属于引擎层日志是innodb引擎特有,binlog属于server层日志。
  • redolog是物理日志,记录了是“哪个会话哪个时间在某个数据页上做了什么修改”;binlog 是逻辑日志,记录的是这个语句的原始逻辑sql,比如"给 ID=2 这一行的 c 字段加 1"
  • redolog是循环写入有最大限制,binlog可以追加,不会覆盖之前的日志。

两阶段提交

  • MySQL为了保证数据安全,数据所有操作都是先写日志再写磁盘
  • 整个写入逻辑划分成 redolog prepare -> binlog -> redolog commit
  • 校验数据
    1. binlog有记录,redolog commit: 正常事务
    2. binlog有记录,redolog prepare: 写入库成功,提交事务
    3. binlog无记录,redolog prepare: 写入数据库失败,回滚事务

在这里插入图片描述

undolog

概念

  • 回滚日志,用于存放数据被修改前的值,如果修改异常可以使用undo日志来实现回滚操作,保证事务的一致性。
  • 用于MySQL实现事务原理与MVCC特性
  • undolog分为
    1. insert undolog, insert语句产生的的日志,事务提交后
    2. update undolog, delete和update语句产生的日志,事务提交后放到history list中,等待purge线程进行最终删除

changebuffer

概念

  • 当需要更新数据时,如果数据在内存中则直接更新,如果不在innodb会把更新操作缓存在changebuffer中,当下次需要访问这条数据时,将这条数据从磁盘加载到内存并执行change buffer的逻辑,减少随机读的IO的消耗。
  • 主要目的节省随机读磁盘的io消耗,合并多次操作为批操作提高性能。

原理

  • changebuffer也会落盘,将changebuffer的的操作合并到原数据页得到新结果的过程叫做merge
  • merge过程
    • 磁盘读入数据
    • 将changebuffer内容依次应用到内存
    • 写入redolog,数据变化

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

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

相关文章

tensorflow.keras常用模块介绍

目录前言一、基础层1-0、Input层1-1、Dense层1-2、Activation层(激活层)、Dropout层1-3、Lambda层1-4、Flatten层二、嵌入层2-1、Embedding层三、池化层3-1、MaxPooling1D层3-2、MaxPooling2D层3-3、AveragePooling1D层3-4、AveragePooling2D层3-5、Glob…

Android 组件化架构设计从原理到实战

为什么需要组件化 小项目是不需要组件化的。当一个项目有数十个人开发,编译项目要花费10分钟,修改一个bug就可能会影响到其他业务,小小的改动就需要进行回归测试,如果是这种项目,那么我们需要进行组件化了 组件化和模…

有效的渗透测试才能确保Web应用安全

应用程序的安全性和快速交付之间存在矛盾,但由于应用程序代码缺陷和安全漏洞,我们正在目睹或经历越来越多的攻击。据调查,软件安全漏洞占了大约47%的安全事故。 与任何软件一样,Web应用程序也包含缺陷和错误。这种安全风险的一个…

[附源码]Python计算机毕业设计Django物品捎带系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

SAP PS 第9节 合并采购申请、组合WBS之详解

SAP PS 第9节 合并采购申请、组合WBS之影响1 合并采购申请1.1 合并采购申请后台配置1.2 合并采购申请效果如下2 组合WBS2.1 后台配置2.1.1 激活需要分组的MRP组2.1.2 项目必须为有库存模式,无论估价或者未估价都可以2.1.3 物料必须允许项目库存(允许独立…

Azkaban登录分析

分析意义:目前azkaban采用的是azkaban-users.xml配置文件的方式,配置登录用户。如果公司需要二次开发,增加安全性和便捷性,想从数据库取值呢,该如何着手开发呢?本文分析登录过程,便于进行azkaban的二次登录开发。 1、登录请求地址,请求方式和参数 请求地址:http://x…

mysql创建子账户

1.首先登陆root账户 [roothecs-219255 ~]# mysql -uroot -p首先在Xshell客户端登陆linux,然后输入mysql命令进行登陆。 2.创建子账户 创建一个用户名为test1,密码为123456的子账号,有两种方法,分别为: CREATE USER …

【多目标进化优化】NSGAII 算法原理与代码实现

前言 Gitee 代码地址:https://gitee.com/futurelqh/Multi-objective-evolutionary-optimization 理论分析 \quad\quadSrinivas 和 Deb 于 1993 年提出 了 NSGA (non-dominated sorting in genetic algorithm) (Srinivas et al, 1994)。NSGA 主要有三个方面的不足&…

Docker:数据卷(Data Volumes)dockerfile

目录 一、宿主机与容器之间的文件拷贝 从容器中拷贝文件到宿主机 从宿主机拷贝文件到容器 二、数据卷 三、数据卷容器 四、Dockerfile 1、自定义centos,具备vim及ifconfig作用 2、自定义tomcat8 一、宿主机与容器之间的文件拷贝 备份我们已经装好的docker 等备…

隔离式DC/DC高压模块5V12V24V转50V110V250V300V380V600V1100V短路保护直流升压可调开关控制电源模块

特点 ● 效率高达 70%以上 ● 1*2英寸标准封装 ● 单电压输出 ● 价格低 ● 稳压输出 ● 工作温度: -40℃~85℃ ● 阻燃封装,满足UL94-V0 要求 ● 温度特性好 ● 可直接焊在PCB 上 应用 HRB W2~25W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&a…

Android databinding之数据单向与双向绑定详解与使用(三)

一、介绍 通过前面两篇文档,我们大概了解了databinding的工作方式,view的初始化,recycleview的使用。但是这些UI都离不开数据的填充,数据的修饰。 在说到数据绑定,好多开发者平时在工作中也经常听到databinding的数据…

https服务部署指南

1.概念 https服务的证书分布如下图: 客户端:CA证书 服务器:服务器证书,服务器密钥 2.证书生成&验证 2.1 证书生成 假设我们的域名为: www.contoso.com 创建CA私钥 openssl ecparam -out contoso.key -name p…

JMH基准测试工具 (一):介绍

在日常开发中,我们对一些代码的调用或者工具的使用会存在多种选择方式,在不确定他们性能的时候,我们首先想要做的就是去测量它。大多数时候,我们会简单的采用多次计数的方式来测量,来看这个方法的总耗时。 但是&#x…

串口通信扩展知识

在Android工控系统上,Android与硬件的通讯交互随处可见,其中串口通讯是最常用的通讯方式之一。 串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式…

扩散模型(Diffusion Model)原理与代码解析(一)

一、模型概览 扩散模型的灵感来自于非平衡热力学。定义了一个扩散步骤的马尔可夫链(当前状态只与上一时刻的状态有关),慢慢地向真实数据中添加随机噪声(前向过程),然后学习反向扩散过程(逆扩散…

python 图形界面“诈金花”游戏,更新了!附完整代码

旧版本的代码请见上一篇博文: python 从一道作业题到制作一个图形界面的“诈金花”游戏_Hann Yang的博客-CSDN博客Player1: (♥Q, ♣2, ♣8) - 单张Player2: (♦10, ♥7, ♠6) - 单张Player3: (♣4, ♠4, ♦2) - 对子Player4: (♠5, ♠9, ♥6) - 单张Player5: (♠…

SSM框架-SpringMVC(二)

目录 1 SpringMVC处理Ajax请求 1.1 RequestBody 1.2 RequestBody获取json格式的请求参数 1.3 ResponseBody 1.4、ResponseBody响应浏览器json数据 1.5 RestController注解 2 文件上传和下载 2.1 文件下载 2.2 上传文件 3 拦截器 3.1 拦截器的三个抽象方法 3.2 拦截器…

技术分享 | ClickHouse 冷热存储分离方案线上实践

作者:任坤 现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源…

母胎级教学,工业路由器远程维护PLC详细操作指南

1、前言随着工业4.0大力推进,对工业现场设备的稳定性提出了更高的要求,大多数的设备制造商不能持续监测及管理设备,因为现场设备分布比较分散,客户不能集中管理,如果通过视频或电话沟通问题,则准确度不够&a…

【安卓学习之常见问题】jar文件中Class转java文件不准(不同软件打开的class文件不一样)

█ jar文件中Class转java文件不准 █ 系列文章目录 提示:这里是收集了和文件分享有关的文章 【安卓学习之常见问题】android路径及文件问题 【安卓学习之常见问题】文件分享–文件不存在 【安卓学习之常见问题】自定义组件-刷新后跳到第一行 【安卓学习之常见问题…