官方文档并没有直接告诉如何调整 innodb_log_buffer_size 大小,
根据对mysql 的状态信息了解知道 innodb_log_buffer_size 跟 Innodb_os_log_written 和 Com_commit 状态有关系。
set global autocommit = 0; SHOW GLOBAL STATUS LIKE 'Innodb_os_log_written'; 经过一段长时间............. SHOW GLOBAL STATUS LIKE 'Com_commit'; 通过以下公式计算平均每个事务要缓冲的平均数据量多少个bytes,前提你需要保留多长时间的redo log buffer Innodb_os_log_written / Com_commit 在业务高峰运行期间如果 Innodb_log_waits 值为0或接近0, innodb_log_buffer_size 可能太大,可以减少。 set @old_value := 0; set @new_value := 0; select VARIABLE_VALUE into @old_value from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Innodb_log_waits'; select SLEEP(时间); select VARIABLE_VALUE into @new_value from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Innodb_log_waits'; select @old_value; select @new_value;