Mysql 快速预热InnoDB Buffer_Pool缓冲池

数据库的buffer pool中的数据重启后,会丢失。因此,再次启动后,需要重新通过应用对数据库的访问,逐渐加载到buffer pool中。这个过程称为数据库预热。如果库较大,该过程花费时间较长,期间应用的性能也受到影响。
查看当前buffer pool 使用情况 show global status like '%innodb_buffer_pool_bytes%';

MySQL 5.6中,可以将buffer pool的内容(文件页的索引)dump到文件中,然后快速load到buffer pool中。避免了数据库的预热过程,提高了应用访问的性能。

mysql> show variables like 'innodb_buffer%';
+-------------------------------------+----------------+
| Variable_name                       | Value          |
+-------------------------------------+----------------+
| innodb_buffer_pool_dump_at_shutdown | OFF            |
| innodb_buffer_pool_dump_now         | OFF            |
| innodb_buffer_pool_filename         | ib_buffer_pool |
| innodb_buffer_pool_load_at_startup  | OFF            |
| innodb_buffer_pool_load_now         | OFF            |
+-------------------------------------+----------------+


运行时dump缓冲池 在命令行执行

运行时dump缓冲池
set global innodb_buffer_pool_dump_now = ON;

运行时load缓冲池
set global innodb_buffer_pool_load_now = ON;


永久修改 在my.cnf 添加

innodb_buffer_pool_dump_at_shutdown = ON  # 关闭时dump缓冲池
innodb_buffer_pool_load_at_startup  = ON  # 启动时load缓冲池
 
innodb_buffer_pool_filename = <path\to\file> # 设置记录缓冲池页块的文件  默认为 ib_buffer_pool


方法二 使用脚本预热

#!/bin/bash
# description: Mysql data preheat. All tables loaded InnoDB Buffer Pool

MYSQL_USER='root'
MYSQL_PWD='password'
MYSQL_HOST='127.0.0.1'
MYSQL_PORT='3306'
MYSQL_DB='powl22'
MYSQL_CONN="/usr/bin/mysql -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"
MYSQL_TABLES=`${MYSQL_CONN} -e "show tables from ${MYSQL_DB};" 2>/dev/null | sed '1d'`

for i in ${MYSQL_TABLES}
do
  ${MYSQL_CONN} -e "select * from ${MYSQL_DB}.$i limit 1;" >/dev/null  2>&1
  ${MYSQL_CONN} -e "select count(*) from ${MYSQL_DB}.$i;" >/dev/null  2>&1

done


方法三

my.cnf 加入init-file=/mysql/init.sql ,在每次mysql重启的时候就自动执行这个预热的sql  当然了 sql是要我们自己生成的哦

转载于:https://my.oschina.net/direnjie/blog/552717

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值