【MySQL】MySQL中的二进制日志,它有哪些格式?

  • 二进制日志(binary log)的一些概念
  • 二进制日志的格式
  • 感谢 💖

二进制日志(binary log)的一些概念

二进制日志(Binary Log)是MySQL中非常重要的组件,用于记录数据库中的数据更改和结构更改。下面是一些基本的概念与说明。

  • 包含数据和模式更改及其时间戳:
    • 二进制日志包括对数据库进行的各种更改,包括INSERT、UPDATE、DELETE等数据更改,以及ALTER TABLE等模式更改。
    • 每个记录都包括时间戳,记录了更改发生的时间。
  • 基于语句或基于行的日志记录:
    • 二进制日志可以配置为不同的格式,包括基于语句(Statement-Based)和基于行(Row-Based)的日志记录。
    • 基于语句记录会记录SQL语句,而基于行记录会记录每一行数据的更改。
  • 用途:
    • 从备份的时间点恢复:可以使用二进制日志来还原数据库到特定的时间点,以便恢复丢失的数据。
    • 从备份的完全恢复:将二进制日志与备份结合使用,以完全还原数据库状态。
    • 复制:二进制日志用于将主服务器上的更改传递给从属服务器,以保持数据同步。
  • 轮转:
    • 二进制日志会定期轮转,以控制日志文件的大小和数量。轮转发生在以下情况下:MySQL重新启动时;达到了max_binlog_size设置的最大大小;执行FLUSH LOGS语句时。
  • 可以通过不同的方式检查和管理二进制日志:
    • 元数据查询:可以使用SHOW BINARY LOGSSHOW MASTER STATUS等命令来查看有关二进制日志的元数据信息,如日志文件列表和位置。
    • 内容查看:使用mysqlbinlog命令可以查看二进制日志的内容,以了解其中包含的SQL语句和事件。

二进制日志的格式

MySQL支持三种不同的二进制日志格式,它们决定了如何记录二进制日志中的信息。我们可以通过设置全局或会话级别的binlog_format服务器变量来选择二进制日志的格式。以下是这三种格式的说明:

  • 基于行的日志记录(Row-Based Logging):
    • 基于行的日志记录是MySQL的默认格式。
    • 在这种格式下,二进制日志会记录对表中行数据的每个更改操作。这包括INSERT、UPDATE和DELETE操作。比如,使用update语句更改了一行,那么就会将修改过的行记录下来。
    • 缺点是可能产生较大的日志文件,因为它记录了所有更改的详细数据信息。优点是记录非常详细,可以完全还原每个更改。
  • 基于语句的日志记录(Statement-Based Logging):
    • 在这种格式下,二进制日志记录的是SQL语句,而不是行级操作。如果一条SQL语句修改了多行数据,只会记录一次该语句,而不是每一行的修改。
    • 优点是生成的日志文件通常较小,因此节省了磁盘空间和网络带宽。缺点是在某些情况下,SQL语句可能不足以完全还原数据的更改,特别是涉及到随机函数或非确定性操作时。
  • 混合记录(Mixed Logging):
    • 在这种格式下,默认使用基于语句的日志记录,当语句不确定时会使用基于行的日志记录。
    • 这种格式试图兼顾基于行和基于语句的优点,以提供更灵活的日志记录。

注意:不能在运行时更改binlog_format变量,必须在MySQL启动时设置。一些情况下,如从存储函数或触发器中进行更改、启用NDB存储引擎、或会话当前正在使用基于行的复制时,可能无法更改binlog_format变量。

感谢 💖

好啦,这次的分享就到这里,感谢大家看到这里🤞

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

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

相关文章

nodejs+vue 大学生就业管理系统

随着信息化时代的到来,管理系统都趋向于智能化、系统化,学生就业管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而…

DataX - 在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数

更新服务器上的datax版本后,发现执行以前的任务全都失败,查看日志都有报 com.alibaba.datax.common.exception.DataXException: Code:[Framework-03], Description:[DataX引擎配置错误,该问题通常是由于DataX安装错误引起,请联系…

LeetCode力扣018:罗马数字转整数

罗马数字转整数 代码实现 class Solution(object):def romanToInt(self, s):""":type s: str:rtype: int"""nlen(s)sum0for i in range(0,n):dic {I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000}if i1!n:if s[i]I:if s[i1] V or s[i1]X…

【文件操作——详细讲解】

1. 为什么使用文件?🧐 如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数…

skywalking源码本地编译运行经验总结

前言 最近工作原因在弄skywalking,为了进一步熟悉拉了代码下来准备debug,但是编译启动项目我就费了老大劲了,所以准备写这篇,帮兄弟们少踩点坑。 正确步骤 既然是用开源的东西,那么最好就是按照人家的方式使用&…

面试打底稿② 专业技能的第二部分

简历原文 抽查部分 比较熟悉Nacos、Feign、SpringCloud Gateway等微服务的使用,有实际上手项目使用的经验;基本掌握Linux常用命令,了解Linux系统管理、网络管理、生产环境等必用服务,了解Docker的使用,在博客中多有关…

AI智能语音机器人的优势

1.高效自动拨号功能。 导入客户数据,外呼机器人自动拨号,无需看守,真人录音话术,定制场景问答和1秒内的问答响应,为客户带来真实准确的咨询体验。同时,每次通话结束后,外呼系统根据通话时间和关…

【深度学习实验】卷积神经网络(二):自定义简单的二维卷积神经网络

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 二维互相关运算(corr2d) 2. 二维卷积层类(Conv2D) a. __init__(初始化) b. forward(前向传…

Databend 开源周报第112期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 理解用户自定义…

什么是物联网智慧公厕?

在当今科技快速发展的背景下,具备全感知、可靠传输、智能处理三大特点的物联网技术,正逐渐渗透到各个领域。而智慧公厕作为其中的一个创新应用,正逐渐受到市场的关注和重视。 什么是物联网智慧公厕?物联网智慧公厕是指通过物联网…

C++之互斥锁、读写锁、互斥量、 信号量、原子锁机制总结(二百二十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【知识点随笔分析】我看看谁还不会用CURL命令

目录 前言: CURL介绍: CURL的基本使用: CURL与PING命令的区别: CURL命令的应用: 总结: 前言: 当今互联网时代,与服务器进行数据交互成为了无法回避的需求。无论是获取Web…

C++,对象赋值与对象拷贝的区别、深浅拷贝

在C中,对象赋值和对象拷贝是两个不同的操作,它们有明显的区别: 1. 对象赋值(Object Assignment): - 对象赋值是指将一个已经存在的对象的值复制给另一个已经存在的对象。这通常通过赋值操作符(…

MySQL索引看这篇就够了

能简单说一下索引的分类吗? 例如从基本使用使用的角度来讲: 主键索引: InnoDB 主键是默认的索引,数据列不允许重复,不允许为 NULL,一个表只能有一个主键。唯一索引: 数据列不允许重复,允许为 NULL 值&…

SpringBoot之视图解析

文章目录 前言一、视图解析1.视图解析原理流程 二、模板引擎——Thymeleaf基本语法表达式字面量文本操作数学运算布尔运算比较运算条件运算特殊操作设置属性值-th:attr迭代条件运算属性优先级 提取公共页面th:insertth:replace区别 总结 前言 SpringBoot默认不支持 JSP&#x…

黎明加水印微信小程序源码 支持流量主接入

黎明加水印微信小程序源码,支持流量主接入。支持从聊天记录选择文件、相机拍摄、直接选择文件 支持白底、黑底的隐形水印,制作后,通过增加蒙版方能看到水印 纯前端,可嵌入任何项目。 部署教程 1、解压后得到项目文件夹 3、把…

Linux内核学习笔记

这个跟考试一毛钱关系没有 纯个人爱好 考试党划走 Linux 8086映像 3.1Intel 8086寄存器 INTEL处理器通常有十六个寄存器 他们之间可以相互做运算 3.2 8086的内存访问 内存的数据交换 内存和寄存器通过16根地址线建立数据的交换,数据线的宽度和寄存器的宽度相等 注…

【MySQL】数据类型(一)

文章目录 前言一. tinyint等整型二. bit位字段类型三. float浮点型四. decimal浮点型结束语 前言 MySQL也有数据类型,其中一些与C/C/Java是一样的,但也有一些数据类型不同,更有新的独有的数据类型 一. tinyint等整型 MySQL将整型按照字节分成…

WPF Frame content binding page(Using MVVM)

前言 这个binding问题困扰了我几天时间了,弄了好的demo试了又试。之前老是认为是ItemsControl中数据模版DataTemplate中绑定Command问题,根据测试没问题。一直在考虑是否是绑定DataContext对象没指明同一个上下文对象问题。最后在MainWindow.xaml文件中F…

buildroot中将编译好的库(Qt,tslib)放入嵌入式linux文件系统

首先交叉编译想使用版本的Qt源码,还有tslib库,编译好之后 再次编译buildroot,再编译好的buildroot中会出现output文件夹,然后output文件夹下有target文件夹,这个target文件夹就是将要打包的文件系统,目标目…