MySQL中已经有了Binlog,为啥还要有Redo Log
参考文章
MySQL中的Binlog和Redo Log虽然都与事务的持久性和可恢复性有关,但它们服务于不同的目的和场景,并且在MySQL的架构中扮演着互补的角色。
- Redo Log:
- 目的:Redo Log 主要用于
保证InnoDB存储引擎的事务持久性。它确保在系统崩溃的情况下,已经提交的事务不会丢失,这是通过预写日志(Write-Ahead Logging, WAL)机制实现的。 - 工作方式:Redo Log 记录的是事务对数据页所做的物理修改。当事务提交时,这些修改可能还没有写入磁盘上的数据文件,但Redo Log会确保这些修改被写入日志文件中。
- 恢复机制:在发生崩溃后,InnoDB可以利用Redo Log来重做(redo)事务的修改,以此恢复到崩溃前的状态。
- 目的:Redo Log 主要用于
如果数据库发生崩溃,InnoDB 在重启时会检查 Redo Log。通过 Redo Log,InnoDB 可以重做(redo)
在崩溃前已经提交但可能未写入到数据文件中的事务,确保这些事务的修改得到持久化。
- Binlog:
- 目的:Binlog 主要用于记录所有修改了数据库数据的SQL语句,以便用于复制和数据恢复。它是MySQL服务器层的功能,与存储引擎无关。
- 工作方式:Binlog 记录的是逻辑日志,即实际执行的SQL语句或者在RBR模式下记录的行事件。
- 复制和恢复:Binlog 使得MySQL可以实现主从复制,主服务器上的操作可以通过复制Binlog到从服务器并重放来同步数据。同时,Binlog也可以用于点时间恢复(Point-in-Time Recovery),恢复到特定时间点的数据库状态。
在执行更新语句过程,会记录redo log与binlog两块日志,以基本的事务为单位,redo log在事务执行过程中可以不断写入,而binlog只有在提交事务时才写入,所以redo log与binlog的写入时机不一样。
为什么两者都需要:
- 不同的恢复和复制需求:Redo Log 主要用于
崩溃恢复,而Binlog用于数据复制和点时间恢复。 - 性能和优化:Redo Log 的物理日志对于崩溃恢复来说性能更优,因为它直接关联到数据页的状态。Binlog 的逻辑日志则更适合于复制和审计,因为它记录了实际执行的操作。
- 隔离存储引擎与服务器层:
Redo Log 是InnoDB存储引擎特有的,而Binlog 是MySQL服务器层的功能,这种设计使得Binlog可以用于多种存储引擎。
总之,Redo Log 和 Binlog 在MySQL中共同工作,以确保数据的安全性、持久性和一致性,同时提供灵活的数据恢复和复制选项。
MySQL InnoDB 引擎使用 redo log(重做日志) 保证事务的持久性,使用 undo log(回滚日志) 来保证事务的原子性。MySQL数据库的数据备份、主备、主主、主从都离不开binlog,需要依靠binlog来同步数据,保证数据一致性。
相关文章:
MySQL中已经有了Binlog,为啥还要有Redo Log
参考文章 MySQL中的Binlog和Redo Log虽然都与事务的持久性和可恢复性有关,但它们服务于不同的目的和场景,并且在MySQL的架构中扮演着互补的角色。 Redo Log: 目的:Redo Log 主要用于保证InnoDB存储引擎的事务持久性。它确保在系…...
Java数据结构-模拟ArrayList集合思想,手写底层源码(1),底层数据结构是数组,编写add添加方法,正序打印和倒叙打印
package com.atguigu.structure; public class Demo02_arrayList {public static void main(String[] args) {MyGenericArrayListV1 arrayListV1 new MyGenericArrayListV1();//arr.add(element:100,index:1);下标越界,无法插入//初始化(第一次添加&…...
MyBatis-Plus如何 关闭SQL日志打印
前段时间公司的同事都过来问我,hua哥公司的项目出问题了,关闭不了打印sql日记,项目用宝塔自己部署的,磁盘满了才发现大量的打印sql日记,他们百度过都按照网上的配置修改过不起作用,而且在调试时候也及为不方…...
单元测试框架jUnit
JUnit(Java单元测试框架)是用于在Java应用程序中执行单元测试的框架。它是一个开源框架,广泛用于Java开发中。以下是一些关于JUnit的常见问题以及相应的汉语回答: 1. **什么是JUnit?** - JUnit是一个用于编写和运行…...
微软 Visual Studio 迎来 AI 建议命名功能
目录 1微软 Visual Studio 迎来 AI 建议命名功能 2专访核桃编程CEO曾鹏轩:实操是掌握编程技能的唯一办法 1微软 Visual Studio 迎来 AI 建议命名功能 IT之家 12 月 19 日消息,使用付费 GitHub Copilot Chat 扩展的 Visual Studio Preview 用户…...
【排序算法】C语言实现选择排序与冒泡排序
文章目录 🚀前言🚀冒泡排序✈️冒泡排序的逻辑✈️冒泡排序coding 🚀选择排序✈️选择排序的逻辑✈️选择排序coding 🚀前言 这里是阿辉算法与数据结构专栏的第一篇文章,咱们就从排序算法开始讲起,排序算法…...
设计模式之-原型模式,快速掌握原型模式,通俗易懂的理解原型模式以及使用场景
文章目录 一、什么是原型模式二、使用场景三、代码示例 一、什么是原型模式 原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新的对象,而无需通过调用构造函数来创建。原型模式通过克隆操作来创建对象,提供了一种更加灵活和高效…...
数据结构之进阶二叉树(二叉搜索树和AVL树、红黑树的实现)超详细解析,附实操图和搜索二叉树的实现过程图
绪论 “生命有如铁砧,愈被敲打,愈能发出火花。——伽利略”;本章主要是数据结构 二叉树的进阶知识,若之前没学过二叉树建议看看这篇文章一篇掌握二叉树,本章的知识从浅到深的对搜索二叉树的使用进行了介绍和对其底层…...
SpringIOC之LocaleContext
博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…...
前端案例—antdDesign的Select多选框组件加上全选功能
前端案例—antdDesign的Select多选框组件加上全选功能。 实现效果如下: Select 组件里有这个属性,可以利用这个对下拉菜单进行自定义。 const handleChange (e, value) > {setSelectState(e.target.checked)let arr productOptions?productOption…...
个人财务工具、密钥管理平台、在线会计软件、稍后阅读方案 | 开源专题 No.51
gethomepage/homepage Stars: 10.1k License: GPL-3.0 这个项目是一个现代化、完全静态的、快速且安全的应用程序仪表盘,具有超过 100 种服务和多语言翻译的集成。 快速:网站在构建时以静态方式生成,加载时间飞快。安全:所有对后…...
HBase基础知识(二):HBase集群部署、HBaseShell操作
1. HBase安装部署 1.1 Zookeeper正常部署 首先保证Zookeeper集群的正常部署,并启动之: 创建集群启动脚本: #!/bin/bash case $1 in "start"){ for i in hadoop100 hadoop101 hadoop102 do echo----------zookeeper $i 启动----…...
C 标准库 - <time.h>
简介 time.h 头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。 库变量 下面是头文件 time.h 中定义的变量类型: 序号变量 & 描述1size_t是无符号整数类型,它是 sizeof 关键字的结果。2clock_t这是一个适合存储处理器时间的类型。3…...
养老院自助饮水机(字符设备驱动)
目录 1、项目背景 2、驱动程序 2.1 三层架构 2.2 驱动三要素 2.3 字符设备驱动 2.3.1 驱动模块 2.3.2 应用层 3、设计实现 3.1 项目设计 3.2 项目实现 3.2.1 驱动模块代码 3.2.2 用户层代码 4、功能特性 5、技术分析 6. 总结与未来展望 1、项目背景 养老院的老人…...
Jenkins 构建触发器指南
目录 触发远程构建 (例如,使用脚本) 描述 配置步骤 安全令牌 在其他项目构建完成后触发构建 描述 配置步骤 定时触发构建 描述 配置步骤 GitHub钩子触发GITScm轮询 描述 配置步骤 Poll SCM - 轮询版本控制系统 描述 触发远程构建 (例如,使…...
通用的java中部分方式实现List<自定义对象>转为List<Map>
自定义类 /*** date 2023/12/19 11:20*/ public class Person {private String name;private String sex;public Person() {}public Person(String name, String sex) {this.name name;this.sex sex;}public String getName() {return name;}public String getSex() {return…...
Python---静态Web服务器-返回固定页面数据
1. 开发自己的静态Web服务器 实现步骤: 编写一个TCP服务端程序获取浏览器发送的http请求报文数据读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器。HTTP响应报文数据发送完成以后,关闭服务于客户端的套接字。 2. 静态Web服务器-返回固…...
react v-18父组件调用子组件的方法和数据
版本 "react": "^18.1.0", "react-dom": "^18.1.0", 父组件 import React, { useState, useRef, memo, useEffect } from "react"; import { useTranslation } from "react-i18next"; import { Card } from &q…...
Linux——缓冲区
我在上篇博客留下了一个问题,那个问题就是关于缓冲区的问题,我们发现 文件有缓冲区,语言有用户级缓冲区,那么缓冲区到底是什么?,或者该怎 么认识缓冲区?这篇文章或许会让你有所认识,…...
Mac 生成Android签名证书 .keystore文件
工具下载地址 https://www.oracle.com/java/technologies/downloads/#jdk21-mac1. 找到安装jdk的路径,并进入bin目录下 1.1 查找JDK命令 /usr/libexec/java_home -v结果为: java_home: option requires an argument -- v /Library/Java/JavaVirtualMachines/jdk…...
【稀缺首发】全球首份Midjourney 35mm风格LUT转换协议白皮书(附Adobe Lightroom联动预设+FFmpeg批量胶片渲染脚本)
更多请点击: https://intelliparadigm.com 第一章:Midjourney 35mm风格的影像美学本源与技术定义 35mm胶片摄影所承载的颗粒质感、动态范围衰减、边缘柔焦与色彩偏移,并非缺陷,而是光学物理与化学显影共同作用下的美学签名。Mid…...
如何评估你的 Agent 是否真的在思考
重新审视智能:如何用科学、工程与可量化标准评估你的 Agent 是否真的在思考 警告:全文约 12.7 万字,由 8 个核心章节组成,单节最低字数超过 1.1 万字。建议分段阅读,配合工具与项目实践,可获得最佳学习效果。 0. 章节导航与阅读建议 为了帮助不同背景的读者(从 AI 产品…...
如何精准下载GitHub项目中的特定文件或文件夹
如何精准下载GitHub项目中的特定文件或文件夹 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 在GitHub上查找开源资源时,开发者常常面临一个现实问题:如何仅获取项目中的特定模块而非整…...
鸿蒙面试高频题:元服务和传统应用有什么区别?10个元服务面试题+详细解答
📖 鸿蒙NEXT开发实战系列 | 第30篇 | 面试篇 🎯 适合人群:准备鸿蒙开发面试的开发者 ⏰ 阅读时间:约15分钟 | 💻 开发环境:DevEco Studio 5.0 导航: 📖 系列目录 📖 上一…...
Genesys Cloud技能库:模块化对话机器人开发实战指南
1. 项目概述:一个为Genesys Cloud平台量身定制的技能库如果你正在或计划使用Genesys Cloud来构建你的客户服务体验,并且厌倦了从零开始编写每一个对话流程,那么这个名为“genesys-cloud-skills”的开源项目,绝对值得你花时间深入了…...
【LeetCode刷题日记】222.极速计算完全二叉树节点数:O(log²n)算法揭秘
🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...
3.3 直连进阶:群晖与PC万兆/2.5G直连配置全解(兼顾内网高速与外网访问)
1. 为什么需要群晖与PC直连? 家里有NAS的朋友应该都遇到过这样的场景:想从PC往群晖里传几个大文件,结果发现速度只有100MB/s左右,一个10GB的电影要传将近两分钟。这其实就是千兆网络的瓶颈在作祟。传统的千兆网络理论速度是125MB…...
VCNL系列接近传感器特性与工程应用解析
1. VCNL系列接近传感器核心特性解析VCNL4010、VCNL4020和VCNL3020这三款接近传感器代表了当前集成式光学传感方案的最高水平。我在工业自动化项目中多次采用该系列传感器,其最显著的特点是"三合一"封装设计——将红外发射器、PIN光电二极管和信号处理IC集…...
深入Logos FPGA的PCB布局:如何针对FBG256、FBG484和LPG封装优化你的设计
深入Logos FPGA的PCB布局:如何针对FBG256、FBG484和LPG封装优化你的设计 在硬件设计领域,FPGA的PCB布局一直是工程师面临的核心挑战之一。特别是当项目需要在性能、成本和尺寸之间寻找平衡点时,封装选择往往成为决定成败的关键因素。Logos系列…...
UE4 TCP通信实战:从网络调试助手到Python服务端的跨平台数据交互
1. UE4 TCP通信基础与环境搭建 第一次在UE4里折腾TCP通信的时候,我对着文档研究了整整两天。后来发现其实用对方法,半小时就能跑通第一个Demo。这里分享我最常用的TCPSocketPlugin插件方案,比原生C实现简单十倍。 先到虚幻商城搜索"TCP …...
