MySQL 8.0.30全新的动态redo log玩法探秘
MySQL从5.7版本开始支持在线动态修改 innodb_buffer_pool_size
,8.0开始支持在线添加undo表空间,以及临时表空间的自动回收,真的是越来越方便了。
从8.0.30开始,又新增支持动态调整redo log的大杀器,对DBA来说又是一大福音。
在8.0.30里,新增选项 innodb_redo_log_capacity
,用于定义redo log总大小。如果设置了该选项,则原来定义redo log的几个选项 innodb_log_file_size
、innodb_log_files_in_group
和 innodb_log_group_home_dir
就都失效了。
在8.0.30里,redo log存储在 datadir/#innodb_redo
下,由32个文件组成。文件命名为 #ib_redoN**
,每个文件大小是 innodb_redo_log_capacity/32(在resize redo log时可能会短时间不一样)。
-rw-r-----. 1 mysql mysql 110M Sep 28 13:54 #ib_redo2923
-rw-r-----. 1 mysql mysql 256K Sep 28 13:54 #ib_redo2924
-rw-r-----. 1 mysql mysql 256K Sep 28 13:54 #ib_redo2925
-rw-r-----. 1 mysql mysql 256K Sep 28 13:54 #ib_redo2926
有两种类型的redo log文件,一种是当前正在使用的(ordinary),文件名是正常的 #ib_redoN
;另一种是空闲的(spare),文件名为 #ib_redoN_tmp
,多加了个 _tmp 后缀。
-rw-r-----. 1 mysql mysql 192M Sep 28 13:53 #ib_redo2922
-rw-r-----. 1 mysql mysql 192M Sep 28 13:53 #ib_redo2923
-rw-r-----. 1 mysql mysql 192M Sep 28 12:42 #ib_redo2924_tmp
-rw-r-----. 1 mysql mysql 192M Sep 28 12:44 #ib_redo2925_tmp
-rw-r-----. 1 mysql mysql 192M Sep 28 12:47 #ib_redo2926_tmp
可以直接查看当前所有活跃redo log的状态:
mysql> SELECT FILE_NAME, START_LSN, END_LSN FROM performance_schema.innodb_redo_log_files;
mysql> SELECT * FROM performance_schema.innodb_red