Database Topic Archive

MySQL Articles

InnoDB internals, replication, locking, query performance, and MySQL operations notes.

innodb_flush_neighbors: The Spinning-Disk Setting We Carried Onto NVMe
7 min read

Our 8.0 config had innodb_flush_neighbors=1, inherited verbatim from a 5.7 my.cnf written for spinning disks in 2015. On NVMe it was pure write amplification: 18% of checkpoint flush IOPS were pages nobody asked to write. Setting it to 0 smoothed…

Host Is Blocked: max_connect_errors, the host_cache, and the NAT Trap
7 min read

After a switch flap, the entire application fleet got 'Host is blocked because of many connection errors' — all at once, because every app server sits behind one NAT address. TRUNCATE performance_schema.host_cache unblocked us; understanding the error counter kept it…

SET PERSIST and mysqld-auto.cnf: The Config Drift Nobody Audits
6 min read

We doubled the RAM, set innodb_buffer_pool_size=96G in my.cnf, restarted — and got 24G. Eight months earlier an on-call engineer had run SET PERSIST during an OOM scare, and mysqld-auto.cnf had been silently overriding the option file ever since.

Taming the MySQL 8.0 Error Log with log_filter_dragnet and Components
7 min read

After our 5.7-to-8.0 upgrade the error log ballooned from 40MB to 1.8GB a day, so we installed log_filter_dragnet — and our first broad rule quietly deleted the startup banners that would have been the timeline of a later crash investigation.…