MySQL启停要十分钟?

news/2024/11/29 0:44:52/

一、问题背景

基础环境:

  • 主机类型:x3850 X6

  • 操作系统:DB:Red Hat Enterprise Linux 9.1 7.8

  • 存储:IBM存储,500GB

  • 内存:64 G

  • CPU型号:E7-4830 v3 @ 2.10GHz

  • CPU核数:32CORE

  • 数据库环境:8.0.27

问题现象:

测试环境数据库启停耗时较长。

说明:

测试环境有一套MySQL数据库给开发同事使用,某天开发小哥让协助启停一下数据库,发现MySQL启停的时候非常慢。

这场面见得还真不多,带着疑问,一探究竟。

二、一探究竟
 

MySQL启停加载热数据的相关参数:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

mysql> show variables like 'innodb_buffer_pool_dump%';

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

|  Variable_name                       | Value |

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

|innodb_buffer_pool_dump_at_shutdown | ON    |

| innodb_buffer_pool_dump_now         | OFF   |

|innodb_buffer_pool_dump_pct         | 25    |

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

rows in set (0.00 sec) 

mysql> show variables like 'innodb_buffer_pool_load%';

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

| Variable_name                      |

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

| innodb_buffer_pool_load_abort      | OFF   |

|innodb_buffer_pool_load_at_startup | ON    |

| innodb_buffer_pool_load_now        | OFF   |

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

rows in set (0.01 sec)    

解释:

innodb_buffer_pool_dump_at_shutdown = 1  #在关闭时把热数据dump到本地磁盘。

innodb_buffer_pool_dump_now = 1  #采用手工方式把热数据dump到本地磁盘。

innodb_buffer_pool_dump_pct  #指定每个缓冲池最近使用的页面读取和转储的百分比。范围是1到100。默认值是25。例如,如果有4个缓冲池,每个缓冲池有100个page,并且innodb_buffer_pool_dump_pct设置为25,则dump每个缓冲池中最近使用的25个page。

innodb_buffer_pool_load_abort  #是否要中止缓冲池加载操作,默认是关闭的

innodb_buffer_pool_load_at_startup = 1  #在启动时把热数据加载到内存。

innodb_buffer_pool_load_now = 1  #采用手工方式把热数据加载到内存。

  

MySQL关闭时,会把内存中的热数据保存在磁盘里ib_buffer_pool文件中,此文件位于redo日志存放的路径innodb_log_group_home_dir数据目录下。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

mysql> show variables like '%buffer_pool%';

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

| Variable_name                       | Value          |

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

| innodb_buffer_pool_chunk_size       | 134217728      |

| innodb_buffer_pool_dump_at_shutdown | ON             |

| innodb_buffer_pool_dump_now         | OFF            |

| innodb_buffer_pool_dump_pct         | 25             |

| innodb_buffer_pool_filename         | ib_buffer_pool |  #此文件

| innodb_buffer_pool_in_core_file     | ON             |

| innodb_buffer_pool_instances        | 1              |

| innodb_buffer_pool_load_abort       | OFF            |

| innodb_buffer_pool_load_at_startup  | ON             |

| innodb_buffer_pool_load_now         | OFF            |

| innodb_buffer_pool_size             | 134217728      |

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

 

MySQL启动时,会自动加载热数据到Buffer_Pool缓冲池里。

1

2

3

4

5

6

7

8

查看加载时间

mysql> SHOW STATUS LIKE 'Innodb_buffer_pool_load_status';

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

| Variable_name                  | Value                                            |

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

| Innodb_buffer_pool_load_status | Buffer pool(s) load completed at 230227 15:32:13 |

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

1 row in set (0.00 sec)

 

改成手动加载热数据

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

手动进行加载:

mysql> show variables like 'innodb_buffer_pool_dump%';

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

| Variable_name                       | Value |

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

| innodb_buffer_pool_dump_at_shutdown | ON    |

| innodb_buffer_pool_dump_now         | OFF   |

| innodb_buffer_pool_dump_pct         | 25    |

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

rows in set (0.01 sec)

mysql> show variables like 'innodb_buffer_pool_load%';

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

| Variable_name                      | Value |

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

| innodb_buffer_pool_load_abort      | OFF   |

| innodb_buffer_pool_load_at_startup | OFF   |

| innodb_buffer_pool_load_now        | OFF   |

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

rows in set (0.01 sec)

查看执行状态:没有进行加载

mysql> SHOW STATUS LIKE 'Innodb_buffer_pool_load_status';

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

| Variable_name                  | Value                              |

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

| Innodb_buffer_pool_load_status | Loading of buffer pool not started |

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

1 row in set (0.00 sec)

  

手动进行加载:

1

2

3

4

5

6

7

8

9

10

mysql> set global innodb_buffer_pool_load_now=1;

Query OK, 0 rows affected (0.00 sec)

mysql> SHOW STATUS LIKE 'Innodb_buffer_pool_load_status';

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

| Variable_name                  | Value                                            |

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

| Innodb_buffer_pool_load_status | Buffer pool(s) load completed at 230227 15:59:58 |

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

1 row in set (0.00 sec)

  

这样,始终保持热数据在内存中。

MySQL服务正常关闭,热数据会dump到内存。机器宕机或者kill mysql进程,热数据不会dump。

 


http://www.ppmy.cn/news/380342.html

相关文章

Python神经网络编程学习笔记

文章目录 神经网络基本原理线性分类器学习率一个线性分类器的局限性逻辑AND、逻辑OR逻辑XOR 神经元sigmoid function的logistic function(逻辑函数) 多层神经元演示只有两层,每层两个神经元的神经网络的工作矩阵大法(点乘)使用矩阵乘法的三层神经网络示例反向传播误…

总结一下一路开发邮件服务器遇到的事

这里写自定义目录标题 集成第三方做个邮件收发一直在正常发件一段时间后 集成第三方做个邮件收发 需求是很简单的,刚开始什么都很顺一下就开发完了,邮件收发很顺。 几个月后,遇到的第一个问题,邮件发不了错误号 526 Authenticati…

为什么年龄越大工作失误越多水平越低能力越差-个人案例

此为内容创作模板,在发布之前请将不必要的内容删除 在日复一日的工作中,我们免不了会产生一些失误,会因此感到沮丧和失望。但如何正确地对待和处理这些失误才是最重要的,它直接影响到我们的工作表现和个人成长。一起来谈谈作为职…

不愧是阿里大牛珍藏的“redis深度笔记(全彩版)”这细节讲解,神了

前言 说到 Redis 相信对于我们这些程序员来说太熟悉了,Redis 凭借着自己超高的超高的性能、完美的文档、简洁易懂的源码和丰富的客户端库支持,很快就在国内的互联网市场占据了一席之地,得到了广大用户的一致好评,随着国内外使用 …

昨天新买了一个耳麦,...

昨天新买了一个耳麦,罗技的,虽然罗技一向以鼠标著称,但这款耳机性能还不错,虽然线比较长,但背景噪声很小,音质也可以,我比较喜欢:),平时听音乐的时候我就戴上…

win10系统,主机箱的前置耳麦插孔用不了,“设置——声音”麦克风或者耳机已拔出未修复,“输入设备”无插座信息,更新驱动也无效,控制面板——小图标里查不到realtek高清晰音频管理器——一招解决

win10系统,有一天忽然固态硬盘坏了,拆了重装系统之后主机箱的前置耳麦插孔里,插了耳机只能听到声音,麦克风无效,微信语音电话打不出去了。 查了一圈,“设置——声音”显示:麦克风或者耳机已拔出…

w7运行里的计算机怎么设置,w7怎么设置耳麦_win7耳麦在电脑上怎么设置

相信现在还有许多用户在使用win7系统,尽管win7系统已经出了很长一段时间,还是有些用户不太清晰win7一些功能设置在哪。大家应该都有使用过耳机吧,那么w7怎么设置耳麦?有时候我们的讲话对方听到的声音很小,那可能是耳麦…

摄像头、麦克风、耳麦免费在线检测(各种外设的在线检测网站)

分享一个挺好玩的网站,可以在线监测摄像头、麦克风、耳麦等外设检测:https://webcammictest.com/ 也可点此超链接直达:Webcam Test 文章目录 一、摄像头检测1.镜子视角2.观察者视角3.摄像头信息检测 二、麦克风检测1.频率检测2.波长检测3.麦…