Mysql中Binlog3种格式的介绍与分析

yizhihongxing

下面是关于Mysql中Binlog3种格式的介绍与分析的完整攻略。

1. 什么是Binlog

Binlog是MySQL中的二进制日志(Binary Log)。

其记录了所有对数据库的更新操作,如增、删、改,而这些操作是以二进制的方式保存的,因此称之为二进制日志。

在数据恢复和数据复制中,二进制日志发挥着至关重要的作用。

Binlog根据具体的实现方式可分为三种格式,分别是Statement Based Replication (SBR), Row Based Replication (RBR) 和Mixed Based Replication (MBR)。

2. Binlog的三种格式

2.1 Statement-based Replication (SBR)

SBR是Binlog的一种实现方式,它通过记录每一个执行SQL语句的内容来实现。

在SBR模式下,当一个数据库执行了一条SQL语句的时候,就会将这个SQL语句记录到二进制日志中。

因为一个SQL语句可能会对多个表进行操作,所以在SBR模式下需要记录语句执行时所在的事务(Transaction)以及语句执行的结果。

下面是一个SBR模式下的示例:

BEGIN;
UPDATE t1 SET  c1 = 'new value' WHERE id = 1;
COMMIT;

2.2 Row-based Replication (RBR)

RBR模式通过记录对某个表的具体行进行的修改操作来实现。

当某个表的某一行数据被修改时,就会将修改这个行的操作记录到二进制日志中。

相同的行可能会多次进行修改操作,所以在RBR模式下,需要记录修改前和修改后的行数据信息。

下面是一个RBR模式下的示例:

BEGIN;
UPDATE t1 SET  c1 = 'new value' WHERE id = 1;
COMMIT;

2.3 Mixed-based Replication (MBR)

MBR是SBR和RBR的混合模式。

在MBR模式下,对于一些简单的操作,例如插入和删除操作,就会采用SBR模式进行记录。

对于一些更复杂的操作,例如修改操作,就会采用RBR模式进行记录。

下面是一个MBR模式下的示例:

BEGIN;
DELETE FROM t1 WHERE id = 1;
UPDATE t1 SET  c1 = 'new value' WHERE id = 2;
COMMIT;

3. 总结

Mysql中的Binlog格式有三种:SBR、RBR和MBR。

SBR模式将记录所有执行的SQL语句,但对于一些涉及到多个表和多个行的操作可能会记录不全。

RBR模式记录了对具体行的修改,但相同的行可能会被多次修改,导致记录增多。

MBR模式则是相对平衡的一种模式,相对于SBR模式可以提供更全面的数据记录,相对于RBR模式又能更有效地控制日志文件大小。

需要根据具体的应用场景选择适当的Binlog格式。

以上是本文对于Mysql中Binlog三种格式的介绍与分析,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql中Binlog3种格式的介绍与分析 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 内容标记的存储的好处

    作为网站的作者,使用内容标记语言(如Markdown)来编写网站文章和页面的内容是一个非常好的选择。由于内容标记可以被存储为纯文本,因此具有以下好处: 易于维护和编辑:将内容存储为纯文本文档可以使作者轻松地编辑和维护内容,而无需使用复杂的图形用户界面。具有标记语言的文本中的格式化元素(如标题、引用、列表等)是非常直观的,并且使用常规文本编辑器就可以完成。 可…

    database 2023年3月27日
    00
  • MySQL Workbench操作方法是什么

    这篇“MySQL Workbench操作方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL Workbench操作方法是什么”文章吧。 Mysql Work Space 右键新建的数据库BMI,设置为此次连接的默认数据库,接下来…

    MySQL 2023年4月11日
    00
  • MySQL数据类型和常用字段属性总结

    MySQL中的数据类型大的方面来分,可以分为:日期和时间、数值,以及字符串。下面就分开来进行总结。 日期和时间数据类型 MySQL数据类型含义 date3字节,日期,格式:2014-09-18 time3字节,时间,格式:08:42:30 datetime8字节,日期时间,格式:2014-09-18 08:42:30 timestamp4字节,自动存储记录修…

    MySQL 2023年4月13日
    00
  • Oracle和MySQL的区别

    Oracle和MySQL是两个常见的关系型数据库管理系统,它们在功能、性能、使用场景等方面有很明显的区别。下面我们深入分析一下这两个数据库管理系统的区别。 功能和特性的区别 Oracle和MySQL在功能和特性方面存在很大的差异,具体如下: 数据类型的区别 Oracle比MySQL支持更丰富、更复杂的数据类型,如CLOB、NCLOB、BLOB、XMLType…

    database 2023年3月27日
    00
  • Linux中的冷热页机制简述

    Linux中的冷热页机制简述 在操作系统中,内存管理是很重要的一个部分。针对常被使用的页面,要尽可能地留在内存中,以便更快地访问。而一些不常使用到的页面,则可以移除出内存,节省内存空间。这时就需要采用一种叫做“冷热页机制”的技术。 什么是冷热页机制 冷热页机制指的是根据页面的热度(使用频率)来判断页面是否应该留在内存中。热页面(Hot Page)指的是经常使…

    database 2023年5月22日
    00
  • 如何使用Python从数据库中导出数据并将其保存到CSV文件中?

    以下是如何使用Python从数据库中导出数据并将其保存到CSV文件中的完整使用攻略。 使用Python从数据库中导出数据并将其保存到CSV文件中的前提条件 使用Python从数据库中导出数据并将保存到CSV文件中前,需要确已经安装并启动了支持导出数据的数据库,例如或PostgreSQL,并且需要安装Python的相数据库驱动程序,例如mysql-connec…

    python 2023年5月12日
    00
  • SQL 按照子字符串排序

    SQL中按照子字符串排序可以通过使用SUBSTR函数和ORDER BY子句来实现。具体步骤如下: 使用SUBSTR函数截取子字符串; 在ORDER BY子句中使用截取的子字符串进行排序; 下面我们来看两个实例。 实例1:按照单词长度进行排序 假设我们有一个表格(表名为mytable),其中有一个名为words的字段,我们想按照单词长度(即字符数量)对这些单词…

    database 2023年3月27日
    00
  • PL/SQL登录Oracle数据库报错ORA-12154:TNS:无法解析指定的连接标识符已解决(本地未安装Oracle需要连接服务器上的)

    问题描述: 当我们以PL/SQL登录远程Oracle数据库时,有时会遇到ORA-12154错误:TNS:无法解析指定的连接标识符。 可能原因: 1.连接字符串中出现了错误或者数据源名称错误 2.没有在本地TNSnames.ora文件中添加数据源的信息 3.TNSnames.ora文件中添加的数据源名称错误 4.没有安装Oracle客户端程序 解决步骤: 1.…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部