MySQL binlog的几种日志录入格式以及区别
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。
🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。
🏆本文已收录于PHP专栏:MySQL的100个知识点。
🎉欢迎 👍点赞✍评论⭐收藏
文章目录
- 前言
- 三种主要的日志录入格式
- Statement格式
- Row格式
- Mixed格式
- 总结
前言
MySQL的binlog(二进制日志)是一种用于记录数据库的更改操作的日志文件。它可以用于数据复制、恢复和故障恢复等场景。MySQL支持多种不同的binlog格式,每种格式有着不同的特点和适用场景。本文将介绍MySQL binlog的几种日志录入格式以及它们之间的区别。
三种主要的日志录入格式
MySQL binlog有三种主要的日志录入格式,分别是Statement格式、Row格式和Mixed格式。下面将详细介绍这三种格式的特点和应用场景。
Statement格式
Statement格式是最早出现的binlog格式,它记录了每个执行的SQL语句。当数据库执行一个语句时,该语句将会被完整地写入到binlog中。这意味着binlog中会记录所有的SQL语句,包括对表的修改操作和查询操作。
Statement格式的优点是记录量相对较小,因为它只需要记录SQL语句本身而不需要记录具体的行数据。另外,由于只记录SQL语句,所以binlog文件可以被直接读取和解析,方便进行数据分析和处理。
然而,Statement格式也有一些缺点。首先,当某些SQL语句引用了非确定性函数(如NOW())或者使用了触发器等特性时,binlog的回放可能会产生不一致的结果。其次,由于binlog只记录了SQL语句,因此在进行数据恢复时,可能需要重新执行大量的SQL语句,导致恢复效率较低。
Row格式
Row格式是MySQL binlog中的第二种日志录入格式,它记录了每一行数据的变化。当数据库执行一个修改表数据的SQL语句时,Row格式会将修改前后的行数据都记录到binlog中。
Row格式的优点是可以确保数据的一致性,因为它记录了具体的行数据。这样,当进行数据恢复时,可以直接使用binlog中的行数据来还原数据库的状态,而不需要重新执行SQL语句。另外,Row格式也避免了Statement格式可能存在的不确定性问题。
然而,Row格式的缺点是记录量相对较大,因为它需要记录每一行数据的变化。当数据量比较大时,binlog文件可能会变得非常庞大,占用大量的存储空间。
Mixed格式
Mixed格式是MySQL binlog的第三种日志录入格式,它是Statement格式和Row格式的混合形式。Mixed格式会根据具体的SQL语句类型来选择使用哪种格式进行记录。
Mixed格式的优点是可以兼顾Statement格式和Row格式的优点。对于简单的SQL语句,可以使用Statement格式进行记录,减少binlog文件的大小;对于复杂的SQL语句,可以使用Row格式来确保数据的一致性。这样既可以减少存储空间的占用,又可以保证数据的完整性。
然而,Mixed格式也有一些缺点。首先,由于需要根据具体的SQL语句类型进行判断,因此在进行binlog解析时可能会比较复杂。其次,由于需要同时记录Statement格式和Row格式的日志,可能会增加binlog文件的大小。
综上所述,MySQL binlog的三种日志录入格式各有优缺点。在实际应用中,我们可以根据具体的需求来选择合适的格式。如果对存储空间要求较高,可以考虑使用Statement格式;如果对数据一致性要求较高,可以考虑使用Row格式;如果希望兼顾存储空间和数据一致性,可以考虑使用Mixed格式。
当然,除了以上介绍的三种格式,MySQL binlog还支持其他一些格式,如GTID格式和Minimal格式等。不同的格式适用于不同的场景,可以根据具体的需求来选择合适的格式。
总结
总结起来,MySQL binlog的多种日志录入格式提供了灵活的选择,可以根据不同的需求来平衡存储空间和数据一致性。在实际应用中,我们需要根据具体的场景和要求来选择合适的格式,以便实现高效的数据复制、恢复和故障恢复等操作。
相关文章:

MySQL binlog的几种日志录入格式以及区别
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…...
C# 案例题
1. // # hello world using System; namespace HelloWorldApplication {class HelloWorld{static void Main(string[] args) {/*my first C# program*/Console.WriteLine("HelloWorld C#");Console.ReadKey();}} } 2. // C# 计算矩形的面积 /*计…...

拒绝摆烂!C语言练习打卡第七天
🔥博客主页:小王又困了 📚系列专栏:每日一练 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、选择题 📝1.第一题 📝2.第二题 Ὅ…...
【动态规划】状态压缩dp
【动态规划】状态压缩dp...

Java eight 解读流(Stream)、文件(File)、IO和异常处理的使用方法
目录 Java 流(Stream)、文件(File)和IO读取控制台输入读写文件FileInputStreamFileOutputStream Java目录 Java 异常处理 Java 流(Stream)、文件(File)和IO java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io 包中的流支持很多种…...

胜券汇:行业持续轮动 缺乏主线下关注反转预期的方向
前史行情4年一轮回,中心在于微观环境的类似性。首要,复盘前史,2016-2019年和2020年至今的行情走势较为类似,历经约1年半的长牛,约1年的长熊,阅历1个季度快速反弹后继续约3个季度的震动期。其次,…...

java+ssm+mysql农场信息管理系统
项目介绍: 本系统为基于jspssmmysql的农场信息管理系统,功能如下: 用户:注册登录系统,菜地信息管理,农作物信息管理,种植信息管理,客户信息管理,商家信息管理ÿ…...

【App出海成功案例】 | NetMarvel 帮助广告主ARPU增长45%,ECPM增长50%,付费率涨幅30%
中国App何以扬帆出海? 出海热发展到今天,中国App席卷西方世界的神话被一一打造,手游/非游双面开花,成功案例作为赛道代表,也成为众多出海广告主一一效仿的风向标。 它们在用户增长、变现收益上的打法是怎样的&#x…...
CSDN每日一练 |『鬼画符门莲台争夺战』『等差数列』『 路灯亮度』2023-08-31
CSDN每日一练 |『鬼画符门莲台争夺战』『等差数列』『 路灯亮度』2023-08-31 一、题目名称:鬼画符门莲台争夺战二、题目名称:等差数列三、题目名称:等差数列四、题目名称:路灯亮度路灯亮度』2023-08-31) 一、题目名称:鬼画符门莲台争夺战 时间限制:1000ms内存限制:256M …...

自编码器AE全方位探析:构建、训练、推理与多平台部署
本文深入探讨了自编码器(AE)的核心概念、类型、应用场景及实战演示。通过理论分析和实践结合,我们详细解释了自动编码器的工作原理和数学基础,并通过具体代码示例展示了从模型构建、训练到多平台推理部署的全过程。 关注TechLead&…...

SpringBoot - Google EventBus、AsyncEventBus
介绍 EventBus 顾名思义,事件总线,是一个轻量级的发布/订阅模式的应用模式,最初设计及应用源与 google guava 库。 相比于各种 MQ 中间件更加简洁、轻量,它可以在单体非分布式的小型应用模块内部使用(即同一个JVM范围…...

Tauri打包windows应用配置中文界面
使用 Tauri Rust 开发桌面应用,在 windows 系统上,打包后安装包名称后缀、安装界面、相关说明默认都是英文的。如果要默认显示为中文,则需要在 tauri.conf.json 中配置相应参数。 前言 默认情况下,在 windows 系统打完的 mis 包…...

深度丨Serverless + AIGC,一场围绕加速创新的升维布局
作者:褚杏娟 上图来源于基于函数计算部署 SD实现光影效果 前言: Serverless 在中国发展这些年,经历了高潮、低谷、现在重新回到大众视野。很多企业都非常感兴趣,部分企业开始大规模应用;也有一些企业对在生产环境真正…...
flask日志
您可以使用 Python 自带的 logging 模块来实现 Flask 日志记录功能。以下是一个简单的示例: import os import logging from logging.handlers import TimedRotatingFileHandler from flask import Flask, requestapp Flask(__name__)# 创建日志目录 if not os.pa…...

新能源汽车动力总成系统及技术
需要动力系统总成的请联:shbinzer 拆车邦 需要动力系统总成的请联:shbinzer 拆车邦 需要动力系统总成的请联:shbinzer 拆车邦 需要动力系统总成的请联:shbinzer 拆车邦 需要动力系统总成的请联:shbinzer …...

在 WSL2 中使用 NVIDIA Docker 进行全栈开发和深度学习 TensorFlow pytorch GPU 加速
在 WSL2 中使用 NVIDIA Docker 进行全栈开发和深度学习 TensorFlow pytorch GPU 加速 0. 背景 0.1 起源 生产环境都是在 k8d pod 中运行,直接在容器中开发不好嘛?每次换电脑,都要配配配,呸呸呸新电脑只安装日常用的软件不好嘛&…...

模拟实现应用层协议
模拟实现应用层协议 文章目录 模拟实现应用层协议应用层再谈协议 序列化和反序列化 网络版计算器自定义协议利用Json进行序列化和反序列化json库的安装条件编译 应用层 应用层(Application layer)是OSI模型的第七层。应用层直接和应用程序接口并提供常见…...

SAP-MM-冲销凭证布局变更
业务场景: 仓管员在冲销物料凭证时MBST,显示行很少,只有7行,提出需求调整布局为多行,但是MBST没有调整布局功能, 解决:点击“定制本地布局-选项-字体设置”调整字体大小 跟据需求调整字体&…...
事务方法中保证数据只插入一次方案探究
需求场景 在项目的接口请求中,我们有一个接口A需要事务支持,在接口A中调用了方法B,方法B也需要事务支持,两者都带有Transactional注解。在B方法中是这个一个逻辑,查询本地数据库是否包含属性值为一个特定值的字段&…...

高通开发系列 - 5G网络之QTI守护进程服务介绍
By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 代码位置和依赖关系功能介绍代码逻辑讲解外设节点关注的目录socket服务端初始化DPM客户端监听守护关键的数据结构体…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...