首页 > 数据库技术 > 详细

MySQL:binlog 和 redol og

时间:2019-02-18 22:51:13      阅读:543      评论:0      收藏:0      [点我收藏+]

【参考文章】:MySQL中Redo与Binlog顺序一致性问题?

【参考文章】:极客时间

1. 数据更新时的日志处理流程

  

 

2. binlog

  二进制日志是server层的,主要用来做主从复制和即时点恢复时使用的。

2.1 日志记录的三种模式

  基于SQL语句的复制(statement-based replication,SBR):记录执行的SQL语句

  基于行的复制(row-based replication,RBR):记录更新的每一条记录的变化情况

  混合模式复制(mixed-based replication,MBR):根据具体的更新语句选择上述两种中的一种方式记录

2.2 设置 binlog 日志模式 

  静态设置,配置文件形式 

vi my.cnf

    binlog_format="STATEMENT"

  动态设置,命令形式

 mysql> SET GLOBAL binlog_format = ‘STATEMENT‘;

3. redo log

  事务日志(redo log)是InnoDB存储引擎层的,用来保证事务安全的。

3.1 redo log 文件

  redo log 是固定大小的,从头开始写,写到末尾又回到开头循环写;

  redo log 有两个指针:

  一个为 write pos:表示当前记录的位置,一边写一边后移;

  一个为 checkpoint:表示当前要擦除的位置,一边擦除一边后移,擦除之前要将记录写到磁盘文件中;

4. 区别

  binlog 属于MySQL的 sever 层,所有引擎都可以使用;redo log 属于 InnoDB引擎特有。

  binlog 是逻辑日志,记录的是SQL语句的原始逻辑;redo log 是物理日志,记录的是在某个数据页上做了什么修改。

  binlog 是追加写,一个文件写满之后就写到下一个文件,不会覆盖之前的文件;redo log 是循环写,写到文件末尾之后又从文件起始位置开始写,会覆盖之前的日志。

MySQL:binlog 和 redol og

原文:https://www.cnblogs.com/virgosnail/p/10398325.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!