MySQL Binlog 日志的三种格式详解
创作时间:
作者:
@小白创作中心
MySQL Binlog 日志的三种格式详解
引用
CSDN
1.
https://blog.csdn.net/qq_29752857/article/details/136728483
MySQL的binlog日志是数据库实现主从复制、数据恢复等功能的重要工具,它提供了三种不同的记录格式,分别为Statement、Row和Mixed格式。
Statement(基于SQL语句的复制,SBR)
Statement格式 的binlog会记录每一项更改数据的SQL语句本身。这意味着每当主库上执行了一个数据修改操作,其对应的SQL语句就会被完整地记录在binlog中。
优点 :
- 记录的内容相对简洁,不包含每一行具体的变化细节,因此可以减少binlog日志的大小,节省磁盘IO,提升性能。
缺点 :
- 由于仅仅记录了SQL语句,为了在备库上精确重现主库的执行效果,还需要记录诸如session变量、用户定义变量等相关上下文信息,以防备库因环境差异而导致执行结果不同。
- 对于涉及特定存储过程、函数、触发器调用的情况,可能无法确保复制的一致性。
Row(基于行的复制,RBR)
Row格式 的binlog不再记录SQL语句,而是直接记录数据行级别的更改详情。
优点 :
- 明确记录了每一行数据的修改细节,能精确反映数据变化,避免了SBR中可能出现的复制一致性问题。
- 即使在主从服务器的表结构稍有差异或者存在触发器、函数等情况,也能确保复制的正确性。
缺点 :
- 由于需要记录每一行的具体修改,可能导致binlog日志量增大,占用更多存储空间,增加网络传输负担。
Mixed(混合模式复制,MBR)
Mixed格式 则是对前两种格式的综合运用,MySQL会智能地根据执行的具体SQL语句选择合适的日志记录方式。
特点 :
- 对于大多数常规SQL语句,MySQL会选择使用Statement格式记录binlog,以减少日志量。
- 当遇到那些在备库上直接执行原始SQL语句无法达到与主库相同效果的情况,如涉及不确定性的函数、存储过程、触发器等,MySQL会自动切换到Row格式,确保复制的准确性。
通过灵活运用Mixed格式,MySQL既能尽量减小binlog日志大小,又能最大程度地保障主从复制的一致性。
热门推荐
电压力锅怎么选?买电压力锅的10大忠告
解决电脑投屏小米电视卡顿的实用技巧
大寒·养生|保证充足睡眠 注重防寒保暖,抓紧冬季进补的最后机会
破产法深度解析:破产受理流程与法律效力
员工离职面谈的技巧及面谈问题清单
C语言注释详解:类型、优缺点及最佳实践
《中国慢性肾脏病患者高血压管理指南》解读
上海殷行街道12345工单量减半:党建引领“多格合一”显成效
物业服务深度解析:小区管理的核心内容与价值
真正的情人之爱,为什么跟年龄无关?
狼人杀那么流行 桌游行业这回是火了吗?
中医体质辨识舌苔
ICMP协议详解:traceroute和ping的工作原理
五款"走路模拟器"游戏推荐:在行走中探索独特体验
事业编转公务员编,需要什么条件?怎么转?
唱见是什么意思
AI创作音乐与歌词:探索影响和挑战
微生物培养基和发酵过程中的灭菌方法及效率提升策略
9个步骤:教你设计出优秀的MMORPG副本关卡
短期贷款利息:可变成本还是固定成本?
未来新方向---水下探测机器人
基于LEACH和HEED的WSN路由协议研究与改进
农药投诉案件处理的法律依据与实务操作
亲子关系的多维度探索:身体、情感与智力的协同发展
空想社会主义的历史意义
这个小东西看着像“垃圾”,实际上却是耳朵的“守护者”?!
给孩子起小名有什么技巧,起小名的好方法?
手术后能否进行医疗事故鉴定?这些情况需谨慎判断
掺水股大揭秘:如何识别与规避投资风险
收紧!已不允许购买!多家银行出手了