Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Enabling Automatic Configuration for a Dedicated MySQL Server

17.8.12 为专用 MySQL 服务器启用自动配置

innodb_dedicated_server 启用时,InnoDB 将自动配置以下变量:

仅在 MySQL 实例驻留在专用服务器上,且可以使用所有可用的系统资源时,才考虑启用 innodb_dedicated_server。例如,如果您在 Docker 容器或仅运行 MySQL 的专用 VM 中运行 MySQL 服务器,则可以启用 innodb_dedicated_server。如果 MySQL 实例与其他应用程序共享系统资源,不建议启用 innodb_dedicated_server

以下信息描述了每个变量如何自动配置。

  • innodb_buffer_pool_size

    缓冲池大小根据服务器上的检测内存量进行配置。

    表 17.8 自动配置的缓冲池大小

    Detected Server Memory Buffer Pool Size
    小于 1GB 128MB(默认值)
    1GB 到 4GB 检测到的服务器内存 * 0.5
    大于 4GB 检测到的服务器内存 * 0.75

  • innodb_redo_log_capacity

    重做日志容量根据服务器上的检测内存量和 innodb_buffer_pool_size 的配置进行配置。如果 innodb_buffer_pool_size 未被显式配置,则假设其为默认值。

    Warning

    如果 innodb_buffer_pool_size 被设置为大于检测到的服务器内存量的值,则自动重做日志容量配置行为未定义。

    表 17.9 自动配置的日志文件大小

    Detected Server Memory Buffer Pool Size Redo Log Capacity
    小于 1GB 未配置 100MB
    小于 1GB 小于 1GB 100MB
    1GB 到 2GB 不适用 100MB
    2GB 到 4GB 未配置 1GB
    2GB 到 4GB 任何配置值 round(0.5 * 检测到的服务器内存 in GB) * 0.5 GB
    4GB 到 10.66GB 不适用 round(0.75 * 检测到的服务器内存 in GB) * 0.5 GB
    10.66GB 到 170.66GB 不适用 round(0.5625 * 检测到的服务器内存 in GB) * 1 GB
    大于 170.66GB 不适用 128GB

  • innodb_log_file_size(已弃用)

    日志文件大小根据自动配置的缓冲池大小进行配置。

    表 17.10 自动配置的日志文件大小

    Buffer Pool Size Log File Size
    小于 8GB 512MB
    8GB 到 128GB 1024MB
    大于 128GB 2048MB

  • innodb_log_files_in_group(已弃用)

    日志文件数量根据自动配置的缓冲池大小进行配置。

    表 17.11 自动配置的日志文件数量

    Buffer Pool Size Number of Log Files
    小于 8GB round(缓冲池大小)
    8GB 到 128GB round(缓冲池大小 * 0.75)
    大于 128GB 64

    Note

    如果圆整的缓冲池大小值小于 2GB,则强制执行最小 innodb_log_files_in_group 值为 2。

  • innodb_flush_method

    innodb_dedicated_server 启用时,刷新方法设置为 O_DIRECT_NO_FSYNC。如果 O_DIRECT_NO_FSYNC 设置不可用,则使用默认的 innodb_flush_method 设置。

    InnoDB 在刷新 I/O 时使用 O_DIRECT,但跳过每个写操作后的 fsync() 系统调用。

    Warning

    fsync() 在创建新文件、增加文件大小和关闭文件后被调用,以确保文件系统元数据更改被同步。然而,在每个写操作后,fsync() 系统调用仍被跳过。

    如果 redo 日志文件和数据文件驻留在不同的存储设备上,并且在数据文件写入从设备缓存中刷新之前发生意外退出,可能会导致数据丢失。如果您使用或计划使用不同的存储设备来存储 redo 日志文件和数据文件,并且您的数据文件驻留在一个没有电池备份的设备缓存上,请使用 O_DIRECT

如果自动配置的选项在选项文件或其他地方被明确配置,则使用明确指定的设置,并在 stderr 中打印类似以下的启动警告:

[警告] [000000] InnoDB: 选项 innodb_dedicated_server 被忽略,因为 innodb_buffer_pool_size=134217728 被明确指定。

明确配置一个选项并不阻止其他选项的自动配置。

如果 innodb_dedicated_server 启用并且 innodb_buffer_pool_size 被明确配置,则基于缓冲池大小的变量使用服务器上检测到的内存量计算的缓冲池大小值,而不是明确定义的缓冲池大小值。

自动配置的设置每次启动 MySQL 服务器时都会被重新评估和重新配置。