Bug #99944 Missing detail in the manual explaining settings for a dedicated InnoDB server
Submitted: 21 Jun 2020 9:44 Modified: 21 Jun 2020 10:40
Reporter: Valeriy Kravchuk Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Documentation Severity:S3 (Non-critical)
Version:8.0.14+ OS:Any
Assigned to: CPU Architecture:Any
Tags: innodb_dedicated_server, innodb_log_files_in_group, missing manual

[21 Jun 2020 9:44] Valeriy Kravchuk
Description:
Manual (https://dev.mysql.com/doc/refman/8.0/en/innodb-dedicated-server.html) says:

"Automatic configuration of the innodb_log_files_in_group variable was added in MySQL 8.0.14.

Table 15.11 Automatically Configured Number of Log Files
Buffer Pool Size 	Number of Log Files
Less than 8GB 	ROUND(buffer pool size)
8GB to 128GB 	ROUND(buffer pool size * 0.75)
Greater than 128GB 	64
..."

Note that we refer to "buffer pool size" above, but do not specify the unit of size. The value of innodb_buffer_pool_size is presented in bytes in the output of SHOW GLOBAL VARIABLES, for example, while the automated tuning and table aboe assumes size in gigabytes.

How to repeat:
Start any MySQL 8.0.14 with --no-defaults and then with --no-defaults plus --innodb_deicated_server=ON, get the outputs of SHOW GLOBAL VARIABLES and find the diff. You'll see something like this (from a system, with 8G of RAM):

[openxs@fc29 8.0]$ diff -u /tmp/default.txt /tmp/dedicated.txt 
--- /tmp/default.txt    2020-06-20 08:22:25.674368791 +0300
+++ /tmp/dedicated.txt  2020-06-20 08:24:40.938561950 +0300
@@ -130,11 +130,11 @@
 innodb_buffer_pool_dump_pct    25
 innodb_buffer_pool_filename    ib_buffer_pool
 innodb_buffer_pool_in_core_file    ON
-innodb_buffer_pool_instances   1
+innodb_buffer_pool_instances   8
 innodb_buffer_pool_load_abort  OFF
 innodb_buffer_pool_load_at_startup ON
 innodb_buffer_pool_load_now    OFF
-innodb_buffer_pool_size    134217728
+innodb_buffer_pool_size    6442450944
 innodb_change_buffer_max_size  25
 innodb_change_buffering    all
 innodb_checksum_algorithm  crc32
@@ -147,7 +147,7 @@
 innodb_data_file_path  ibdata1:12M:autoextend
 innodb_data_home_dir   
 innodb_deadlock_detect ON
-innodb_dedicated_server    OFF
+innodb_dedicated_server    ON
 innodb_default_row_format  dynamic
 innodb_directories 
 innodb_disable_sort_file_cache OFF
@@ -157,7 +157,7 @@
 innodb_fill_factor 100
 innodb_flush_log_at_timeout    1
 innodb_flush_log_at_trx_commit 1
-innodb_flush_method    fsync
+innodb_flush_method    O_DIRECT_NO_FSYNC
 innodb_flush_neighbors 0
 innodb_flush_sync  ON
 innodb_flushing_avg_loops  30
@@ -183,8 +183,8 @@
 innodb_log_buffer_size 16777216
 innodb_log_checksums   ON
 innodb_log_compressed_pages    ON
-innodb_log_file_size   50331648
-innodb_log_files_in_group  2
+innodb_log_file_size   536870912
+innodb_log_files_in_group  6
 innodb_log_group_home_dir  ./
 innodb_log_spin_cpu_abs_lwm    80
 innodb_log_spin_cpu_pct_hwm    50
...

Note that innodb_buffer_pool_size is set to 6442450944 (exactly 6G) and that's why we see innodb_log_files_in_group set to 6.

Suggested fix:
lease, clarify the manual. Now it is making wrong statement when taken literally.
[21 Jun 2020 10:40] Valeriy Kravchuk
Ignore me, it says earlier:

"The number of log files is configured according to the automatically configured buffer pool size (in gigabytes)."