mysql日志( Redo Log 、Undo Log、Bin Log)
InnoDB是一个带有ACID事务支持的存储引擎,其中redo log和undo log是其实现原子性、一致性、隔离性和持久性(ACID)的重要机制。
Redo Log(重做日志)
Redo log主要用于实现事务的持久性。它记录了后续可以用来恢复数据的“重做”操作。如果数据库崩溃,可以使用redo log记录复现完整的数据修改过程。Redo日志关注的是数据页的物理修改,并且这些记录是在事务提交之前写入的。通常,这些日志按照先后顺序被连续地写入到日志文件,这减少了IO操作的随机性,有助于提高性能。
Redo日志文件通常作为一个循环使用的日志组维护,一个文件满了之后就会滚动到下一个,形成一个循环。一旦数据被安全地写入到磁盘上的表里,相关的redo日志就可以被重用。
Undo Log(撤销日志)
Undo log主要用于实现事务的原子性和一致性。它记录了可以用来撤销每一个操作的信息。如果一个事务部分完成就失败或者被中止了,数据库将利用undo log来回滚事务对数据的修改,确保数据库能够返回到事务开始之前的一致状态。
Undo日志还用于实现事务的隔离性。在可重复读(REPEATABLE READ)和读已提交(READ COMMITTED)隔离级别中,读取操作需要访问事务开始之前的数据版本。如果在事务中修改了数据,这些旧的数据版本可以通过undo记录来访问。Undo日志存储在undo表空间中,不断积累的undo日志会定期清理,例如当所有需要该记录的事务都完成的时候。
Redo和Undo工作流
在一个数据库事务的生命周期中,redo和undo log通常这样工作:
-
当事务开始时,它可能会读取一些数据并更新它们,这些更新实际上写入了内存中的数据页(并不直接写入磁盘)。
-
数据库将这些修改操作记录到undo log中,这样如果事务需要回滚,就可以恢复原先的数据。
-
同时,将修改操作也记录到redo log中。如果数据库系统崩溃,事务的修改可以通过redo操作重新应用。
-
当事务提交时,数据库确保所有的redo log都已经写入了磁盘。这种写前日志(write-ahead logging)的策略保证了即使数据库在此时崩溃,所有提交的事务的修改都不会丢失。
-
提交事务后,数据库还会继续将内存中更改过的数据页刷新到磁盘中,这个过程可以异步进行,不需要立即完成,因为重做日志已经安全写入。
-
清理阶段,事务完成后,如果undo log不再需要,它们将被删除。
重要的是要理解,redo log记录的是如何重做一个操作,而undo log记录的是如何撤销一个操作。Redo log在事务提交时写入磁盘保证了持久性,而undo log让事务可以回滚到任何之前的状态来保证原子性和一致性。两者组合保障了事务的完整性和数据库的稳定性。
Bin Log
binlog有三种日志格式
1. STATEMENT(基于语句的复制Statement-Based Replication, SBR): 每个数据库更改(如INSERT, UPDATE, DELETE)都会以SQL语句的形式记录在二进制日志文件中。
2. ROW(基于行的复制Row-Based Replication, RBR): 而不是记录SQL语句,基于行的格式会记录更改了哪些行以及这些行如何改变。它记录了每个更改的具体行和列的新值。
3. MIXED(混合格式Mixed-Based Replication, MBR): MySQL会智能地选择使用基于语句或基于行的复制格式。对于大多数语句,它使用基于语句的格式,因为这通常更有效(占用更少的空间并且在某些情况下复制更快)。然而,对于那些可能导致数据不一致的语句(例如,含有`NOW()`, RAND(), 或者用户定义的函数),它会使用基于行的格式。
`MIXED` 模式基本上是一个折中方案,它试图平衡基于语句的复制的效率和基于行的复制的一致性。在某些场景下,基于语句的复制可能会导致主从服务器之间的数据不一致,因为某些非确定性的函数可能在主服务器和从服务器上产生不同的结果。在这些情况下,使用 MIXED`模式可以确保复制的正确性,同时保持尽可能高的效率。
要在MySQL中设置复制格式,可以在配置文件 my.cnf(或 my.ini)中或通过命令行设置 binlog_format变量,
例如
[mysqld]
binlog_format=MIXED
或者动态设置:
SET GLOBAL binlog_format = MIXED;
务必记得,改变二进制日志格式会影响所有随后的数据更改事件,所以在生产系统中修改它之前需要仔细考虑,并保证主从数据库设置的一致性,避免复制错误。
相关文章:
mysql日志( Redo Log 、Undo Log、Bin Log)
InnoDB是一个带有ACID事务支持的存储引擎,其中redo log和undo log是其实现原子性、一致性、隔离性和持久性(ACID)的重要机制。 Redo Log(重做日志) Redo log主要用于实现事务的持久性。它记录了后续可以用来恢复数据…...
HarmonyOS如何创建及调用三方库
介绍 本篇主要向开发者展示了在Stage模型中,如何调用已经上架到三方库中心的社区库和项目内创建的本地库。效果图如下: 相关概念 Navigation:一般作为Page页面的根容器,通过属性设置来展示页面的标题、工具栏、菜单。Tabs&#…...
我手写的轮子开源了
我手写的轮子开源了 文章目录 1.gitee坐标和地址1.1.gitee坐标1.2.gitee地址 2.github坐标和地址2.1.github坐标2.2.github地址 3.总结 1.gitee坐标和地址 1.1.gitee坐标 <dependency><groupId>io.gitee.bigbigfeifei</groupId><artifactId>es-sprin…...
第十九章 linux部署scrapyd
文章目录 1. linux部署python环境1. 部署python源文件环境2. 下载python3. 解压安装包4. 安装5. 配置环境变量6. 检查是否安装成功7. 准备python使用的包8. 安装scrapyd9. 配置scrapyd10. 开放6800端口 2. 部署gerapy1. 本机下载包2. 初始化3. 进入gerapy同步数据库4. 创建用户…...
微信打卡小程序怎么做_用户的每日习惯培养神器
微信打卡小程序:你的每日习惯培养神器 在这个快节奏的现代社会,我们每天都在忙碌中度过,有时候甚至会忘记自己曾经立下的那些小目标、小习惯。然而,随着科技的不断发展,微信打卡小程序的出现,为我们的生活…...
C语言数据在内存中的存储
reference n.提及,谈到;参考,查阅;(引自书或诗歌的)引言,引文; 引文的作者,参考书目;(帮助或意见的)征求,征询;…...
管理公司员工上网行为的软件都有哪些?
随着互联网的飞速发展,企业面临的网络安全威胁也日益加剧。为了保护企业数据安全、提高工作效率,上网行为管理系统及其相关管理软件应运而生。 未来,随着技术的不断进步和网络安全威胁的不断演变,上网行为管理系统及其管理软件将不…...
手撕C语言题典——逆序输出
有这样一个问题:读入一些整数,逆序输出到一行中。已知的是该整数不超过100个。我们该怎么办呢?我们先将这些整数循环输入,输入每个整数之后,我们只能将数组存下来,而这个地方就是数组。 本章可能用到的知识…...
如果保障服务器的安全
如果保障服务器的安全 一、修改它最开始的密码,后期也要一直更换。一般如果有客户来了服务器的话,服务器厂商都会提前把所有的系统都装好,之后再把这个权限交到用户的手里。很多用户可能在这方面不会特别注意,密码也不修改&#x…...
【SQL】1280. 学生们参加各科测试的次数 (笛卡尔积)
前述 知识点回顾:数据库中的四大join & 笛卡尔乘积(以MySQL为例) 笛卡尔积的两种写法 select * from stu,class; select * from stu cross join class; 题目描述 leetcode题目:1280. 学生们参加各科测试的次数 Code 写法…...
高企认定中科技成果转化是什么呢?
其实,这是一个流程,可以用下面的分段进程来表示:企业开展科研立项—科研立项得到科研结果—科研结果用于产品的生产—新产品品质提高带动了销售的增加。 上面的流程,其实是高企审核的核心,不仅仅关系到了量化打分。更…...
第十二届蓝桥杯省赛CC++ 研究生组-货物摆放
还是整数分解问题,注意n本身也是约数 #include <iostream> int main(){printf("2430");return 0; }#include <iostream> #include<cmath> #include<algorithm> using namespace std; typedef long long ll; const ll n 2021041820210418LL…...
基于SpringBoot的学生成绩管理系统
基于SpringBootVue的家教管理系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringBoot 系统功能结构展示 登录界面图 现今,越来越多的人乐于选择一项合适的管理方案,但是普通用户往往受到管理经验地限制&…...
旅游管理系统 |基于springboot框架+ Mysql+Java+Tomcat的旅游管理系统设计与实现(可运行源码+数据库+设计文档)
推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研究…...
SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)
文章目录 1.整合MyBatis1.需求分析2.数据库表设计3.数据库环境配置1.新建maven项目2.pom.xml 引入依赖3.application.yml 配置数据源4.Application.java 编写启动类5.测试6.配置类切换druid数据源7.测试数据源是否成功切换 4.Mybatis基础配置1.编写映射表的bean2.MonsterMapper…...
GAMES104-现代游戏引擎 1
主要学习重点还是面向就业,重点复习八股和算法 每天早上八点到九点用来学习这个课程 持续更新中... 第一节 游戏引擎导论 第二节 引擎架构分层 引擎是分层架构的 编辑器功能层资源层核心层平台层 越底层的代码越稳定越坚固,越上层的代码越灵活越开…...
idea 开发serlvet篮球秩序册管理系统idea开发mysql数据库web结构计算机java编程layUI框架开发
一、源码特点 idea开发 java servlet 篮球秩序册管理系统是一套完善的web设计系统mysql数据库 系统采用serlvetdaobean mvc 模式开发,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 servlet 篮…...
【深度学习】NestedTensors
文章目录 NestedTensorsWhy NestedTensor初始化 NestedTensorNestedTensor 操作reshape转置查看维度其他 NestedTensors DETR 中常见的数据格式为 NestedTensors,那么什么是 NestedTensors 呢? NestedTensor,包括 tensor 和 mask 两个成员&a…...
【网络】负载均衡
OSI模型每一层的负载均衡 在OSI模型中,每一层的负载均衡具体如下: 1. 第二层(数据链路层):数据链路层的负载均衡通常涉及对MAC地址的操作。在这一层,可以使用虚拟MAC地址技术,外部设备对虚拟MA…...
dataGridView 绑定List 显示内容不刷新
绑定后,原list值变动,显示内容会刷新 绑定后,list新添加的值时不会显示到界面,需要重新绑定list 微软的Bug 参考代码 public class Student{public string Name { get; set; }}List<Student> list new List<Student>();private void Form2_Load(object sender,…...
从理论到仿真:用ADS复现Doherty功放的高效奥秘
1. Doherty功放为何能成为5G时代的效率担当? 第一次接触Doherty功放时,我和大多数射频工程师一样充满疑惑:为什么这个诞生于1936年的老技术,反而在5G时代大放异彩?直到我用ADS软件完整复现了它的工作过程,才…...
Floccus实现跨浏览器书签同步
1. 关于Floccus Floccus是一款浏览器插件, 依赖Nextcloud,坚果云或者Google Drive等云端存储实现不同浏览器之间的书签同步 官网地址: https://floccus.org Github地址: https://github.com/floccusaddon/floccus 2. 云盘选择 Nextcloud(自行搭建), 坚果云(支持WebDAV 协议)…...
从零到一:在eNSP中解锁USG6000V防火墙的Web管理界面
1. 初识eNSP与USG6000V防火墙 第一次接触华为eNSP模拟器和USG6000V防火墙时,我完全被这个虚拟网络实验室震撼到了。想象一下,不用花一分钱买硬件设备,就能在电脑上搭建完整的网络环境,这简直是网络工程师的福音。USG6000V作为华为…...
生成式AI实时通信的“隐形瓶颈”:模型Tokenizer流式切分与网络MTU错配问题(附Wireshark抓包取证全过程)
第一章:生成式AI应用实时通信方案 2026奇点智能技术大会(https://ml-summit.org) 生成式AI应用对低延迟、高并发、上下文感知的实时通信能力提出全新要求。传统REST API轮询或短连接模式难以支撑流式推理响应、多模态协同编辑、Agent间动态协商等典型场景。现代架构…...
基于Univer的前端Excel交互式编辑器开发指南
1. 为什么选择Univer开发Excel编辑器? 如果你正在寻找一个能在前端实现Excel功能的高效解决方案,Univer绝对是当前最值得考虑的开源框架之一。我去年在开发一个在线报表系统时,对比了市面上多个表格库,最终选择Univer的原因很简单…...
分布式系统架构模式精讲:CQRS、Saga与数据库选型完全指南
摘要分布式系统设计是现代后端架构的核心挑战。本文深入讲解CQRS命令查询职责分离模式、Saga分布式事务模式、Event Sourcing事件溯源模式,以及在CAP定理约束下的数据库选型策略。通过大量代码示例和对比表格,帮助读者理解这些模式的设计原理、适用场景和…...
面试官:聊聊RocketMQ是怎么保存偏移量的?
对消息队列来说,偏移量是一个非常重要的概念,如果偏移量保存失败,可能会造成消息丢失、消息重复消费等问题。今天来聊一聊 RocketMQ 是怎么保存消息偏移量的。1 消息拉取RocketMQ 客户端启动的时候,会启动重平衡线程 RebalanceSer…...
ST MCSDK V6.2.0实战:手把手教你配置HSO-ST观测器,体验无感电机控制的‘快准稳’
ST MCSDK V6.2.0深度实战:HSO-ST观测器配置与无感控制优化指南 在电机控制领域,实现高精度、快速响应的无感控制一直是工程师们追求的目标。ST最新发布的MCSDK V6.2.0软件包中引入的HSO-ST(High Sensitivity Observer)观测器技术,为这一目标提…...
AI伦理在测试中的应用:防止模型偏差
随着人工智能技术深度融入软件测试流程,自动化测试、智能缺陷预测与生成式测试用例构建等应用显著提升了效率与覆盖率。然而,技术的赋能也伴随着严峻的伦理挑战,其中模型偏差问题尤为突出。对于软件测试从业者而言,测试工具与流程…...
SMUDebugTool终极指南:4步掌握AMD Ryzen处理器深度调试与优化
SMUDebugTool终极指南:4步掌握AMD Ryzen处理器深度调试与优化 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: htt…...
