MySQL raises error 3166 when a second buffer pool resize is requested while a previous resize operation is still running.
MySQL error 3166 ER_BUFPOOL_RESIZE_INPROGRESS appears when you try to change innodb_buffer_pool_size while another resize thread is active; wait for the first resize to finish or cancel it before issuing a new command.
ER_BUFPOOL_RESIZE_INPROGRESS
MySQL error 3166 ER_BUFPOOL_RESIZE_INPROGRESS is thrown when a second request to modify innodb_buffer_pool_size arrives while the server is still processing a prior resize.
The server blocks the new request to prevent corruption because InnoDB allows only one buffer pool resize thread at a time.
The error typically happens after issuing back-to-back ALTER INSTANCE or SET GLOBAL commands that change innodb_buffer_pool_size before the first operation finishes.
Automated scripts, monitoring tools, or impatient manual interventions often trigger overlapping commands, creating the conflict recorded as error 3166.
First confirm that a resize is in progress using information schema or InnoDB status commands. When verified, either wait for the thread to complete or terminate it if business requirements permit.
After the active resize ends, reissue a single SET GLOBAL innodb_buffer_pool_size statement with the desired value. Avoid sending a new command until the completed state is visible in performance_schema.innodb_buffer_stats.
High-traffic production servers often call dynamic memory changes during peak hours; schedule buffer pool tuning during maintenance windows to eliminate conflicting requests.
DevOps automation pipelines can fire repeated SET GLOBAL statements on every deploy; implement a lock or conditional check before sending the command.
Monitor the resize thread duration with performance_schema and alert if a second attempt is queued.
Use a change-management tool, such as Galaxy collections, to track and endorse a single memory-tuning script, ensuring engineers run one command per window.
Error 3160 ER_BUFPOOL_RESIZE_FAILED arises when the resize cannot be applied due to memory limits; review operating system availability.
Error 1205 ER_LOCK_WAIT_TIMEOUT indicates lock contention instead of buffer pool resize conflicts; investigate long-running transactions rather than memory settings.
Issuing a second SET GLOBAL innodb_buffer_pool_size statement before the first completes triggers the resize conflict.
Continuous integration scripts that lack state checks can repeatedly adjust buffer pool size, colliding with an active resize.
Admins who misjudge completion time and rerun the command from a session window create concurrent resize attempts.
Busy servers with heavy DDL activity might delay the resize, increasing the window in which a second request is issued inadvertently.
Occurs when the resize cannot allocate the requested memory.
Shows up when LOAD DATA conflicts with buffer pool operations.
Indicates a wait timeout due to row locks, not buffer pool size conflicts, but often appears in similar maintenance windows.
Duration depends on buffer pool size and server workload; small adjustments finish in seconds, multi-gigabyte pools can take minutes.
Yes. Stop MySQL, update my.cnf with the new innodb_buffer_pool_size, and start the server. No concurrent resize occurs.
No. The error is protective; it refuses the second resize to safeguard data pages. Your data remains intact.
Galaxy collections let teams endorse a single memory-tuning query, preventing duplicate runs and reducing the chance of overlapping resize commands.