【问题标题】:What's the impact of innodb_buffer_pool_dump_now in Running MySQL Instance?innodb_buffer_pool_dump_now 对运行 MySQL 实例有什么影响?
【发布时间】:2021-04-13 05:13:08
【问题描述】:

参数innodb_buffer_pool_dump_now将最近最少使用的页面转储到文件ib_buffer_pool中。

并且参数innodb_buffer_pool_load_now将该文件再次恢复到缓冲池中。

问题是—— 每当我们在运行 MySQL 时运行以下命令时,后台会发生什么? 缓冲池的转储是否会阻塞所有其他连接? 缓冲池的转储是否会停止刷新脏页并保持该状态?

mysql> SET GLOBAL innodb_buffer_pool_dump_now=ON;
Query OK, 0 rows affected (0.00 sec)

同样: 当我们使用下面的命令在运行缓冲区中加载转储文件时,现有的缓冲池会发生什么? 它是否会删除已加载的页面并使用从文件中获取的页面? 阻止交易还是什么?

mysql> SET GLOBAL innodb_buffer_pool_load_now=ON;
Query OK, 0 rows affected (0.00 sec)

【问题讨论】:

    标签: mysql innodb bufferpool


    【解决方案1】:

    涉及到很多事情。

    警告:以下是我对正在发生的事情的解释;可能是错的。

    • “更改缓冲区”包含需要添加到索引块的索引信息。这通常在“后台”中完成。在中止的情况下,可以从日志中恢复信息。

    • “转储”buffer_pool”并不是听起来的那样——转储的只是指向每个块的指针。我认为这样的指针是 20 字节;将其与整个块的 16384 字节进行比较。重点是转储速度非常快。

    • 相应的“加载”可能会注意到大多数块已经存在并且只执行很少的 I/O。如果它没有完全加载您在转储之前拥有的内容,则不会造成任何伤害。它只是警告“缓存”。

    • 为了提供这些命令而违反事务完整性是 InnoDB 的疏忽。

    • “转储”旨在在正常关闭之前完成,然后在重新启动后进行“加载”。嗯...这对我来说,“负载”实际上可能不会在重启后的启动期间执行任何操作除了

    那么,你的意图是什么?您可能无法使用这些设置来实现它。

    有关其工作原理的更多详细信息,包括“指针”如何存储在磁盘上:https://mysqlserverteam.com/mysql-dumping-and-reloading-the-innodb-buffer-pool

    这指出了定期执行 dump_now 的优势:https://www.percona.com/blog/2016/11/30/using-innodb-buffer-pool-pre-load-feature-mysql-5-7/

    如果您需要关机,但要简短。

    -- before restart:
    SET GLOBAL innodb_max_dirty_pages_pct = 0;
    SET GLOBAL innodb_buffer_pool_dump_now=ON;
    -- after restart:
    SET GLOBAL innodb_buffer_pool_load_now=ON;
    

    例子:

    • 更改全局设置(并且没有 8.0 的持久设置)
    • 进行升级

    【讨论】:

    • 我的意图:我们知道缓冲池是有限的区域。所以当我们加载转储的数据时 -> 缓冲池中已经存在的数据会发生什么?全部标记为脏页并准备刷新?
    • @AmanAggarwal - 不。“脏”总是准确指示 buffer_pool 中的块是否与磁盘上的相应块匹配。我所指的“指针”将它们联系在一起。而且如果不先修改buffer_poll,就无法修改磁盘。这些设置 [我相信] 不允许您使用不同的 数据 加载缓冲池,只能使用不同的页面子集。 (后者有点粗略。)您是否要“回滚”?还是模拟“冷缓存”?还是回到历史?还是什么?
    • 我正在尝试了解这些参数的使用。如果我们加载已经转储的缓冲池 - 现有缓冲池会发生什么。我认为这是非常清楚的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 2019-12-25
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多