innodb redo log

2022-06-16  本文已影响0人  wuqingfeng

# 文章概述

对innodb特有的两种日志redo log和undo log中的redo log基本概念、应用场景进行描述。

# 基本概念

redo log是一种write ahead log,事务提交时,先写重做日志再修改页;当由于发生宕机而导致数据丢失时,就可以通过重做日志来完成数据的恢复。

# 写入过程

默认情况,InnoDB存储引擎的数据目录下会有两个名为ib_logfile1和ib_logfile2的文件。每个InnoDB存储引擎至少有1个重做日志文件组(group),每个文件组下至少有2个重做日志文件。

innodb采用循环写的方式对redo log进行写入,InnoDB存储引擎先写ib_logfile1,当达到文件最后时,会切换至重做日志文件ib_logfile2。

使用图片表示如下:

![yafz6czi5d.png](https://img.haomeiwen.com/i2413244/678f3474e34eafec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

# 相关操作

```mysql

#查看redo log日志状态

SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_enabled';

#启用 redo log

ALTER INSTANCE ENABLE INNODB REDO_LOG;

```

# 数据恢复

LSN(log sequence number)它是一个不断递增的 unsigned long long 类型整数,用于记录日志序号。通过LSN,可以具体的定位到其在redo log文件中的位置。

下图展示了当数据库在 LSN 为10000时发生宕机,恢复操作仅恢复LSN10000-LSN13000范围内日志

![s65sst15dc.png](https://img.haomeiwen.com/i2413244/5aef3fdece29dd0c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

# 参考资料

[mysql8 innodb redo log](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html)

上一篇下一篇

猜你喜欢

热点阅读