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_logfile0和ib_logfile1的磁盘上的“文件” 。重做日志文件的数量和大小分别由innodb_log_files_in_group和innodb_log_file_size变量控制。从下图中有一个更好的理解。

在 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参数配置问题。
浙公网安备 33010602011771号