Spec-Zone.ru › MySQL 8.4

17.8.3.6 Сохранение и восстановление состояния буфера пула

Для уменьшения периода после перезапуска сервера, InnoDB сохраняет процент наиболее часто используемых страниц для каждого буфера пула при выключении сервера и восстанавливает эти страницы при запуске сервера. Процент недавно используемых страниц, который сохраняется, определяется параметром конфигурации innodb_buffer_pool_dump_pct.

После перезапуска загруженного сервера обычно наблюдается период прогрева с постоянно увеличивающейся пропускной способностью, так как страницы дисков, которые находились в буфере пула, возвращаются в память (поскольку одни и те же данные запрашиваются, обновляются и т. д.). Возможность восстановления буфера пула при запуске сокращает период прогрева, перезагружая страницы дисков, которые находились в буфере пула до перезапуска, а не ожидая операций DML для доступа к соответствующим строкам. Кроме того, запросы ввода-вывода могут выполняться большими пакетами, что делает общий ввод-вывод быстрее. Загрузка страниц происходит в фоновом режиме и не задерживает запуск базы данных.

В дополнение к сохранению состояния буфера пула при выключении и восстановлению его при запуске, вы можете сохранять и восстанавливать состояние буфера пула в любое время, когда сервер работает. Например, вы можете сохранить состояние буфера пула после достижения стабильной пропускной способности при устойчивой рабочей нагрузке. Вы также можете восстановить предыдущее состояние буфера пула после выполнения отчетов или задач обслуживания, которые загружают страницы данных в буфер пула, которые необходимы только для этих операций, или после выполнения какой-либо другой нетипичной рабочей нагрузки.

Несмотря на то, что размер буфера пула может составлять несколько гигабайт, данные буфера пула, которые InnoDB сохраняет на диске, по сравнению с ними ничтожно малы. На диск сохраняются только идентификаторы табличного пространства и идентификаторы страниц, необходимые для поиска соответствующих страниц. Эта информация получена из таблицы INNODB_BUFFER_PAGE_LRU INFORMATION_SCHEMA. По умолчанию данные идентификаторов табличного пространства и идентификаторов страниц сохраняются в файле с именем ib_buffer_pool, который сохраняется в каталоге данных InnoDB. Имя и расположение файла можно изменить с помощью параметра конфигурации innodb_buffer_pool_filename.

Поскольку данные кешируются в буфере пула и выводятся из него по мере выполнения обычных операций с базой данных, нет проблем, если страницы дисков недавно обновлялись или если операция DML включает данные, которые еще не загрузились. Механизм загрузки пропускает запрошенные страницы, которые больше не существуют.

Основной механизм включает фоновый поток, который отправляется для выполнения операций дампинга и загрузки.

Страницы дисков из сжатых таблиц загружаются в буфер пула в сжатом виде. Страницы распаковываются обычным образом, когда содержимое страниц обращается во время операций DML. Поскольку распаковка страниц является процессом, интенсивно использующим ЦП, для одновременного выполнения операций более эффективно использовать поток соединения, а не единственный поток, выполняющий операцию восстановления буфера пула.

Операции, связанные с сохранением и восстановлением состояния буфера пула, описаны в следующих разделах:

  • Настройка процента дампинга для страниц буфера пула

  • Сохранение состояния буфера пула при выключении и восстановление его при запуске

  • Сохранение и восстановление состояния буфера пула онлайн

  • Отображение прогресса дампинга буфера пула

  • Отображение прогресса загрузки буфера пула

  • Прерывание операции загрузки буфера пула

  • Мониторинг прогресса загрузки буфера пула с помощью Performance Schema

Настройка процента дампинга для страниц буфера пула

Перед дампингом страниц из буфера пула вы можете настроить процент наиболее часто используемых страниц буфера пула, которые вы хотите сохранить, задав параметр innodb_buffer_pool_dump_pct. Если вы планируете сохранять страницы буфера пула во время работы сервера, вы можете динамически настроить этот параметр:

SET GLOBAL innodb_buffer_pool_dump_pct=40;

Если вы планируете сохранять страницы буфера пула при выключении сервера, установите innodb_buffer_pool_dump_pct в вашем конфигурационном файле.

[mysqld]
innodb_buffer_pool_dump_pct=40

Значение по умолчанию для innodb_buffer_pool_dump_pct составляет 25 (сохранить 25% наиболее часто используемых страниц).

Сохранение состояния буфера пула при выключении и восстановление его при запуске

Для сохранения состояния буфера пула при выключении сервера выполните следующее утверждение перед выключением сервера:

SET GLOBAL innodb_buffer_pool_dump_at_shutdown=ON;

innodb_buffer_pool_dump_at_shutdown включен по умолчанию.

Для восстановления состояния буфера пула при запуске сервера укажите параметр --innodb-buffer-pool-load-at-startup при запуске сервера:

mysqld --innodb-buffer-pool-load-at-startup=ON;

innodb_buffer_pool_load_at_startup включен по умолчанию.

Сохранение и восстановление состояния буфера пула онлайн

Для сохранения состояния буфера пула во время работы сервера MySQL выполните следующее утверждение:

SET GLOBAL innodb_buffer_pool_dump_now=ON;

Для восстановления состояния буфера пула во время работы MySQL выполните следующее утверждение:

SET GLOBAL innodb_buffer_pool_load_now=ON;
Отображение прогресса дампинга буфера пула

Для отображения прогресса при сохранении состояния буфера пула на диск выполните следующее утверждение:

SHOW STATUS LIKE 'Innodb_buffer_pool_dump_status';

Если операция еще не началась, возвращается «не начато». Если операция завершена, отображается время завершения (например, завершено в 110505 12:18:02). Если операция выполняется, предоставляется информация о статусе (например, дампинг буфера пула 5/7, страница 237/2873).

Отображение прогресса загрузки буфера пула

Для отображения прогресса при загрузке буфера пула выполните следующее утверждение:

SHOW STATUS LIKE 'Innodb_buffer_pool_load_status';

Если операция еще не началась, возвращается «не начато». Если операция завершена, отображается время завершения (например, завершено в 110505 12:23:24). Если операция выполняется, предоставляется информация о статусе (например, загружено 123/22301 страниц).

Прерывание операции загрузки буфера пула

Для прерывания операции загрузки буфера пула выполните следующее утверждение:

SET GLOBAL innodb_buffer_pool_load_abort=ON;
END_OF_DOCUMENT_MARKER
Мониторинг прогресса загрузки буфера пула с помощью Performance Schema

Вы можете отслеживать прогресс загрузки буфера пула с помощью Performance Schema.

Следующий пример демонстрирует, как включить инструмент событий стадии stage/innodb/buffer pool load и связанные таблицы потребителей для мониторинга прогресса загрузки буфера пула.

Для получения информации о процедурах дампинга и загрузки буфера пула, используемых в этом примере, см. Раздел 17.8.3.6, «Сохранение и восстановление состояния буфера пула». Для получения информации об инструментах событий стадии Performance Schema и связанных потребителях см. Раздел 29.12.5, «Таблицы событий стадии Performance Schema».

  1. Включить инструмент stage/innodb/buffer pool load:

    mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' 
           WHERE NAME LIKE 'stage/innodb/buffer%';
    
  2. Включить таблицы потребителей событий стадии, которые включают events_stages_current, events_stages_history и events_stages_history_long.

    mysql> UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' 
           WHERE NAME LIKE '%stages%';
    
  3. Сделать дамп текущего состояния буфера пула, включив innodb_buffer_pool_dump_now.

    mysql> SET GLOBAL innodb_buffer_pool_dump_now=ON;
    
  4. Проверьте статус дампа буфера пула, чтобы убедиться, что операция завершена.

    mysql> SHOW STATUS LIKE 'Innodb_buffer_pool_dump_status'\G
    *************************** 1. row ***************************
    Variable_name: Innodb_buffer_pool_dump_status
            Value: Buffer pool(s) dump completed at 150202 16:38:58
    
  5. Загрузить буфер пул, включив innodb_buffer_pool_load_now:

    mysql> SET GLOBAL innodb_buffer_pool_load_now=ON;
    
  6. Проверьте текущий статус операции загрузки буфера пула, запросив таблицу Performance Schema events_stages_current. Столбец WORK_COMPLETED показывает количество загруженных страниц буфера пула. Столбец WORK_ESTIMATED предоставляет оценку оставшейся работы в страницах.

    mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED
           FROM performance_schema.events_stages_current;
    +-------------------------------+----------------+----------------+
    | EVENT_NAME                    | WORK_COMPLETED | WORK_ESTIMATED |
    +-------------------------------+----------------+----------------+
    | stage/innodb/buffer pool load |           5353 |           7167 |
    +-------------------------------+----------------+----------------+
    

    Таблица events_stages_current возвращает пустой результат, если операция загрузки буфера пула завершена. В этом случае вы можете проверить таблицу events_stages_history для просмотра данных завершенного события. Например:

    mysql> SELECT EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED 
           FROM performance_schema.events_stages_history;
    +-------------------------------+----------------+----------------+
    | EVENT_NAME                    | WORK_COMPLETED | WORK_ESTIMATED |
    +-------------------------------+----------------+----------------+
    | stage/innodb/buffer pool load |           7167 |           7167 |
    +-------------------------------+----------------+----------------+
    
Примечание

Вы также можете отслеживать прогресс загрузки буфера пула с помощью Performance Schema при загрузке буфера пула при запуске, используя innodb_buffer_pool_load_at_startup. В этом случае, инструмент stage/innodb/buffer pool load и связанные потребители должны быть включены при запуске. Для получения дополнительной информации см. Раздел 29.3, «Настройка Performance Schema при запуске».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-preload-buffer-pool.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API