MySql日志相关(binlog和redolog)

写在前面:(实在不知道为啥要弄这,我觉得自己没有实操过,即使有理解,应该也只是为了面试)

binlog

binlog是属于MySql Sever层面的,又称为归档日志,属于逻辑日志,是以二进制的形式记录的,用于记录数据库执行的写入性操作(不包括查询),依靠binlog没有crash_safe的能力,所以能这里就需要redolog了。

binlog的应用场景:

1.主从复制。
2.数据库恢复。

binlog日志格式

1.statement格式:基于sql语句的复制,每一条修改数据的sql会记录在binlog中。优点:不需要记录每一行的变化,节约了空间。缺点:有可能导致主从复制时,数据库不一致的问题,比如sql语句中有sysdata()函数。
2.row格式:不记录每条sql语句的上下文,仅记录哪条语句被修改了,优点:不会出现某些特定情况下的存储过程,调用和触发无法被正确处理的情况。缺点:会产生大量的日志。
3.mix模式:就是statement和row格式都有的情况。

redolog

redolog是innodb存储引擎层的日志,用于记录事务操作的变化,不管事务有没有提交,这些变化都会被记录下来,一个事务生成的redo日志是按顺序写入磁盘的,数据库掉电的时候,redolog就能恢复。
redolog包含两部分的内容:redolog buffer和redo log file。mysql每执行一条dml语句,都会先将记录写道redolog buffer中,然后写到redolog file中。先写日志再写磁盘。

redo log记录形式

redolog 日志大小是固定的,如果写满了,就从头开始,重新写。

redo log和bin log的区别

1.redo log是innodb引擎层实现的,bin log是mysql sever层实现的。
2.redo log记录的是物理日志,bin log记录的是逻辑日志。
3.redo log是循环写,写满了,就从头开始写,bin log是一直写,不用管大小。
4.redo log适用于崩溃恢复,bin log适用于主从复制和数据库恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值