Java面试八股之MySQL中binlog的工作模式有哪些

  1. MySQL中binlog的工作模式有哪些

MySQL的二进制日志(binlog)用于记录所有更改数据的事务,这对于数据恢复、主从复制和点在时间恢复等功能至关重要。MySQL提供了三种不同的binlog工作模式,它们分别是:

Statement-based replication (SBR)(基于语句的复制):

在这种模式下,MySQL记录下执行的SQL语句,而不是数据变化的具体细节。

这意味着binlog将包含如INSERT, UPDATE, DELETE等语句。

Statement模式的优点是它产生的binlog文件较小,因为只记录了SQL语句而非大量数据。

缺点是在某些情况下,由于语句的上下文差异或使用了非确定性函数(如RAND()或NOW()),可能在从服务器上产生不同的结果,导致数据不一致。

Row-based replication (RBR)(基于行的复制):

Row模式下,MySQL记录每个事务中改变的每一行数据的前后状态。

这种模式不关心具体的SQL语句,而是专注于数据的变化。

Row模式的优点是它可以准确地复制数据变化,避免了由语句差异引起的不一致性问题。

缺点是它会产生较大的binlog文件,因为需要记录每一行数据的变化。

Mixed-based replication (MBR)(混合模式复制):

Mixed模式是一种结合了Statement和Row模式优点的模式。

MySQL通常使用Statement模式来记录事务,但对于那些可能导致数据不一致的语句(如使用了非确定性函数的语句),它会自动切换到Row模式。

这种模式试图平衡binlog文件大小和数据一致性之间的关系。

在MySQL中,可以通过设置binlog_format系统变量来指定使用哪种复制模式。默认情况下,MySQL通常配置为使用Mixed模式。

如果大家需要视频版本的讲解,欢迎关注我的B站:

相关推荐
Coding茶水间25 分钟前
基于深度学习的狗品种检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
开发语言·人工智能·深度学习·yolo·目标检测·机器学习
£漫步 云端彡33 分钟前
Golang学习历程【第十篇 方法(method)与接收者】
开发语言·学习·golang
小王不爱笑13235 分钟前
SpringBoot 整合 Ollama + 本地 DeepSeek 模型
java·spring boot·后端
毕设源码-钟学长36 分钟前
【开题答辩全过程】以 高校宿舍分配系统设计与实现为例,包含答辩的问题和答案
java
何中应36 分钟前
IDEA 中让 Git 忽略 .idea 目录
java·git·intellij-idea
無森~37 分钟前
HBase优化面试题
java·面试·hbase
u01092727137 分钟前
C++与人工智能框架
开发语言·c++·算法
挖矿大亨1 小时前
C++中空指针访问成员函数
开发语言·c++
PPPPickup1 小时前
easymall---管理后端商品属性管理
java
人道领域1 小时前
SSM框架从入门到入土(SpringFrameWork)
java·spring boot·tomcat