MySQL binlog的三种模式

本文详细介绍了MySQL的二进制日志binlog的三种模式:Statement Level、Row Level和Mixed模式。Statement模式记录SQL语句,减少日志量但可能引发主从不一致;Row模式记录每一行数据变化,保证主从一致但日志量大;Mixed模式结合两者优点,根据SQL选择记录方式。通过设置binlog_format参数可以切换模式。
摘要由CSDN通过智能技术生成

二进制日志binlog作用:
1、以二进制形式记录更改数据库的SQL语句(insert,update,delete,create,drop,alter等)
2、用于Mysql主从复制
3、增量数据库备份及恢复

三种模式
Statement Level模式 5.5默认模式
Row Level模式 5.7默认模式
Mixed模式(混合模式)

1 Statement Level模式
每一条修改数据的sql都会记录到master的bin_log中,slave在复制的时候sql进程会解析成master端执行过的相同的sql在slave库上再次执行。
优点:statement level下的优点首先就是解决了row level下的缺点,不需要记录每一行的变化,较少bin-log日志量,节约IO,提高性能。因为它只需要记录在master上所执行的语句的细节,以及执行语句时候的上下文信息。

缺点:由于它是记录执行语句,所以,为了让这些语句在slave端也能正确执行,那么它还必须记录每条语句在执行的时候的一些相关信息,也就是上下文信息,来保证所有语句在slave端能够得到和在master端相同的执行结果。由于mysql更新较快,使mysql的赋值遇到了不小的挑战,自然赋值的时候就会涉及到越复杂的内容,bug也就容易出现。在statementlevel下,目前就已经发现了不少情况会造成mysql的复制出现问题,主要是修改数据的时候使用了某些特定的函数或者功能的时候会出现。比如:sleep()函数在有些版本中就不能正确赋值,在存储过程中使用了last_insert_id()函数,可能会使slav

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值