专注,勤学,慎思。戒骄戒躁,谦虚谨慎

just do it

导航

MySQL8.0自适应参数innodb_dedicated_server, MySQL 8.0.30动态 InnoDB 重做日志调整

转载地址如下,侵删:

https://www.mydbops.com/blog/dynamic-innodb-redo-log-resize-mysql-8-0-30

https://www.modb.pro/db/22572

 

动态 InnoDB 重做日志调整 MySQL 8.0.30

在 MySQL 8.0.30 版本之前,重做日志是物理上位于名为ib_logfile0ib_logfile1的磁盘上的“文件” 。重做日志文件的数量和大小分别由innodb_log_files_in_group和innodb_log_file_size变量控制。从下图中有一个更好的理解。

diagram illustrating the InnoDB Log Buffer and InnoDB Log Files

在 8.0.30 中,InnoDB 尝试总共维护 32 个重做日志文件,每个文件等于 1/32 * innodb_redo_log_capacity,默认为 100MB。现在我们可以观察到每个大小为 3.2MB 的重做日志。(即;3.2*32= 100 MB)

 

 

 

MySQL8.0自适应参数innodb_dedicated_server

 

 那么按照什么规则调整呢?MySQL官方给出了相关参数调整规则如下:
    1. innodb_buffer_pool_size自动调整规则:

专用服务器内存大小buffer_pool_size大小
小于1G 128MB (MySQL缺省值)
1G to 4G OS内存*0.5
大于4G OS内存*0.75

    2. innodb_log_file_size自动调整规则:

buffer_pool_size大小log_file_size 大小
小于8G 512MB
8G to 128G 1024MB
大于128G 2048MB

    3. innodb_log_files_in_group自动调整规则:
(innodb_log_files_in_group值就是log file的数量)

buffer_pool_size大小log file数量
小于8G ROUND(buffer pool size)
8G to 128G ROUND(buffer pool size * 0.75)
大于128G 64

说明:如果ROUND(buffer pool size)值小于2GB,那么innodb_log_files_in_group会强制设置为2。

    4. innodb_flush_method自动调整规则:

    该参数调整规则直接引用官方文档的解释:The flush method is set to O_DIRECT_NO_FSYNC when innodb_dedicated_server is enabled. If the O_DIRECT_NO_FSYNC setting is not available, the default innodb_flush_method setting is used.
如果系统允许设置为O_DIRECT_NO_FSYNC;如果系统不允许,则设置为InnoDB默认的Flush method。

自适应参数的好处:

    • 自动调整,简单方便,让DBA更省心
    • 自带优化光环:没有该参数前,innodb_buffer_pool_size和log_file_size默认安装初始化后只有128M和48M,这对于一个生产环境来说是远远不够的,通常DBA都会手工根据服务器的硬件配置来调整优化,该参数出现后基本上可以解决入门人员安装MySQL后的性能问题。
    • 云厂商,虚拟化等动态资源扩容或者缩容后,不必再操心MySQL参数配置问题。

 

posted on 2025-05-20 09:51  MSSQL123  阅读(23)  评论(0)    收藏  举报