mysql-5.7 saving and restore buffer pool state 详解

一、mysql 重启要面临的问题

  由于重启后之前innodb buffer pool中缓存的数据就都没有了,如果这个时候业务SQL来临,mysql就只能是从磁盘中

  读取数据到内存;可能要经过数个小时的时间内存中的数据才能是业务频繁要用的。行业中把这个内存从什么都没有

  到内存中都是热数据的这个过程叫作预热。可见在预热这个过程中数据库的性能是不怎么好的,对于内存(innodb buffer pool)

  越大的库预热的时间就越长

 

二、解决问题的思路

  说起来这个解决方法也是简单粗暴,方法就是mysql在正常关闭时把当前内存中页面信息(tableSpaceId,pageId),保存到磁盘;

  等到mysql启动的时候就根据之前保存的信息把磁盘中的数据加载到innodb buffer pool;

 

三、如何配置:

  前面讲解“解决问题的思路”的时候,提到了两个过程一个是关闭时保存,一下个启动时恢复,这个两过程各自对应着一个配置

  参数,还有一个参数就是用来控制innodb buffer pool中那些页面要被“保存”,“恢复” 这个是通过一个百分比控制的,这个也

  对应着一个参数

[mysqld]
#--------innodb buffer pool state
innodb_buffer_pool_dump_pct                     =25                         #指定innodb buffer pool 中要被保存|恢复的页面的百分比 
innodb_buffer_pool_dump_at_shutdown             =ON                         #指定是否启动关闭时保存信息这个工能
innodb_buffer_pool_load_at_startup              =ON                         #指定是否启用启动时恢复这个功能

 

四、对innodb_buffer_pool_dump_pct 的说明:

  innodb buffer pool 内部是由列表组织的,配置成25就是说列表中前面的那25%的页面要在关闭时保存它们的元信息(tablespaceid,pageid)

  这个的“前”是指的innodb buffer pool中的new 列表;关于innodb buffer pool的列表组织方式可以看我的另一个博客

  http://www.cnblogs.com/JiangLe/p/7392421.html

   

 

----

学习交流

 

posted on 2017-09-10 16:49 蒋乐兴的技术随笔 阅读(...) 评论(...) 编辑 收藏

导航

公告