redo log 和 bing log有什么区别?

redo log和bin log都是MySQL数据库的日志系统的重要组成部分,它们都对数据库的恢复和复制起着重要作用,但是它们之间有一些主要的区别:

  1. 存储引擎:redo log是InnoDB存储引擎特有的日志,而bin log是MySQL的服务器层实现的,所有的存储引擎都可以使用。

  2. 日志内容:redo log是物理日志,记录的是在某个数据页上做了什么修改,比如“在某个数据页上的某个偏移量上写入了什么数据”。而bin log是逻辑日志,记录的是这个操作是什么,比如“给表T中的ID=2这一行的列N加1”。

  3. 写入时机:redo log在事务执行过程中持续写入,当事务提交时,必须确保redo log已经写入磁盘。而bin log默认情况下是在事务提交完成后写入。

  4. 日志的用途:redo log主要用于保证事务的持久性,即在数据库发生异常重启后,通过redo log恢复数据。而bin log主要用于实现MySQL的主从复制,从库会读取主库的bin log来进行数据同步,同时,bin log也常常用于数据恢复。

  5. 日志的格式:redo log是固定的格式,而bin log有三种格式:statement、row和mixed。

发表评论

后才能评论