网站首页 > 文章精选 正文
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
猜你喜欢
- 2025-05-09 面试必问的 MySQL 四种隔离级别,看完吊打面试官
- 2025-05-09 面试官:mysql自增长id用完了怎么办?这是我见过最中肯的答案了
- 2025-05-09 1.5万字+30张图盘点程序员面试必会MySQL索引常见的11个知识点
- 2025-05-09 面试中的老大难-mysql事务和锁,一次性讲清楚
- 2025-05-09 手把手指导Linux系统centos7安装数据库MySQL5.7
- 2025-05-09 面试官问我MySQL索引为啥用B+树?我让他去问作者
- 2025-05-09 MySQL面试题:自增ID达到上限了会出现什么问题?
- 2025-05-09 MySQL索引失效问题,看完手撕面试官
- 2025-05-09 阿里面试:MySQL死锁的原因?解决方案有哪些?
- 2025-05-09 面试库:MySQL锁系列之间隙锁(mysql间隙锁原理)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)