问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在数据库中,binlog和redolog有什么区别

发布网友 发布时间:2022-04-21 08:31

我来回答

1个回答

热心网友 时间:2023-11-06 12:29

日志是MySQL的重要组成部分,其中对于开发而言不得不关注三种重要的日志,分别是二进制日志(bin log)、事务日志(redo log、undo log)。接下来详细介绍这三种日志。

binlog叫做二进制日志,主要是用于记录MySQL表的逻辑变化过程。在实际应用过程中,通常被用于主从复制和数据恢复。

事务执行过程中,会先把日志写到binlog cache,事务提交的时候,再把binlog cache写到binlog文件中。

事务提交后的写入只是写入到文件系统的page cache,并没有把数据持久化到磁盘。持久化磁盘由操作系统决定调用fsync。

MySQL提供了配置决定fsync的时机,当sync_binlog=0的时候,每次提交事务只写入page cache,不执行fsync。当sync_binlog=1的时候,表示每次提交事务都会执行fsync。当sync_binlog = N的时候,每次提交事务都写入page cache,累计多个事务才进行fsync。

显然,当sync_binlog = 1的时候,binlog日志不会丢失。当sync_binlog = N的时候,如果发生异常重启,会丢失N个事务的binlog日志。

STATEMENT
记录数据操作的原始SQL,可能引发主库备库因索引选择不一致,导致数据执行结果不一致。

ROW
ROW基于行复制,只记录哪条数据被修改.缺点:占空间。比如DELETE 语句,对于STATEMENT只占用1条SQL。而ROW格式则需要把所有记录的数据记录下来。

MIXED
对于可能引发主备不一致的命令使用ROW格式,否则使用STATEMTNT

对于每一次更新操作,MySQL都需要写入磁盘,然后需要找到对应那条记录并更新。IO成本较高和查找成本都很高。为了提高性能,MySQL会将更新操作写入redo log,并更新内存。INNODB引擎会在适当的时候将操作记录更新到磁盘。

[图片上传失败...(image-c6a1f2-1627716309698)]

undo log主要是记录了数据的逻辑变化,比如对应一条insear语句,undo log会记录一条delete语方便回退到更新前的值。

时刻A发生故障的话,由于binlog未写入,redo log回滚数据,两个日志数据是一致的。

时刻B发生故障,则需要判断binlog是否完整来决定如何恢复。

redo log和bin log的区别?

为什么redo log crash-safe,而bin log不可以?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 谁知道王者荣耀有哪些英雄? mysqlbinlog 怎么将数据库恢复到指定的时间 王者荣耀里的信誉积分怎么上? 王者信誉积分低于80怎么增加 “王”是什么字? 王者荣耀怎样加信誉积分 mysql执行完的更新语句成功还能恢复原来的数据吗 如何恢复信誉积分 crash-safe 是什么 王者荣耀如何快速恢复90信誉积分? mysql数据库怎么开启binlog 王者荣耀怎么提高信誉积分? 如何动态监控mysql binlog 如何提高信誉积分 mysql 怎么启用binlog 现在王者荣耀七十分怎么增加信誉积分? 《王者荣耀》信誉等级怎么提升? mysql恢复数据mysqlbinlog 信誉积分怎么快速刷? 如何管理 MySQL 的 binlog 如何有效地提高 MySQL 的备份和恢复速度 mysql5.6和5.7的区别是什么? 查看mysql是否为双机 mysql5.6和5.7的区别 MySQL各版本有什么不同吗 王者荣耀如何加信誉积分 王者荣耀信誉积分怎么刷 为什么数据库读写分离可以提高性能 “王”是什么字? 如何记录MySQL执行过的SQL语句 如何将王者的信誉积分快速地从70分提到100分? 王者荣耀信誉积分怎么快速刷 王者荣耀信誉积分怎么恢复的最快 “王”是什么字? 如何将U盘文件隐藏部份显示出来 U盘里面被隐藏的文件夹怎么显示出来? 助乐扎四什么意思? U盘隐藏了 怎么显示出来 贷款审批是什么意思? 苏州银行贷款一般几天能批下来?