后端一个疑问

我感觉binlog也可以用来故障恢复啊,那为什么还需要redolog勒有大佬能给我解答一下吗#牛客AI配图神器#
全部评论
也可以做,但是binlog保存的是全量的数据。他不知道哪些页属于脏页(写入物理页但没写回磁盘),使用binlog恢复我的理解是需要使用所有binlog数据恢复。而redolog记录了哪些页为脏页。重做的时候只需要重做这些数据就行。效率会高很多
5 回复 分享
发布于 08-26 18:07 广东
binlog是记录的是sql级别的日志,redolog是物理级别的日志,重做肯定是redolog快
4 回复 分享
发布于 08-26 16:06 贵州
binlog是一条一条的增删改的记录,redolog记录的是物理页面的修改。如果使用binlog的话,需要一条一条执行sql,redolog的话基于物理页要快一些。你也可以拓展一下,就好像redis中两个持久化机制,一个rdb一个aof,rdb一般记录的是全量的物理数据,aof记录的一条一条的增删改,redis里面使用rdb恢复或者是备份也是很快的。
点赞 回复 分享
发布于 昨天 21:08 英国
一般都是redolog搭配binlog进行恢复的 属于二阶段提交 分成Prepare 阶段​​,首先数据修改写入缓冲区,生成 redo log 并刷盘,状态标记为 ​​prepare​​,此时 bin log ​​还没写入​​,事务未提交。Commit 阶段​​:将事务的 SQL 操作写入 bin log 并刷盘。将 redo log 状态更新为 ​​commit​​,标志事务提交完成 所以在恢复的时候 ,会按顺序扫描 redo log 并检查 binlog如果检查redo log 状态为 commit​​ 就直接不用管binlog了因为事务肯定是提交了直接重做数据业 如果 redo log 状态为 prepare​​,那么就要再去检查binlog 如果​​binlog 完整,那么就提交事务,重做数据 如果binlog不完整 就回滚事务
1 回复 分享
发布于 昨天 10:08 四川
binlog不能给脏页刷盘
点赞 回复 分享
发布于 昨天 20:17 辽宁
binlog并不是一个原子的操作,一条binlog可能对应多条redo log,如果只使用binlog,那么需要先落盘binlog,再落盘数据,如果此时数据只落盘了一部分就挂了,恢复时无法通过binlog进行重做。
点赞 回复 分享
发布于 昨天 10:30 香港
但是主从不也是用的binlog吗
点赞 回复 分享
发布于 昨天 09:32 重庆
用binlog也行,满足两个前提,1,MySQL一开始使用的时候就开启binlog,且中途无异常,2,先把数据库中的数据清空
点赞 回复 分享
发布于 08-26 19:42 浙江
个人理解,binlog慢
点赞 回复 分享
发布于 08-26 11:22 江苏
redo log:解决事务持久性 & crash recovery(快,物理级别)。 binlog:用于主从复制、备份恢复(逻辑级别,跨存储引擎)。 再了解一下两阶段提交你就懂了
点赞 回复 分享
发布于 08-25 22:02 重庆

相关推荐

08-25 14:48
已编辑
门头沟学院 人工智能
搜索部 首先说下timeline8.18,投递8.19,约一面8.21,晚上一面call约二面8.22,上午二面下午oc周末等待(8.23,8.24)8.25,offer一年前,我还是懵懵懂懂,高考完的暑假,只会提前学学高数,未来的画像是什么?我或许无法预测。开学后,自学Python,接单,无数个客户的ddl,偷偷摸摸一个人找自习的地方,这一步步竟然为后来的我,搭建工程能力的基础。大一上,我也要感谢我的第一位老板,让我接触到了实习,师兄带着我一步步入门,看他们写的飞书文档。大一下,导师带我参与企业项目,这让我渐渐发现,应该去实践,增长见识,而非局限当下,盯着自己的小新pro。不久后,第一波投递开始,结果当然是约面极少。盯着简历上的文字和ssob,我开始思考,确实很多可以去提升。带着些许不甘心,继续沉淀,慢慢的约面也越来越多,有的时候两天7场,准备完就接着下一个日程。这一次,也许是刚好到位吧,比较match,面试答的流利,关关难关关过,成为度孝子展望未来,依然是重重挑战,果然只有收到offer的那一刻是开心的。愿在百度星海拆解的每一段代码,都能成为丈量宇宙的诗行;此志终赴星河,而今迈步重铸天阶。屏幕前的你们,在无数个向星海奔赴的日夜,一定一定,会在未来化作群星回响的征程——请永远相信此刻埋首耕耘的自己!!!
百度求职进展汇总
点赞 评论 收藏
分享
评论
2
15
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务