0
点赞
收藏
分享

微信扫一扫

MySQL8.0.30在线调整redo log

测试验证

MySQL8.0.30版本带来一个与 REDO日志文件有关的新特性:在线调整 REDO日志文件的大小,在一定程度上简化了运维的工作量。一台 MySQL实例部署完后REDO日志文件大小一般不会保持默认值,DBA会根据数据的写入量以及频率来调整其为合适的值,与业务匹配的REDO日志文件大小能让数据库获得最佳的性能。下面对MySQL 8.0.30之前以及之后的版本,对比 REDO日志文件的更改过程,验证这个新特性。

一、MySQL8.0.30版本之前修改redo大小,以MySQL5.7版本为例

假设需要更改redo大小为500M,步骤如下:

1.REDO日志文件的更改涉及两个参数:其最终大小是这两个参数的值相乘。

1)innodb_log_files_in_group: REDO日志磁盘上的文件个数,默认为2。

2)innodb_log_file_size: REDO 日志磁盘上单个文件的大小,默认为48M。

3)当前的日志大小为单个48M,两个组,也就是一共96M。

MySQL8.0.30在线调整redo log_日志文件

2.断开所有应用链接并关闭快速停实例参数:innodb_fast_shutdown=0,确保InnoDB刷新所有脏页到磁盘使其一致性关闭

MySQL8.0.30在线调整redo log_在线调整_02

3.等步骤二执行完后,停掉MySQL实例

MySQL8.0.30在线调整redo log_在线调整_03

4.删掉数据目录下旧日志文件

MySQL8.0.30在线调整redo log_MySQL_04

5.在配置文件mysql13306.cnf里修改参数innodb_log_file_size,设置这个参数为500M

[mysqld]
innodb_log_file_size=500M

6.启动MySQL实例

7.查看新的日志文件大小

MySQL8.0.30在线调整redo log_日志文件_05

重启实例完成后,可以看到redo大小由48M改成了500M

 

二、MySQL8.0.30及以后版本修改redo大小

MySQL8.0.30版本发布后,使用新参数innodb_redo_log_capacity代替之前的两个参数(目前设置这两个参数依然有效),使用新参数调整大小非常简单,直接设置为要调整的值就行。比如调整其大小为500M:

调整之前默认为100M:

MySQL8.0.30在线调整redo log_日志文件_06

在线调整innodb_redo_log_capacity参数为500M

MySQL8.0.30在线调整redo log_redo log_07

新增对应的状态变量innodb_redo_log_capacity_resized,可以在MySQL层面查看当前REDO日志文件大小:

MySQL8.0.30在线调整redo log_日志文件_08

而磁盘文件的存储形式不再是类似ib_logfileN这样的文件,而是替代为 #ib_redoN 这样新文件形式。这些新的文件默认存储在数据目录下的子目录'#innodb_redo里。

1)这样的文件一共有32个,按照参数innodb_redo_log_capacity来平均分配。

500*1024*1024/32 = 16384000

MySQL8.0.30在线调整redo log_日志文件_09

2)有两类文件:一类是不带_tmp后缀的,代表正在使用的日志文件;带_tmp后缀的代表多余的日志文件,等正在使用的文件写满后,再接着使用它。

MySQL8.0.30在线调整redo log_日志文件_10

如下所示:正在使用的日志文件有22个,未使用的有10个。

同时performance_schema库里新增表innodb_redo_log_files:可获取当前使用的REDO日志文件 LSN 区间、实际写入大小、是否已满等统计数据。例如当前22个REDO日志文件的统计数据如下

MySQL8.0.30在线调整redo log_redo log_11

知识总结

新版本的功能越来越多,简化了运维的工作,研究一些新特性然后升级到新版本是有必要的。

举报

相关推荐

0 条评论