电商网站有什么,幻想次元wordpress,建立视频网站,北京网站建设天下公司redolog、undolog和binlog日志文件详解 前言redolog设计目标记录内容写入策略 undolog设计目标记录内容写入策略 binlog设计目标记录内容写入策略 小结 前言
当谈论MySQL数据库的日志文件时#xff0c;通常会涉及到三种主要类型#xff1a;redo log#xff08;重做日志通常会涉及到三种主要类型redo log重做日志、undo log回滚日志和binlog二进制日志。每种日志文件都有自己的设计目标、记录内容和写入策略下面我会逐一介绍它们。
redolog
设计目标
保证事务的持久性Redo Log的主要设计目标是在数据库崩溃或发生故障时确保已提交的事务对数据库的修改能够被恢复以保证数据的一致性和持久性。提高性能通过将数据修改操作写入重做日志MySQL可以延迟将这些操作同步到磁盘从而提高数据库的写入性能。
记录内容
Redo Log中记录了每个事务所做的修改操作如插入、更新、删除等。这些记录通常以物理日志记录的形式存在即记录了修改了哪些数据页的哪些字节。除了修改操作的内容外Redo Log还包含了事务的一些元数据信息如事务ID、事务状态等。
写入策略
Redo Log的写入是顺序追加append的方式进行的即将事务的修改操作追加到日志文件的末尾。Redo Log采用了WALWrite-Ahead Logging的机制即在事务进行数据修改操作之前先将对应的修改记录写入Redo Log然后再将修改应用到内存中的数据页这样可以确保事务的修改记录先于实际数据的修改被持久化到磁盘。
undolog
设计目标
提供事务的回滚支持Undo Log的主要设计目标是提供事务回滚的支持即在事务发生错误或被回滚时能够恢复到事务开始之前的状态。支持MVCCMulti-Version Concurrency ControlUndo Log也是MVCC机制的重要组成部分用于存储事务修改前的数据版本以支持并发读取和写入。
记录内容
Undo Log记录了事务对数据的修改操作的逆操作即对数据进行了什么修改Undo Log中就记录了如何将数据恢复到修改前的状态。Undo Log通常以逻辑日志记录的形式存在记录了事务对数据的修改操作如将某行数据修改为何种值、删除了哪些数据等。
写入策略
Undo Log的写入通常也是顺序追加的方式进行的将事务的逆操作记录追加到日志文件的末尾。Undo Log的写入顺序通常与事务的提交顺序相反即先写入的事务的Undo Log记录会位于后面这样可以确保在回滚操作时按照相反的顺序进行恢复。
binlog
设计目标
数据复制与恢复Binlog的主要设计目标是支持数据复制和恢复操作以实现数据的备份、恢复和主从复制等功能。记录数据库变更除了用于数据复制外Binlog还可以用于记录数据库的变更历史方便进行数据审计和恢复。
记录内容
Binlog记录了数据库中的修改操作包括对表的增删改操作以及对表结构的变更操作等。Binlog以一种较为简洁的格式记录了每个修改操作的元信息如操作类型、受影响的表名、修改前后的数据等。
写入策略
Binlog的写入通常是异步的即MySQL会将修改操作先写入到Binlog缓冲区中然后由后台线程将缓冲区中的内容定期写入到Binlog文件中。对于复制从库Binlog的写入通常会在事务提交后立即进行以确保从库能够尽快获取到主库的数据变更。
小结
redo log用来保证事务的原子性和持久性undo log用来事务回滚以及mvcc的功能保证了事务的一致性binlog用来实现数据的备份、恢复和主从复制等功能。undo log 是逻辑日志记录的是数据的逻辑修改信息。redo log 是物理日志记录的是数据的物理修改信息。undo log 仅用于回滚事务不会被用于数据库恢复。redo log 既可以用于回滚事务也可以用于数据库恢复。