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适用于主从复制和数据库恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值