测试验证
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。
2.断开所有应用链接并关闭快速停实例参数:innodb_fast_shutdown=0,确保InnoDB刷新所有脏页到磁盘使其一致性关闭
3.等步骤二执行完后,停掉MySQL实例
4.删掉数据目录下旧日志文件
5.在配置文件mysql13306.cnf里修改参数innodb_log_file_size,设置这个参数为500M
[mysqld]
innodb_log_file_size=500M
6.启动MySQL实例
7.查看新的日志文件大小
重启实例完成后,可以看到redo大小由48M改成了500M
二、MySQL8.0.30及以后版本修改redo大小
MySQL8.0.30版本发布后,使用新参数innodb_redo_log_capacity代替之前的两个参数(目前设置这两个参数依然有效),使用新参数调整大小非常简单,直接设置为要调整的值就行。比如调整其大小为500M:
调整之前默认为100M:
在线调整innodb_redo_log_capacity参数为500M
新增对应的状态变量innodb_redo_log_capacity_resized,可以在MySQL层面查看当前REDO日志文件大小:
而磁盘文件的存储形式不再是类似ib_logfileN这样的文件,而是替代为 #ib_redoN 这样新文件形式。这些新的文件默认存储在数据目录下的子目录'#innodb_redo里。
1)这样的文件一共有32个,按照参数innodb_redo_log_capacity来平均分配。
500*1024*1024/32 = 16384000
2)有两类文件:一类是不带_tmp后缀的,代表正在使用的日志文件;带_tmp后缀的代表多余的日志文件,等正在使用的文件写满后,再接着使用它。
如下所示:正在使用的日志文件有22个,未使用的有10个。
同时performance_schema库里新增表innodb_redo_log_files:可获取当前使用的REDO日志文件 LSN 区间、实际写入大小、是否已满等统计数据。例如当前22个REDO日志文件的统计数据如下
知识总结
新版本的功能越来越多,简化了运维的工作,研究一些新特性然后升级到新版本是有必要的。
标签:文件,log,redo,30,innodb,MySQL8.0,日志,REDO From: https://blog.51cto.com/u_13482808/6969637