MySQL8.0.31的redo默认100M调整为1G:
[root@mysql1 ~]# mysql -h 192.168.207.131 -P 3306 -u root -pabcd1234
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.31 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like '%innodb_redo_log%';
+------------------------------+-----------+
| Variable_name | Value |
+------------------------------+-----------+
| innodb_redo_log_archive_dirs | |
| innodb_redo_log_capacity | 104857600 |
| innodb_redo_log_encrypt | OFF |
+------------------------------+-----------+
3 rows in set (0.01 sec)
mysql> SET GLOBAL innodb_redo_log_capacity = 1*1024*1024*1024;
Query OK, 0 rows affected (0.15 sec)
mysql> show variables like '%innodb_redo_log%';
+------------------------------+------------+
| Variable_name | Value |
+------------------------------+------------+
| innodb_redo_log_archive_dirs | |
| innodb_redo_log_capacity | 1073741824 |
| innodb_redo_log_encrypt | OFF |
+------------------------------+------------+
3 rows in set (0.01 sec)
mysql> SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_resize_status';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| Innodb_redo_log_resize_status | OK |
+-------------------------------+-------+
1 row in set (0.01 sec)
mysql> SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_capacity_resized';
+----------------------------------+------------+
| Variable_name | Value |
+----------------------------------+------------+
| Innodb_redo_log_capacity_resized | 1073741824 |
+----------------------------------+------------+
1 row in set (0.00 sec)
mysql> SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_current_lsn'; SELECT SLEEP(60); SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_current_lsn';
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| Innodb_redo_log_current_lsn | 19565898 |
+-----------------------------+----------+
1 row in set (0.01 sec)
+-----------+
| SLEEP(60) |
+-----------+
| 0 |
+-----------+
1 row in set (1 min 0.00 sec)
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| Innodb_redo_log_current_lsn | 19565898 |
+-----------------------------+----------+
1 row in set (0.00 sec)
mysql>
mysql> SELECT ABS(19565898-19565898) / 1024 / 1024 AS MB_per_min;
+------------+
| MB_per_min |
+------------+
| 0.00000000 |
+------------+
1 row in set (0.00 sec)
mysql> exit
Bye
[root@mysql1 ~]# pwd
/root
[root@mysql1 ~]# cd /mysql/data/#i
#ib_16384_0.dblwr #ib_16384_1.dblwr #innodb_redo/ #innodb_temp/
[root@mysql1 ~]# cd /mysql/data/#i
#ib_16384_0.dblwr #ib_16384_1.dblwr #innodb_redo/ #innodb_temp/
[root@mysql1 ~]# cd /mysql/data/#innodb_redo/
[root@mysql1 #innodb_redo]# ll
total 1019008
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo10_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo11_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo12_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo13_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo14_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo15_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo16_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo17_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo18_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo19_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo20_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo21_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo22_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo23_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo24_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo25_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo26_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo27_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo28_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo29_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo30_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo31_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo32_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo33_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo34_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo35_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo36_tmp
-rw-r-----. 1 mysql mysql 3276800 Dec 7 18:42 #ib_redo5
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo6_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo7_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo8_tmp
-rw-r-----. 1 mysql mysql 33554432 Dec 7 18:45 #ib_redo9_tmp
[root@mysql1 #innodb_redo]# du -sh *
32M #ib_redo10_tmp
32M #ib_redo11_tmp
32M #ib_redo12_tmp
32M #ib_redo13_tmp
32M #ib_redo14_tmp
32M #ib_redo15_tmp
32M #ib_redo16_tmp
32M #ib_redo17_tmp
32M #ib_redo18_tmp
32M #ib_redo19_tmp
32M #ib_redo20_tmp
32M #ib_redo21_tmp
32M #ib_redo22_tmp
32M #ib_redo23_tmp
32M #ib_redo24_tmp
32M #ib_redo25_tmp
32M #ib_redo26_tmp
32M #ib_redo27_tmp
32M #ib_redo28_tmp
32M #ib_redo29_tmp
32M #ib_redo30_tmp
32M #ib_redo31_tmp
32M #ib_redo32_tmp
32M #ib_redo33_tmp
32M #ib_redo34_tmp
32M #ib_redo35_tmp
32M #ib_redo36_tmp
3.2M #ib_redo5
32M #ib_redo6_tmp
32M #ib_redo7_tmp
32M #ib_redo8_tmp
32M #ib_redo9_tmp
[root@mysql1 #innodb_redo]# date
Wed Dec 7 18:50:42 CST 2022
[root@mysql1 #innodb_redo]#
参考:https://www.cnblogs.com/abclife/p/16580365.html
MySQL8.0.30引入了一个新特性:动态调整redo日志的大小。
除了InnoDB的buffer pool大小,我们通常会觉得设置合适的redo文件大小对MySQL的性能至关重要。MySQL在5.7中就实现了动态调整buffer pool的大小,但是直到现在8.0.30才实现了动态调整redo文件的大小。
mysql> SET GLOBAL innodb_redo_log_capacity = 210241024*1024;
为了让修改生效,现在,redo日志文件位于datadir下的一个新的目录:#innodb_redo
可以使用参数innodb_log_group_home_dir设置redo日志文件的路径。
有两种类型的redo日志文件:ordinary类型、spare类型。ordinary类型的redo日志文件是指被使用的redo日志文件;spare类型的redo日志文件是指等待被使用的redo日志文件。InnoDB维护了32个redo日志文件,每个文件的大小是1/32 * innodb_redo_log_capacity。
redo日志文件的命名规则是:#ib_redoN,这里的N是日志文件号。spare类型的redo日志文件会加上一个_tmp后缀。例如:
$ ls
#ib_redo31 #ib_redo33 #ib_redo35 #ib_redo37 #ib_redo39 #ib_redo41 #ib_redo43 #ib_redo45 #ib_redo47 #ib_redo49_tmp #ib_redo51_tmp #ib_redo53_tmp #ib_redo55_tmp #ib_redo57_tmp #ib_redo59_tmp #ib_redo61_tmp
#ib_redo32 #ib_redo34 #ib_redo36 #ib_redo38 #ib_redo40 #ib_redo42 #ib_redo44 #ib_redo46 #ib_redo48 #ib_redo50_tmp #ib_redo52_tmp #ib_redo54_tmp #ib_redo56_tmp #ib_redo58_tmp #ib_redo60_tmp #ib_redo62_tmp
为了监控redo日志文件的状态和大小,增加了一些状态变量。例如:
mysql> SHOW GLOBAL STATUS LIKE ‘Innodb_redo_log_resize_status’;
±------------------------------±------+
| Variable_name | Value |
±------------------------------±------+
| Innodb_redo_log_resize_status | OK |
±------------------------------±------+
mysql> SHOW GLOBAL STATUS LIKE ‘Innodb_redo_log_capacity_resized’;
±---------------------------------±-----------+
| Variable_name | Value |
±---------------------------------±-----------+
| Innodb_redo_log_capacity_resized | 3221225472 |
±---------------------------------±-----------+
其他的状态变量:
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
估算redo日志文件的容量
mysql> SHOW GLOBAL STATUS LIKE ‘Innodb_redo_log_current_lsn’; SELECT SLEEP(60); SHOW GLOBAL STATUS LIKE ‘Innodb_redo_log_current_lsn’;
根据上面的执行结果进行估算:
mysql > SELECT ABS(20641693317 - 20903377487) / 1024 / 1024 AS MB_per_min;
±-------------+
| MB_per_min |
±-------------+
| 249.56147194 |
±-------------+
1 row in set (0.00 sec)
大概是250MB/min,根据该结果,最好是将redo日志容量设置成250*60(1小时),即15GB。
过期的参数
·innodb_log_files_in_group
·innodb_log_file_size
如果尝试在my.cnf文件中设置该过期参数,设置会被忽略,并会在错误日志中打印警告信息:
2022-08-07T20:23:39.898370Z 0 [Warning] [MY-013869] [InnoDB] Ignored deprecated configuration parameter innodb_log_file_size. Used innodb_redo_log_capacity instead.
2022-08-07T20:23:39.898441Z 0 [Warning] [MY-013870] [InnoDB] Ignored deprecated configuration parameter innodb_log_files_in_group. Used innodb_redo_log_capacity instead.




