阿里面试:MySQL Binlog有哪些格式?底层原理?优缺点?

yumo6661个月前 (05-09)技术文章14

binlog的格式也有三种:STATEMENT、ROW、MIXED ,下面我详解binlog三种模式@mikechen

Statement模式

Statement模式:是基于SQL语句的复制(statement-based replication),只记录修改SQL语句。

Statement格式记录了每个执行的SQL语句,包括:INSERT、UPDATE、DELETE等数据操作语句。

比如:执行一条update T set update_time=now where id=1。

记录的内容如下:

Statement格式不记录事务的开始和结束,所以对于非事务性操作较为适用。

Statement模式优点:

相对于Row格式Statement格式的binlog文件通常较小,因为它只记录了SQL语句,而不记录每个数据行的变化。

Statement模式缺点:

缺点:准确性差,对一些系统函数不能准确复制或不能复制,如now()、uuid()等。

Row格式模式

row记录的内容不再是简单的SQL语句了,还包含操作的具体数据,比如:包括插入、更新和删除操作。

Row格式模式基于行的复制(row-based replication),每一行记录的每个字段变化前后得到值。

如果一个update语句修改一百行数据,那么这种模式下就会记录100行对应的记录日志。

Row格式适用于事务性操作,因为它记录了事务内每一行数据的变化,可以确保事务在复制到从数据库时能够准确地重放。

需要注意的是,Row格式可能会导致较大的binlog文件,因为它记录了每一行数据的变化。

此外,Row格式可能对数据库的性能产生一定的影响,因为它需要记录大量的数据变化信息。

Row格式模式优点:

准确性强,能准确复制数据的变更。

Row格式模式缺点:

日志文件大,较大的网络IP和磁盘IO。

业内目前推荐使用的是row模式,准确性高,虽然说文件大,但是现在有SSD和万兆光纤网络,这些磁盘IO和网络IO都是可以接受的。

总的来说Row格式是MySQL binlog的一种高度精确的记录格式,适用于需要高度数据一致性、涉及复杂数据变化或需要事务性支持的情况。

Mixed混合模式

混合模式复制(mixed-based replication, MBR),是statement和row模式的混合。

混合模式会根据具体的SQL语句和操作来自动选择记录方式,即在Statement格式和Row格式之间切换。

混合模式尝试在Statement格式和Row格式之间找到一个平衡点,以优化性能和可读性。

比如:

对于简单的SQL语句,混合模式使用Statement格式,记录SQL语句的文本。

对于复杂的数据变化,如:包含计算字段、随机生成的值或触发器等情况,混合模式会使用Row格式,记录每一行数据的变化,以确保数据的一致性。

混合模式优点:

优点:准确性强,文件大小适中。

混合模式缺点:

缺点:有可能发生主从不一致问题。

本文作者:mikechen

文章来源:mikechen.cc

相关文章

MySQL 双主复制的优缺点与实现方法

MySQL 双主复制是一种高可用性解决方案,它可以在两台主库之间同步数据,这样就有了两个可以进行写操作的数据库。MySQL 双主复制的优点:可用性提高:双主复制能够保证在一台主机故障时另一台主机可以立...

全程软件测试(六十八):数据库MySQL从零开始入门—读书笔记

第一章 数据库概述1.1、数据库的好处将数据持久化到本地提供结构化查询功能1.2、数据库的常见概念DB:数据库,存储数据的仓库DBMS:数据库管理系统,又称为数据库软件或者数据库产品,用于创建和管理数...

MySQL原理介绍(mysql的运行原理)

一、Mysql中有哪几种锁?1)表级锁开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。2)行级锁开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高...

MySQL、Oracle、SqlServer的区别(oraclemysqlsqlserver三者的区别)

鉴于和数据库打交道日益频繁,遂决定写一篇关于Oracle、SqlServer、MySQL区别的个人观点。MySQL是大学时的主要学习对象,但刚参加工作时转到了SqlServer,现在主要接触的是Ora...

MySQL 5.7 新特性大全和未来展望(mysql五个特性)

本文转自微信公众号: 高可用架构作者:杨尚刚引用美图公司数据库高级 DBA,负责美图后端数据存储平台建设和架构设计。前新浪高级数据库工程师,负责新浪微博核心数据库架构改造优化,以及数据库相关的服务器存...

学Access好还是MySQL好?(数据库access好还是mysql好)

都学呗,成年人要多做加法题,少做选择题。把Access和MySQL这俩软件都下载下来,亲自上手搞一搞,对照着学习资料做一做,哪个对业余选手更实用,基本是一目了然的事情~Access数据库是微软Offi...