c语言编程笔录

首页 >   > 笔记大全

笔记大全

MySQL中binlogredologundolog区别是什么

更新时间:2023-12-04

前言

在MySQL中,binlog(二进制日志)、redolog(重做日志)和undolog(撤销日志)都是用于记录数据库操作的日志文件。它们在数据库的正常运行中扮演着不同的角色,有着各自不同的功能和作用。

binlog(二进制日志)

binlog是MySQL的二进制日志,用于记录数据库的所有更新操作,包括insert、update、delete等。它以二进制的形式记录,可以用于数据复制、数据恢复和追踪数据库的历史变更。binlog可以记录所有的数据修改操作,不仅仅是事务性的修改,也包括非事务性的修改。

在数据恢复方面,binlog除了可以用于从备份中恢复数据外,还可以用于恢复误操作或删除的数据。通过解析binlog,可以将数据库恢复到误操作之前的状态,从而避免数据丢失。

# 查看并启用binlog
SHOW VARIABLES LIKE 'log_bin';
SET GLOBAL log_bin=ON;

redolog(重做日志)

redolog是MySQL的重做日志,用于保证数据库的事务的持久性。它记录了正在进行的事务的所有改变,包括数据页的修改、索引的变化和数据文件的变动。redolog是以循环写入的方式记录,确保在数据库崩溃时可以进行恢复。

redolog的主要作用是在数据库故障或崩溃时,用来保证事务的持久性。当数据库发生崩溃时,通过重做日志可以将未提交的事务进行回滚或者将已提交的事务进行恢复,从而使数据库恢复到崩溃之前的状态。

# 查看并启用redolog
SHOW VARIABLES LIKE 'innodb_log_file_size';
SHOW VARIABLES LIKE 'innodb_log_files_in_group';

undolog(撤销日志)

undolog是MySQL的撤销日志,用于支持事务的回滚操作。它记录了正在进行的事务对数据库所做的所有修改,包括已经提交的修改和未提交的修改。undolog以逻辑日志的形式记录,可以在需要时进行回滚操作,撤销事务的所有修改。

撤销日志的主要作用是支持数据库的事务特性,其中最重要的是支持事务的回滚操作。当事务回滚时,数据库会根据撤销日志中的信息,将事务的修改操作逆向执行,从而将数据库恢复到事务开始之前的状态。

# 查看并启用undolog
SHOW VARIABLES LIKE 'innodb_undo_logs';
SHOW VARIABLES LIKE 'innodb_undo_tablespaces';

总结

在MySQL中,binlog、redolog和undolog都是重要的日志文件,扮演着不同的角色和功能。binlog用于记录数据库的所有更新操作,可以用于数据恢复和追踪历史变更;redolog用于保证事务的持久性,可以在数据库崩溃时进行恢复;undolog用于支持事务的回滚操作,确保事务的一致性。这三种日志文件共同保证了MySQL数据库的安全性和可靠性。