IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    启动MySQL时预热buffer_pool

    夜行人发表于 2015-10-17 15:29:51
    love 0

    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


沪ICP备19023445号-2号
友情链接