暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的binlog格式详解

不装逼的程序员 2021-04-25
1578

喜欢 · 再关注

再小的努力乘以365都很明显。


简单介绍下MySQL的二进制日志


MySQL的二进制日志是不依赖于存储引擎的,而是依赖于SQL层,记录和SQL语句有关的信息。

主要用来备份数据和时间点恢复、主从同步



binglog的格式有3种


statment(SBR)格式、Row(RBR)格式、MIXED(MBR)综合格式。

可以用sql语句进行查看(show variables like "binlog_format";)


statment格式

定义

.基于sql语句复制,每一条会修改数据的sql都会记录在binlog中。      


优点

.Binlog文件较小,节约IO,提高性能。

.日志是包含用户执行的原始SQL,方便统计和审计。

.Binlog方便阅读,方便故障修复。


缺点

 .存在安全隐患,可能导致主从不同步一致。

 .对一些系统函数不能准复制或是不能复制。


Row格式

定义

.不记录sql语句上下文相关信息,只保留被修改的记录。


优点

.相比statment更加安全的复制格式。

.在某些情况下复制速度更快(SQL复杂,表有主键)。

.系统的特殊函数也可以复制。

.更少锁。


缺点

.Binary log比较大(支持 binlog_row_image)。

.单语句更新表的行数过多,会形成大量binlog。

.无法从binlog看见用户执行的SQL。


MIXED格式

定义

.混合使用row和statment格式。


优点

.当DML(操纵语言语)句更新一个表时,或者当函数中包含UUID()时,自动将binlog的模式由statment模式改为Row模式。



缺点

.对于DDL记录会STATMENT,对于TABLE里的行操作记录为row格式。

.如果使用Innodb表,事务级别使用了 READ COMMIT or READ UNCOMMITTED 日志级别只能使用row格式。

推荐阅读


CentOS7.X系统巡检脚本

Linux中的官方源镜像源汇总

不要忽略她


每日一句


所有的大人都曾经是小孩子,虽然,只有少数人记得。——安东尼·德·圣艾修伯里

          

钟 意 请 长 按

文章转载自不装逼的程序员,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论