15.6.5 重做日志

配置重做日志容量(MySQL 8.0.30 或更高版本)

从 MySQL 8.0.30 开始,

innodb_redo_log_capacity系统变量控制重做日志文件占用的磁盘空间量。您可以在启动时或运行时使用

SET

GLOBAL语句在选项文件中设置此变量;例如,以下语句将重做日志容量设置为 8GB:

SET GLOBAL innodb_redo_log_capacity = 8589934592;

在运行时设置时,配置更改会立即发生,但新限制可能需要一些时间才能完全实施。如果重做日志文件占用的空间少于指定的值,脏页从缓冲池刷新到表空间数据文件的积极性就会降低,最终会增加重做日志文件占用的磁盘空间。如果重做日志文件占用的空间超过指定值,则更积极地刷新脏页,最终减少重做日志文件占用的磁盘空间。

该innodb_redo_log_capacity

变量取代了

不推荐使用的innodb_log_files_in_group和

innodb_log_file_size变量。innodb_redo_log_capacity定义设置时

,将忽略innodb_log_files_in_group和

设置;innodb_log_file_size否则,这些设置用于计算

innodb_redo_log_capacity

设置 ( innodb_log_files_in_group*

innodb_log_file_size=

innodb_redo_log_capacity)。如果没有设置这些变量,重做日志容量将设置为

innodb_redo_log_capacity默认值,即 104857600 字节 (100MB)。最大重做日志容量为 128GB。

重做日志文件驻留在#innodb_redo

数据目录中的目录中,除非

innodb_log_group_home_dir

变量指定了不同的目录。如果

innodb_log_group_home_dir已定义,则重做日志文件驻留在该

#innodb_redo目录中的目录中。有两种类型的重做日志文件,普通的和备用的。普通重做日志文件是那些正在使用的。备用重做日志文件是那些等待使用的文件。InnoDB

尝试维护总共 32 个重做日志文件,每个文件的大小等于 1/32 *

innodb_redo_log_capacity;innodb_redo_log_capacity但是,修改设置

后文件大小可能会暂时不同

重做日志文件使用

命名约定,其中是重做日志文件编号。备用重做日志文件由

后缀表示。以下示例显示了一个

目录中的重做日志文件,其中有 21 个活动重做日志文件和 11 个备用重做日志文件,并按顺序编号。

#ib_redoNN_tmp#innodb_redo

'#ib_redo582' '#ib_redo590' '#ib_redo598' '#ib_redo606_tmp'

'#ib_redo583' '#ib_redo591' '#ib_redo599' '#ib_redo607_tmp'

'#ib_redo584' '#ib_redo592' '#ib_redo600' '#ib_redo608_tmp'

'#ib_redo585' '#ib_redo593' '#ib_redo601' '#ib_redo609_tmp'

'#ib_redo586' '#ib_redo594' '#ib_redo602' '#ib_redo610_tmp'

'#ib_redo587' '#ib_redo595' '#ib_redo603_tmp' '#ib_redo611_tmp'

'#ib_redo588' '#ib_redo596' '#ib_redo604_tmp' '#ib_redo612_tmp'

'#ib_redo589' '#ib_redo597' '#ib_redo605_tmp' '#ib_redo613_tmp'

每个普通重做日志文件都与特定范围的 LSN 值相关联;例如,以下查询显示

了前面示例中列出的活动重做日志文件的START_LSN和END_LSN

值:

mysql> SELECT FILE_NAME, START_LSN, END_LSN FROM performance_schema.innodb_redo_log_files;

+----------------------------+--------------+--------------+

| FILE_NAME | START_LSN | END_LSN |

+----------------------------+--------------+--------------+

| ./#innodb_redo/#ib_redo582 | 117654982144 | 117658256896 |

| ./#innodb_redo/#ib_redo583 | 117658256896 | 117661531648 |

| ./#innodb_redo/#ib_redo584 | 117661531648 | 117664806400 |

| ./#innodb_redo/#ib_redo585 | 117664806400 | 117668081152 |

| ./#innodb_redo/#ib_redo586 | 117668081152 | 117671355904 |

| ./#innodb_redo/#ib_redo587 | 117671355904 | 117674630656 |

| ./#innodb_redo/#ib_redo588 | 117674630656 | 117677905408 |

| ./#innodb_redo/#ib_redo589 | 117677905408 | 117681180160 |

| ./#innodb_redo/#ib_redo590 | 117681180160 | 117684454912 |

| ./#innodb_redo/#ib_redo591 | 117684454912 | 117687729664 |

| ./#innodb_redo/#ib_redo592 | 117687729664 | 117691004416 |

| ./#innodb_redo/#ib_redo593 | 117691004416 | 117694279168 |

| ./#innodb_redo/#ib_redo594 | 117694279168 | 117697553920 |

| ./#innodb_redo/#ib_redo595 | 117697553920 | 117700828672 |

| ./#innodb_redo/#ib_redo596 | 117700828672 | 117704103424 |

| ./#innodb_redo/#ib_redo597 | 117704103424 | 117707378176 |

| ./#innodb_redo/#ib_redo598 | 117707378176 | 117710652928 |

| ./#innodb_redo/#ib_redo599 | 117710652928 | 117713927680 |

| ./#innodb_redo/#ib_redo600 | 117713927680 | 117717202432 |

| ./#innodb_redo/#ib_redo601 | 117717202432 | 117720477184 |

| ./#innodb_redo/#ib_redo602 | 117720477184 | 117723751936 |

+----------------------------+--------------+--------------+

执行检查点时,InnoDB将检查点 LSN 存储在包含此 LSN 的文件的标头中。在恢复期间,检查所有重做日志文件并在最新的检查点 LSN 处开始恢复。

提供了几个状态变量用于监视重做日志和重做日志容量调整操作;例如,您可以查询

Innodb_redo_log_resize_status

以查看调整大小操作的状态:

mysql> SHOW STATUS LIKE 'Innodb_redo_log_resize_status';

+-------------------------------+-------+

| Variable_name | Value |

+-------------------------------+-------+

| Innodb_redo_log_resize_status | OK |

+-------------------------------+-------+

状态变量显示当前

Innodb_redo_log_capacity_resized

重做日志容量限制:

mysql> SHOW STATUS LIKE 'Innodb_redo_log_capacity_resized';

+----------------------------------+-----------+

| Variable_name | Value |

+----------------------------------+-----------+

| Innodb_redo_log_capacity_resized | 104857600 |

+----------------------------------+-----------+

其他适用的状态变量包括:

Innodb_redo_log_checkpoint_lsn

Innodb_redo_log_current_lsn

Innodb_redo_log_flushed_to_disk_lsn

Innodb_redo_log_logical_size

Innodb_redo_log_physical_size

Innodb_redo_log_read_only

Innodb_redo_log_uuid

有关详细信息,请参阅状态变量说明。

innodb_redo_log_files

您可以通过查询Performance Schema 表

来查看有关活动重做日志文件的信息。以下查询从表的所有列中检索数据:

SELECT FILE_ID, START_LSN, END_LSN, SIZE_IN_BYTES, IS_FULL, CONSUMER_LEVEL

FROM performance_schema.innodb_redo_log_files;