暂无图片
MySQL的BinLog与Redo Log有什么区别?
我来答
分享
2023-04-30
MySQL的BinLog与Redo Log有什么区别?

MySQL的BinLog与Redo Log有什么区别?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
语菲

BinLog和Redo Log在一定程度上都能恢复数据,但是二者有着本质的区别,具体内容如下:

1)BinLog是MySQL本身就拥有的,不管使用何种存储引擎,BinLog都存在;而Redo Log是InnoDB存储引擎特有的,只有InnoDB存储引擎才会输出Redo Log。

2)BinLog是一种逻辑日志,记录的是对数据库的所有修改操作;而Redo Log是一种物理日志,记录的是每个数据页的修改。

3)Redo Log具有幂特性,多次操作的前后状态是一致的,而BinLog不具有幂等性,记录的是所有影响数据库的操作。例如插入一条数据后再将其删除,则Redo Log前后的状态未发生变化,而BinLog就会记录插入操作和删除操作。

4)BinLog开启事务时,会将每次提交的事务一次性写入内存缓冲区,如果未开启事务,则每次成功执行插入、更新和删除语句时,就会将对应的事务信息写入内存缓冲区;而Redo Log是在数据准备修改之前将数据写入缓冲区的Redo Log中,然后在缓冲区中修改数据,而且在提交事务时,先将Redo Log写入缓冲区,写入完成后再提交事务。

5)BinLog只会在事务提交时,一次性写入BinLog,其日志的记录方式与事务的提交顺序有关,并且一个事务的BinLog中间不会插入其他事务的BinLog;而Redo Log记录的是物理页的修改,最后一个提交的事务记录会覆盖之前所有未提交的事务记录,并且一个事务的Redo Log中间会插入其他事务的Redo Log。

6)BinLog是追加写入,写完一个日志文件再写下一个日志文件,不会覆盖使用;而Redo Log是循环写入,日志空间的大小是固定的会覆盖使用。

7)BinLog一般用于主从复制和数据恢复,并且不具备崩溃自动恢复的能力;而Redo Log是在服务器发生故障后重启MySQL,用于恢复事务已提交但未写入数据表的数据。

暂无图片 评论
暂无图片 有用 5
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
相关推荐
mysql in 查询
回答 3
ICP是当你有除了索引以外的筛选条件的时候,innodb层对非索引条件进行筛选。
mysql用truncate会不会影像索引?
回答 1
已采纳
不会
mysql如何执行@作为结束符的sql文件
回答 1
在脚本中加一行DELIMITER@ 结束符就是@而不是;了如果要改回分号,可以用 DELIMITER;
mysql的列宽怎么调整?
回答 1
修改表中字符串长度?
MySQL在查询处理的哪个阶段创建查询的执行计划??
回答 4
已采纳
1.语法分析阶段:将SQL查询语句经词法和语法分析后变换为一颗查询树stselectlex传给优化器,并对SQL表达的语义进行检查。2.生成逻辑查询执行计划阶段:优化器在查询树中遍历每个关系,确定关系
mysql 怎么跟踪执行的sql语句?
回答 3
binlog可以看的。
mysql5.7 和mysql8 的log_update的参数是不是去掉了?
回答 2
你可以执行mysqldverbosehelp查找下有没有你要的参数信息,也可以到官方文档里面找https://dev.mysql.com/doc/refman/8.0/en/serversystemv
请问各位大佬:mysql数据库redo log和binlog的2pc的疑问
回答 2
已采纳
在崩溃恢复时,会顺序扫描redolog,已经提交的事务不会回滚;若处于prepare状态,拿xid去binlog中找对应的事务看完不完整,完整则提交,不完整回滚。双一情况下,顶多丢失一个事务,即bin
MySQL的performance_schema主要用于监控数据库运行过程中的资源消耗、资源等待等,以下哪些是该SCHEMA能监控到的指标? A 事务情况 B 相应语句的执行阶段 C 耗时语句 D 等待事件
回答 1
已采纳
ABCDperformanceschema库下的表可以按照监视不同的纬度就行分组–语句事件记录表,这些表记录了语句事件信息,当前语句事件表eventsstatementscurrent、历史语句事件表
telnet mysql 端口为啥显示mysql_native_password?
回答 2
已采纳
原因当建立一个TCP连接的时候,MYSQLSERVER会主动发一个HandshakeV10过来,里面包含数据库版本,加密策略,capabilityflags,salt等信息所以你telnetmysql