innodb_buffer_pool_dump_at_shutdown=ON是自动预热的强制前提,关机时不设此参数则无法保存页信息,导致innodb_buffer_pool_load_at_startup无数据可加载;该参数为只读,须在my.cnf的[mysqld]段显式配置并重启生效。

为什么 innodb_buffer_pool_dump_at_shutdown=ON 是预热前提
不设这个参数,MySQL 关机时根本不会保存任何页信息,innodb_buffer_pool_load_at_startup 就成了无米之炊。默认值是 OFF,所以哪怕你开了 load_at_startup,启动时也只会默默跳过加载步骤,毫无报错提示。
它不是“可选优化”,而是自动预热链路上的强制开关。关机前没 dump,重启后 Buffer Pool 就是纯冷的,所有查询都得走磁盘——尤其对大表或高并发场景,首波请求延迟可能翻倍。
- 必须在
my.cnf中显式设置,运行时SET GLOBAL不生效(该变量为只读) - dump 文件名由
innodb_buffer_pool_filename控制,默认是ib_buffer_pool,路径在datadir下,确保 MySQL 进程对该路径有写权限 - 异常崩溃或 kill -9 关机时,dump 不会触发,所以不能完全依赖此机制应对所有重启场景
如何验证 dump_at_shutdown 是否真正生效
光改配置不等于落地。最直接的验证方式是:手动执行一次正常关闭 + 启动,然后检查 datadir 下是否存在 ib_buffer_pool 文件,并确认其内容非空。
更稳妥的做法是在启动后立即查状态:
SHOW STATUS LIKE 'Innodb_buffer_pool_dump_status';
返回结果中 Value 字段应包含类似 Dumping buffer pool to /var/lib/mysql/ib_buffer_pool at page number 12345 的完成标记。若显示 Not started 或为空,说明配置未加载或 mysqld 启动时没读到该参数。
- 常见漏点:配置写在
[client]段而非[mysqld]段 - 修改
my.cnf后未重启 mysqld,或重启时用了--defaults-file指定了其他配置文件 - 某些容器化部署(如 Docker)未将
my.cnf正确挂载进容器内
dump_at_shutdown 和 load_at_startup 必须成对启用
这两个参数是绑定动作:dump_at_shutdown 决定“有没有东西可加载”,load_at_startup 决定“启不启动加载”。单独开任意一个都没意义。
启动时加载是异步的,不会阻塞 mysqld 启动完成,但会影响初期性能爬升速度。如果 dump 文件很大(比如几百 MB),加载过程可能持续数秒到分钟级,期间 Innodb_buffer_pool_reads 仍会明显上升。
-
innodb_buffer_pool_dump_pct可控制 dump 比例(默认 25%),避免 dump 全量页导致文件过大、加载过慢;生产环境建议调至 10–20,聚焦 LRU new 区高频页 - 加载失败不会报错,只会静默跳过;可通过
SHOW STATUS LIKE 'Innodb_buffer_pool_load_status'查看是否进入Loading状态及进度 - 若上次 shutdown 未成功 dump,启动时
load_at_startup会直接忽略,不会尝试加载旧文件
预热效果差?先盯住 Innodb_buffer_pool_reads 和命中率
开了自动 dump/load,不代表预热就一定成功。真正要盯的是两个指标:
Innodb_buffer_pool_read_requests(逻辑读请求数)和 Innodb_buffer_pool_reads(物理读次数)。重启后观察它们的比值:理想情况下,Innodb_buffer_pool_reads 应快速收敛至低位,且 Innodb_buffer_pool_read_requests / Innodb_buffer_pool_reads 比值迅速回升至 95%+。
- 如果
Innodb_buffer_pool_reads居高不下,说明页面没真正加载进来,或加载后被快速淘汰(比如 LRU old 区太小、innodb_old_blocks_pct设置不合理) -
information_schema.INNODB_BUFFER_POOL_STATS中的pages_data和pages_free可辅助判断加载量是否符合预期 - 不要迷信“文件存在”或“状态显示 Loading”,最终要看 I/O 统计——这才是唯一真实反馈











