InnoDB 磁盘结构 - Binlog

文章目录

  • binlog 的格式
  • mysqbinlog 工具
  • SHOW binlog events;
  • binlog 和 redo log 对比

https://dev.mysql.com/doc/refman/8.4/en/binary-log.html

binlog 全称 BinaryLog,是 MySQL 数据库中用于记录所有更改数据库状态的事件的日志文件。它主要用于以下几个目的:

  1. 数据恢复:在数据库出现故障时,可以利用 binlog 中的记录恢复数据到一个特定的时间点。
  2. 主从复制:在主从架构中,从库可以通过读取主库的 binlog 来同步数据,实现数据的复制和备份。
  3. 审计和监控:通过分析 binlog,可以监控数据库中的数据变更,进行审计和性能分析。

binlog 的特点

  1. 二进制格式:binlog 以二进制格式存储数据,相较于文本日志更为高效。
  2. 事件驱动:记录每个数据修改操作的事件,而不是简单的 SQL 语句。
  3. 可配置性:可以根据需要配置 binlog 的格式以及其存储方式。

binlog 的格式

https://dev.mysql.com/doc/refman/8.4/en/binary-log-formats.html

MySQL 的 binlog 有三种主要的日志格式:行格式、语句格式和混合格式。每种格式都有其特点、优缺点和适用场景。

  1. 行格式(ROW):记录每一行数据的变化,而不是 SQL 语句。
    优点:更加准确,能够捕捉到具体的数据变化。在处理复杂的 SQL 语句时,能够避免语句重放带来的不一致性问题。
    缺点:日志文件可能会变得很大,因为每一行的变化都要记录。对于大批量的操作,性能开销较大。
    使用场景:适合对数据一致性要求高的场景,尤其是涉及到复杂的业务逻辑和多表操作时。
  2. 语句格式(STATEMENT)
    特点:记录执行的 SQL 语句。
    优点:日志文件较小,存储效率高。适合简单的插入、更新和删除操作。
    缺点:对于某些非确定性的操作(如使用 NOW()、RAND() 等函数),可能会导致在主从复制时出现不一致。当 SQL 语句的逻辑复杂时,重放可能无法达到预期效果。
    使用场景:适合简单的、确定性操作的场景,或是数据变更较少的情况。
  3. 混合格式(MIXED)
    特点:结合了行格式和语句格式,根据具体的操作自动选择使用哪种格式。
    优点:兼具行格式和语句格式的优点,能够在性能和一致性之间取得平衡。
    自动选择最合适的格式,简化了配置和使用。
    缺点:在某些情况下,可能会引入复杂性,需要理解选择的逻辑。需要良好的监控和管理,以确保没有不一致性。
    使用场景:适合大多数场景,尤其是需要在性能和一致性之间找到平衡的应用。

总结

日志格式优点缺点使用场景
行格式 (ROW)数据变更准确,避免不一致性日志文件较大,性能开销大高一致性要求的复杂操作
语句格式 (STATEMENT)日志文件小,存储效率高可能导致不一致,复杂操作重放问题简单、确定性操作
混合格式 (MIXED)性能与一致性平衡,自动选择最合适格式可能引入复杂性,需要良好监控大多数场景,需要平衡性能和一致性

mysqbinlog 工具

可以使用 mysqlbinlog 工具查看或处理 binlog 的内容

mysqlbinlog [options] log_file_name

常用选项

  • -h, --host=name:指定 MySQL 服务器的主机名或 IP 地址。
  • -u, --user=name:指定连接 MySQL 使用的用户名。
  • -p, --password[=name]:指定连接 MySQL 使用的密码。
  • –port=#:指定连接 MySQL 使用的端口号。
  • -r, --start-position=#:从指定的位置开始读取 binlog。
  • -S, --socket=name:指定 Unix 套接字文件的路径。
  • –database=name:只显示特定数据库的事件。
  • –start-datetime=‘YYYY-MM-DD HH:MM:SS’:从指定的时间开始读取 binlog。
  • –stop-datetime=‘YYYY-MM-DD HH:MM:SS’:直到指定的时间停止读取 binlog。
  • –verbose:显示更详细的输出信息。

SHOW binlog events;

SHOW BINLOG EVENTS 是 MySQL 中的一个命令,用于显示指定 binlog 文件中的事件信息。这个命令可以帮助用户了解 binlog 中记录了哪些操作,以及这些操作的具体细节。

  1. 该命令可以列出 binlog 中的所有事件类型,如 INSERT、UPDATE、DELETE 等。
  2. 获取事件位置:显示每个事件的位置信息,方便后续的恢复或复制操作。
  3. 分析数据变更:通过查看事件,可以分析特定时间段内的数据变更情况,有助于审计和监控。
  4. 调试和故障排查:在出现数据不一致或复制延迟等问题时,可以通过 SHOW BINLOG EVENTS 来诊断问题。

执行该命令后,通常会返回以下列的信息:
在这里插入图片描述

  1. Log Name:binlog 文件的名称。
  2. Pos:事件在 binlog 文件中的位置。
  3. Event Type:事件的类型(如 Query、Table_map、Write_rows 等)。
  4. Server Id:产生事件的服务器 ID。
  5. End Log Pos:事件结束时的位置。
  6. Info:事件的详细信息,通常是 SQL 语句或操作描述。

binlog 和 redo log 对比

下面是 binlog 和 redolog 的一些对比:

特性binlog redo log
目的记录所有数据库更改,支持数据恢复和主从复制确保事务的持久性和数据一致性
存储内容SQL 语句或更改事件对数据页的具体修改操作
位置存储在磁盘上,通常以 binlog.000001 命名存储在 InnoDB 的日志文件中,如 ib_logfile0, ib_logfile1
使用场景数据恢复、主从复制、审计崩溃恢复、事务一致性
读取方式使用 mysqlbinlog 工具查看和处理由数据库内部管理,用户一般不直接查看
性能适合数据变更量大时使用快速恢复数据页状态,适合高并发事务处理

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

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

相关文章

分析JS Crash(进程崩溃)

一、JS Crash异常检测能力 1、JS Crash日志规格 以下是进程崩溃日志信息中对应字段解释。 Build info:XXX-XXXX X.X.X.XX(XXXXXXXX) <- 版本信息 Module name:com.example.myapplication <- 模块名 Version:1.0.0 <- 版本号 Pid:579 <- 进程号 Uid:0 <- 用户ID…

水凝胶发生器,不对称设计妙,医电应用前景广

大家好&#xff01;今天来了解一种具有工程机械离子不对称性的水凝胶发生器——《A high-current hydrogel generator with engineered mechanoionic asymmetry》发表于《Nature Communications》。嘿&#xff01;你能想象一种材料&#xff0c;它能像魔法一样在低频运动下产生高…

AI 写作工具汇总

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏AI_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 前言: 正文: ​ 前言: 在信息时代的浪潮中&#xff0c;AI 写作应运而生。它以强大的算法和海量的数据为支撑&…

人工智能时代中,产品经理的生存指南

前言 从AI技术到商业变现的过程中&#xff0c;一招不慎&#xff0c;很可能满盘皆输。在AI时代&#xff0c;一个优秀的产品经理&#xff0c;应该具备哪些能力呢&#xff1f;通过对人工智能产品生命周期的解读&#xff0c;明确在各个环节中&#xff0c;人工智能所需要承担的工作…

大厂出来的人为什么不比你高效?

在最近参加的一个线下聚会上&#xff0c;有人问我&#xff1a;“我们单位有来自阿里、腾讯、华为这些大厂的人&#xff0c;为什么我没觉得他们做事比我们这些没大厂经历的人更有章法和效率&#xff1f;”你别说&#xff0c;这一问所反映的现象&#xff0c;与我在阿里巴巴工作时…

Cisco Catalyst 9000 交换产品系列 IOS XE 17.15.1 发布下载,新增功能概览

Cisco Catalyst 9000 Series Switches, IOS XE Release 17.15.1 ED 思科 Catalyst 9000 交换产品系列 IOS XE 系统软件 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-catalyst-9000/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&…

【2024年最新】基于springboot+vue的点餐平台网站lw+ppt

作者&#xff1a;计算机搬砖家 开发技术&#xff1a;SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;Java精选实战项…

Python+Django预约管理系统

程序示例精选 PythonDjango预约管理系统 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonDjango预约管理系统》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习…

kubernetes(K8s)学习(一)

本文主要是搭建一个k8s平台&#xff0c;并部署一个springboot的jar包&#xff0c;后续以此作为学习k8s的环境。 1. 搭建k8s集群 网上有很多指导&#xff0c;大家可以在网上搜索一下&#xff0c;比如这个&#xff1a;K8s搭建集群-CSDN博客&#xff0c;本人通过VMware安装3台虚拟…

昇思学习打卡营第33天|基于MindSpore的恶性皮肤肿瘤识别

1. 实验介绍 本次实验的目标是基于MindSpore框架&#xff0c;训练一个ResNet50模型&#xff0c;用于恶性皮肤肿瘤的分类识别。本实验将使用包含四类皮肤肿瘤图片的数据集&#xff0c;针对ResNet50模型进行微调&#xff0c;训练出一个能够精准分类皮肤病的模型。主要过程包括数据…

Java项目实战II基于Java+Spring Boot+MySQL的房产销售系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者 一、前言 随着房地产市场的蓬勃发展&#xff0c;房产销售业务日益复杂&#xff0c;传统的手工管理方式已难以满…

指针赋值or常数赋值

int main (){int a 10;int b ;b a;int *c &a;int *d c; } 常数 a,b赋值&#xff1a; 都是将存储的值&#xff08;10&#xff09;赋值给别人。 指针赋值也是类似的&#xff1a; 指针存储的值&#xff08;&a&#xff09;为地址&#xff0c;就是把c指向的地址赋值给…

SaaS 应用如何助长网络犯罪

过去十年&#xff0c;软件即服务 (SaaS)的采用呈爆炸式增长&#xff0c;彻底改变了我们的工作方式。 从电子邮件平台到通信和协作应用程序&#xff0c;再到文件存储和共享服务&#xff0c;这些工具有望为我们的日常工作生活带来更大的灵活性和效率&#xff0c;尤其是在当今的远…

2.创建第一个MySQL存储过程(2/10)

引言 在现代数据库管理中&#xff0c;存储过程扮演着至关重要的角色。它们是一组为了执行特定任务而编写的SQL语句集合&#xff0c;这些语句被保存在数据库中&#xff0c;并且可以被多次调用执行。存储过程不仅可以提高数据库操作的效率&#xff0c;还能增强数据的安全性和一致…

unity 2d 近战攻击判定的三种方式

1. 给攻击帧添加碰撞盒 优点&#xff1a;配置直观&#xff0c;无需事件触发 缺点&#xff1a;无法定制&#xff0c;效率低 检测放在子物体&#xff0c;可以控制旋转 添加触发器事件 注意OnTriggerEnter2D只会在挂载了collider的组件上触发 protected virtual void OnTrigge…

降压芯片TPS54821

降压芯片TPS54821 介绍 价格低廉&#xff0c;只需1.5元。是一个同步整流降压BUCK电路。MOS管内置。输入电压为4.5V至17V&#xff0c;输出电压为0.6V到15V&#xff0c;输出电流最大到8A。是QFN封装&#xff0c;焊接时有些许困难。得益于QFN封装&#xff0c;其引线电感非常的小…

【深入理解SpringCloud微服务】手写实现断路器算法

【深入理解SpringCloud微服务】手写实现断路器算法 断路器状态切换断路器接口断路器算法实现相关属性failed()success()canPass() 断路器状态切换 在分析断路器算法前&#xff0c;我们先复习一下断路器的状态转换。 断路器一般有三个状态&#xff1a;关闭、打开、半开。 断路…

PP-Structure 快速入门

PP-Structure 快速入门 1. 环境准备2.快速使用2.1 命令行使用2.1.1 图像定位布局分析表格识别2.1.2 布局分析表格识别2.1.3 布局分析2.1.4 表格识别2.1.5 关键信息提取2.1.6 布局恢复2.2 python 脚本使用2.2.1 图像方向布局分析表格识别2.2.2 布局分析表格识别2.2.3 布局分析2…

正则表达式匹配英文字符

正则表达式匹配英文 20 个字符&#xff0c;包括大写&#xff0c;小写。 根据搜索结果&#xff0c;看到 honeymoose 分享过一个正则表达式的要求是: 匹配 20 个英文字符(大写、小写都包括)。 那么这个正则表达式可以写成: ^[a-zA-Z]{20}$解释一下: ^ 表示匹配字符串的开始[a-z…

pWnos1.0 靶机渗透 (Perl CGI 的反弹 shell 利用)

靶机介绍 来自 vulnhub 主机发现 ┌──(kali㉿kali)-[~/testPwnos1.0] …