干杯。在将IO负载从MySQL 5.7切换到8.0.30之后,我们正在试图查找IO负载显著增加的原因,我们注意到的一个问题与文档的这一部分有关:
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字节(100 to )。最大重做日志容量为128 is。
我们过去常常将innodb_log_file_size设置为4G或类似的,并在ini文件中保留未定义的innodb_log_files_in_group,依赖内置的缺省值2。使用MySQL 5.7,产生了两个4 GiB大小的日志文件,总容量为8 GiB。
在MySQL 8下,由文档描述的遗留变量的计算不起作用--即使当我显式地设置组中的var文件时,重做日志容量总是设置为100 MiB (如SHOW VARIABLES ...查询所示)。这与重做日志文件夹的大小(在OS中观察到)完全匹配。(不,在ini文件的其他地方没有设置innodb_redo_log_capacity。)只有在我设置了新变量之后,ini文件中的innodb_redo_log_cpaacity才是正在运行的服务器全局变量中的新值集。
我是不是漏掉了什么,还是这个坏了?
FWIW,我在windows服务器2019,但ini文件是unix格式的.服务器正确读取ini文件中为遗留变量定义的值(使用非默认值进行测试)。
发布于 2023-02-17 17:56:08
这是故意的。旧变量在MySQL 8.0.30中被忽略。
https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_诺姆b_日志_文件_大小
innodb_log_file_size和innodb_log_files_in_group在MySQL 8.0.30中被否决。这些变量被innodb_redo_log_capacity取代。
详细描述新的InnoDB日志体系结构的博客说:
https://blogs.oracle.com/post/dynamic-innodb-redo-log-in-mysql-80
这意味着,如果要增加或缩小MySQL重做日志文件的大小,现在不需要重新启动InnoDB。事实上,我们不再谈论文件大小,而是谈论容量!DBA不再需要为重做日志指定任何文件大小和/或文件数量,就像以前的情况一样。
(强调地雷)
https://dba.stackexchange.com/questions/323712
复制相似问题