MySQL日志「连环问」

78 阅读2分钟

1、MySQL会产生几种日志?

MySQL产生binlog、redolog和undolog日志。这三种日志是MySQL中的主要日志类型,它们的作用和功能如下:

  1. 二进制日志(Binary Log):记录所有对数据库进行更改的语句,包括数据的增删改操作,以及对表结构的修改操作。这些日志可以用于数据备份、恢复、复制和数据分析。
  2. 重做日志(Redo Log):记录事务提交前对数据的更改操作,以便在MySQL崩溃时进行恢复。这些日志用于在数据库崩溃时进行恢复,以避免数据丢失或损坏。
  3. 撤销日志(Undo Log):记录事务的回滚操作,以便在事务回滚时进行恢复。这些日志用于撤销事务的更改,以及在数据库崩溃时进行恢复。

其中 binlog和 redolog都是通过循环写入的方式来实现数据的持久化,而撤销日志则是通过回滚操作来撤销事务的更改。

2、bin log和redo log有什么区别?

  1. redo log是InnoDB引擎特有的;binlog是MySQL的Server层实现的,所有引擎都可以使用。
  2. redo log是物理日志,记录的是“在某个数据页上做了什么修改”;binlog是逻辑日志,记录的是这个语句的原始逻辑,比如“给ID=2这一行的c字段加1”。
  3. redo log是循环写的,空间固定会用完;binlog是可以追加写入的。“追加写”是指binlog文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。

3、MySQL日志是否实时写入磁盘?

4、MySQL的binlog有有几种录入格式?分别有什么区别?

5、MySQL集群同步时为什么使用binlog?优缺点是什么?

6、MySQL两阶段提交的过程

待续