### 15.8.12 Enabling Automatic Configuration for a Dedicated MySQL Server

 When [`innodb_dedicated_server`](innodb-parameters.html#sysvar_innodb_dedicated_server) is enabled, `InnoDB` automatically configures the following variables:

* [`innodb_buffer_pool_size`](innodb-parameters.html#sysvar_innodb_buffer_pool_size)

* [`innodb_log_file_size`](innodb-parameters.html#sysvar_innodb_log_file_size)

* [`innodb_log_files_in_group`](innodb-parameters.html#sysvar_innodb_log_files_in_group) (as of MySQL 8.0.14)

* [`innodb_flush_method`](innodb-parameters.html#sysvar_innodb_flush_method)

 Only consider enabling [`innodb_dedicated_server`](innodb-parameters.html#sysvar_innodb_dedicated_server) if the MySQL instance resides on a dedicated server where it can use all available system resources. For example, consider enabling if you run MySQL Server in a Docker container or dedicated VM that only runs MySQL. Enabling [`innodb_dedicated_server`](innodb-parameters.html#sysvar_innodb_dedicated_server) is not recommended if the MySQL instance shares system resources with other applications.

 The information that follows describes how each variable is automatically configured.

* [`innodb_buffer_pool_size`](innodb-parameters.html#sysvar_innodb_buffer_pool_size)

   Buffer pool size is configured according to the amount of memory detected on the server.

  []()

  **Table 15.8 Automatically Configured Buffer Pool Size**

  |Detected Server Memory|         Buffer Pool Size         |
  |----------------------|----------------------------------|
  |    Less than 1GB     |    128MiB (the default value)    |
  |      1GB to 4GB      |*`detected server memory`* \* 0.5 |
  |   Greater than 4GB   |*`detected server memory`* \* 0.75|

* [`innodb_log_file_size`](innodb-parameters.html#sysvar_innodb_log_file_size)

   As of MySQL 8.0.14, log file size is configured according to the automatically configured buffer pool size.

  []()

  **Table 15.9 Automatically Configured Log File Size**

  | Buffer Pool Size |Log File Size|
  |------------------|-------------|
  |  Less than 8GB   |   512MiB    |
  |   8GB to 128GB   |   1024MiB   |
  |Greater than 128GB|   2048MiB   |

  Note

   Prior to MySQL 8.0.14, the [`innodb_log_file_size`](innodb-parameters.html#sysvar_innodb_log_file_size) variable was automatically configured according to the amount of memory detected on the server, as shown below:

  []()

  **Table 15.10 Automatically Configured Log File Size (MySQL 8.0.13 and Earlier)**

  |Detected Server Memory|      Log File Size      |
  |----------------------|-------------------------|
  |        \< 1GB        |48MiB (the default value)|
  |       \<= 4GB        |         128MiB          |
  |       \<= 8GB        |         512MiB          |
  |       \<= 16GB       |         1024MiB         |
  |       \> 16GB        |         2048MiB         |

* [`innodb_log_files_in_group`](innodb-parameters.html#sysvar_innodb_log_files_in_group)

   The number of log files is configured according to the automatically configured buffer pool size (in gigabytes). Automatic configuration of the [`innodb_log_files_in_group`](innodb-parameters.html#sysvar_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

   The minimum [`innodb_log_files_in_group`](innodb-parameters.html#sysvar_innodb_log_files_in_group) value of 2 is enforced if the rounded buffer pool size value is less than 2GB.

* [`innodb_flush_method`](innodb-parameters.html#sysvar_innodb_flush_method)

   The flush method is set to `O_DIRECT_NO_FSYNC` when [`innodb_dedicated_server`](innodb-parameters.html#sysvar_innodb_dedicated_server) is enabled. If the `O_DIRECT_NO_FSYNC` setting is not available, the default [`innodb_flush_method`](innodb-parameters.html#sysvar_innodb_flush_method) setting is used.

  `InnoDB` uses `O_DIRECT` during flushing I/O, but skips the `fsync()` system call after each write operation.

  Warning

   Prior to MySQL 8.0.14, this setting is not suitable for file systems such as XFS and EXT4, which require an `fsync()` system call to synchronize file system metadata changes.

   As of MySQL 8.0.14, `fsync()` is called after creating a new file, after increasing file size, and after closing a file, to ensure that file system metadata changes are synchronized. The `fsync()` system call is still skipped after each write operation.

   Data loss is possible if redo log files and data files reside on different storage devices, and an unexpected exit occurs before data file writes are flushed from a device cache that is not battery-backed. If you use or intend to use different storage devices for redo log files and data files, and your data files reside on a device with a cache that is not battery-backed, use `O_DIRECT` instead.

 If an automatically configured option is configured explicitly in an option file or elsewhere, the explicitly specified setting is used, and a startup warning similar to this is printed to `stderr`:

[Warning] [000000] InnoDB: Option innodb\_dedicated\_server is ignored for innodb\_buffer\_pool\_size because innodb\_buffer\_pool\_size=134217728 is specified explicitly.

 Explicit configuration of one option does not prevent the automatic configuration of other options.

 If [`innodb_dedicated_server`](innodb-parameters.html#sysvar_innodb_dedicated_server) is enabled and [`innodb_buffer_pool_size`](innodb-parameters.html#sysvar_innodb_buffer_pool_size) is configured explicitly in an option file, [`innodb_log_file_size`](innodb-parameters.html#sysvar_innodb_log_file_size) and [`innodb_log_files_in_group`](innodb-parameters.html#sysvar_innodb_log_files_in_group) are still automatically configured based on a buffer pool size value calculated according to the amount of memory detected on the server, even though that value is not used to configure the size of the buffer pool.

 Automatically configured settings are evaluated and reconfigured if necessary each time the MySQL server is started.

