mysql预热缓冲池

在数据库压力很大的情况下,重启完数据库,通过手工执行下列语句,把热数据加载到innodb_buffer_pool缓冲池中进行预热,从而避免早高峰连接数升高,程序报错。

  

select  count(*) from user;

select  count(*) from ***;

......

在mysql5.6里为了解决上述问题,提供了一个新特性来快速预热buffer_pool缓冲池,只需在my.cnf中加入如下命令:

  

参数

注释


innodb_buffer_pool_dump_at_shutdown=1


关闭时dump热数据到本地磁盘


innodb_buffer_pool_dump_now=1


采用手工方式把热数据dump到本地磁盘


innodb_buffer_pool_load_at_start=1


在启动时把热数据加载到内存


innodb_buffer_pool_load_now=1


采用手工方式把热数据加载到内存

mysql>show variables like ‘innodb_buffer_pool%‘;

+-------------------------------------+----------------+

|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_instances        |8              |

|innodb_buffer_pool_load_abort       |OFF            |

|innodb_buffer_pool_load_at_startup  |OFF            |

| innodb_buffer_pool_load_now         | OFF            |

|innodb_buffer_pool_size             |786432000      |

+-------------------------------------+----------------+

8 rows inset (0.01 sec)

[[email protected]]# service mysql stop

Shuttingdown MySQL............                            [  OK  ]

[[email protected]]# cd mysql/

[[email protected]]# ll

......

-rw-rw----1 mysql mysql      3703 Aug  8 14:24 ib_buffer_pool

-rw-rw----1 mysql mysql 616562688 Aug  8 14:24ibdata1

-rw-rw----1 mysql mysql  50331648 Aug  8 14:24 ib_logfile0

-rw-rw----1 mysql mysql  50331648 Aug  8 14:20 ib_logfile1

......

[[email protected]]# tail -100f ../log/gflinux.err

2014-08-0814:24:32 16207 [Note] InnoDB: Starting shutdown...

2014-08-0814:24:32 62ad2b90 InnoDB: Dumping buffer pool(s) to .//ib_buffer_pool

2014-08-0814:24:32 62ad2b90 InnoDB: Buffer pool(s) dump completed at 140808 14:24:32

2014-08-0814:24:34 16207 [Note] InnoDB: Shutdown completed; log sequence number 27441703699

加载:

[[email protected]]# service mysql start

StartingMySQL....                                         [  OK  ]

[[email protected]]# tail -100f ../log/gflinux.err

......

2014-08-0814:28:13 16696 [Note] InnoDB: 128 rollback segment(s) are active.

2014-08-0814:28:13 16696 [Note] InnoDB: 5.6.17 started; log sequence number 27441703699

2014-08-0814:28:13 16696 [Note] Semi-sync replication initialized for transactions.

2014-08-0814:28:13 16696 [Note] Semi-sync replication enabled on the master.

2014-08-0814:28:13 62adab90 InnoDB: Loading buffer pool(s) from .//ib_buffer_pool

2014-08-0814:28:13 62adab90 InnoDB: Buffer pool(s) load completed at 140808 14:28:13

在关闭mysql时,会把内存中的热数据保存在磁盘的ib_buffer_pool文件中,该文件位于数据目录下。

在启动mysql时,会自动加载热数据到buffer_pool缓冲池里。

注意在正常关闭mysql服务或者pkill mysql时,才会把热数据从内存导出,机器宕机或者pkill -9 mysql是不会导出的。

注意:仅适用于mysql5.6以上版本。

时间: 2024-10-24 13:38:02

mysql预热缓冲池的相关文章

CentOS 6.9上安装Mysql 5.7.18 安装

下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 1.新建mysql用户,组: [[email protected] ~]# groupadd mysql [[email protected] ~]# useradd -g mysql -r -s /sbin/nologin -M -d /data/mysqldata mysql 2.新建数据目录及授权: [[e

Mysql InnDB 缓存池(Buffer Pool)

InnoDB通过在内存中维护缓存池(Buffer Pool)来对数据和索引进行缓存,从而提高数据库性能.了解Mysql内存缓冲池的原理,并针对性地进行调优,能够最大化其带来的性能优势. 通常,在保证服务器上其他应用程序有足够内存的情况下,可以给buffer pool分配尽可能多的内存空间.越大的buffer pool能够使mysql越能够像内存数据库一样提供服务.其大小通过innodb_buffer_pool_size配置.对于64 bit 机器,可以将buffer pool 配置为多个部分,以

MySQL InnoDB存储引擎

MySQL对应InnoDB版本 MySQL 5.1>InnoDB 1.0.X MySQL 5.5>InnoDB 1.1.X MySQL 5.6>InnoDB 1.2.X 后台线程 1.Master Thread 负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性:包括刷新脏页.合并插入缓冲.undo页的回收. 2.IO Thread innodb存储引擎中大量使用了AIO(Async IO)来处理写IO请求来提高数据库的并发性能,共有四类IO线程,分别是:insert buffer t

MySQL 大表在线DML神器--pt-online-schema-change

一个朋友问我在线对大表进行ddl操作,如何做能尽量避免主从延迟以及不影响在线dml操作呢?我想到一个开源的pt-online-schema-change工具,测试了吧,效果还可以. pt-online-schema-change原理 1.如果存在外键,根据alter-foreign-keys-method参数的值,检测外键相关的表,做相应设置的处理. 2.创建一个新的表,表结构为修改后的数据表,用于从源数据表向新表中导入数据. 3.创建触发器,用于记录从拷贝数据开始之后,对源数据表继续进行数据修

模拟优化参数optimizer_switch选项mrr(Multi_Range Read)对查询优化的影响

11.1背景:模拟优化参数optimizer_switch选项mrr(Multi_Range Read)对查询优化的影响 11.2建表语句 mysql> show create table order_line\G; *************************** 1. row *************************** Table: order_line Create Table: CREATE TABLE `order_line` ( `ol_o_id` int(11)

mysql5.7配置文件优化

[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql #log-error = /var/log/mysql/error.log # By default we only accept connections from localhost #bind-address = 127.0.0.1 # Disabling symbolic-l

游戏运维名词解释和经验之谈

游戏运维日常名词解释 开服: 即由运维部署一个新的服(即新的程序)后,由运营人员选择一个合适时间,对外开放一个新的服(即一个新的游戏区) 合服: 即在当游戏各个服的玩家减少的时候,为了增大玩家的数量,让他们在自已的区内能看到不同区的玩家 则我们把所有程序集中迁移到一个服,然后,把每个服(即程序)的数据导入到同一个服的数据库里面,称之为合服 迁服:即把我们的机器程序与数据库迁移到一台新的机器里面,称之为迁服 1.什么是运维?什么是游戏运维? 1)运维是指大型组织已经建立好的网络软硬件的维护,就是要

ElasticSearch中的JVM性能调优

ElasticSearch中的JVM性能调优 前一段时间被人问了个问题:在使用ES的过程中有没有做过什么JVM调优措施? 在我搭建ES集群过程中,参照important-settings官方文档来的,并没有对JVM参数做过多的调整.其实谈JVM配置参数,少不了操作系统层面上的一些配置参数,比如 page cache.同时ES进程需要打开大量文件,文件描述符的个数(/etc/security/limits.conf)也要配置得大一些.这里简要介绍一下关于ES JVM参数的配置: 将 xms 和 x

高频面试知识点总结,看看你能答对多少

开篇:题目答案总结并非标准,仅供参考,如果有错误或者更好的见解,欢迎留言讨论,往期公众号整理的一些面试题看这里:Java面试题内容聚合 事务 1.什么是事务?事务的特性(ACID) 什么是事务:事务是程序中一系列严密的操作,所有操作执行必须成功完成,否则在每个操作所做的更改将会被撤销,这也是事务的原子性(要么成功,要么失败). 事务特性分为四个:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持续性(Durability)简称ACID. 1.原子性: