1、MySQL会产生几种日志?
MySQL产生binlog、redolog和undolog日志。这三种日志是MySQL中的主要日志类型,它们的作用和功能如下:
- 二进制日志(Binary Log):记录所有对数据库进行更改的语句,包括数据的增删改操作,以及对表结构的修改操作。这些日志可以用于数据备份、恢复、复制和数据分析。
- 重做日志(Redo Log):记录事务提交前对数据的更改操作,以便在MySQL崩溃时进行恢复。这些日志用于在数据库崩溃时进行恢复,以避免数据丢失或损坏。
- 撤销日志(Undo Log):记录事务的回滚操作,以便在事务回滚时进行恢复。这些日志用于撤销事务的更改,以及在数据库崩溃时进行恢复。
其中 binlog和 redolog都是通过循环写入的方式来实现数据的持久化,而撤销日志则是通过回滚操作来撤销事务的更改。
2、bin log和redo log有什么区别?
- redo log是InnoDB引擎特有的;binlog是MySQL的Server层实现的,所有引擎都可以使用。
- redo log是物理日志,记录的是“在某个数据页上做了什么修改”;binlog是逻辑日志,记录的是这个语句的原始逻辑,比如“给ID=2这一行的c字段加1”。
- redo log是循环写的,空间固定会用完;binlog是可以追加写入的。“追加写”是指binlog文件写到一定大小后会切换到下一个,并不会覆盖以前的日志。
3、MySQL日志是否实时写入磁盘?
4、MySQL的binlog有有几种录入格式?分别有什么区别?
5、MySQL集群同步时为什么使用binlog?优缺点是什么?
6、MySQL两阶段提交的过程
待续