寻觅生命中的那一片浅草......

启动MySQL时预热buffer_pool

MySQL5.6加入了一个把buffer_pool dump到磁盘的功能,加快MySQL重启后,数据的预热速度,我们用的Percona Server 5.5也加入了这个功能主要有以下几点:

  • 只dump页表的号码到磁盘,而不是数据 ,所以,即使你buffer_pool很大,实际dump出来的数据很小,文件存放在MySQL的数据目录
  • 可以设置固定时间间隔自动dump
  • 设置关闭时自动dump,开启时自动restore
  • innodb_buffer_pool_restore_at_startup=600,每10分钟保存buffer_pool到磁盘,这个只是保存了磁盘上数据的索引,并不是真正的数据,否则这个文件会非常大
  • innodb_blocking_buffer_pool_restore=1,在MySQL启动时,阻塞启动过程,直到buffer_pool预热后才通知系统已经启动成功
#!/bin/bash

# change online  
mysql -uroot -pxxx <<EOF
set @@global.innodb_buffer_pool_restore_at_startup=600;
select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_LRU_DUMP*/;
EOF

手动dump和restore

可以在MySQL启动后,select一个表的数据,然后查看buffer pool的page数量,手动把buffer pool dump到磁盘,再重启MySQL,看它是否会restore

一些命令:

# 查看buffer pool的数据大小
show status like 'innodb_buffer_pool_pages_data';
# 手动dump
select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_LRU_DUMP*/;
#手动restore
select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA
2024年四月
« 5月    
1234567
891011121314
15161718192021
22232425262728
2930