Spec-Zone.ru › MySQL 9.2

17.8.2 Настройка InnoDB для работы в режиме только для чтения

Вы можете выполнять запросы к таблицам InnoDB, где каталог данных MySQL находится на носителе только для чтения, включив параметр конфигурации --innodb-read-only при запуске сервера.

Как включить

Чтобы подготовить экземпляр для работы в режиме только для чтения, убедитесь, что вся необходимая информация записана в файлы данных до их размещения на носителе только для чтения. Запустите сервер с отключённым буферированием изменений (innodb_change_buffering=0) и выполните .

Чтобы включить режим только для чтения для всего экземпляра MySQL, укажите следующие параметры конфигурации при запуске сервера:

  • --innodb-read-only=1

  • Если экземпляр находится на носителе только для чтения, таком как DVD или CD, или каталог /var недоступен для записи всем пользователям: --pid-file=path_on_writeable_media и --event-scheduler=disabled

  • --innodb-temp-data-file-path. Этот параметр задаёт путь, имя файла и размер файла для данных временного табличного пространства InnoDB. Значение по умолчанию - ibtmp1:12M:autoextend, что создаёт файл данных временного табличного пространства ibtmp1 в каталоге данных. Чтобы подготовить экземпляр для работы в режиме только для чтения, установите innodb_temp_data_file_path в местоположение вне каталога данных. Путь должен быть относительным к каталогу данных. Например:

    --innodb-temp-data-file-path=../../../tmp/ibtmp1:12M:autoextend
    

Включение innodb_read_only предотвращает создание и удаление таблиц для всех типов хранилищ данных. Эти операции изменяют таблицы словаря данных в базе данных системы mysql, но эти таблицы используют тип хранилища данных InnoDB и не могут быть изменены, когда innodb_read_only включён. То же ограничение применяется к любой операции, изменяющей таблицы словаря данных, такой как ANALYZE TABLE и ALTER TABLE tbl_name ENGINE=engine_name.

Кроме того, другие таблицы в базе данных системы mysql в MySQL 9.2 используют тип хранилища данных InnoDB. Делание этих таблиц только для чтения приводит к ограничениям на операции, которые их изменяют. Например, операции CREATE USER, GRANT, REVOKE и INSTALL PLUGIN запрещены в режиме только для чтения.

Сценарии использования

Этот режим работы подходит в таких ситуациях:

  • Распространение приложения MySQL или набора данных MySQL на носителе только для чтения, таком как DVD или CD.

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

  • Выполнение запросов к данным, которые были переведены в режим только для чтения по соображениям безопасности или целостности данных, например, к данным архивированных резервных копий.

Примечание

Эта функция в основном предназначена для гибкости в распространении и развертывании, а не для непосредственного повышения производительности, основанной на аспекте только для чтения. См. Раздел 10.5.3, «Оптимизация транзакций InnoDB только для чтения», чтобы узнать, как настроить производительность запросов только для чтения, которые не требуют перевода всего сервера в режим только для чтения.

Как это работает

При запуске сервера в режиме только для чтения с помощью параметра --innodb-read-only, определённые InnoDB функции и компоненты либо снижены, либо полностью отключены:

  • Не производится , в частности, не происходит слияние из буфера изменений. Чтобы убедиться, что буфер изменений пуст при подготовке экземпляра для работы в режиме только для чтения, отключите буферирование изменений (innodb_change_buffering=0) и выполните сначала.

  • В процессе запуска отсутствует фаза. Экземпляр должен был выполнить перед переходом в режим только для чтения.

  • Поскольку не используется в режиме только для чтения, вы можете установить innodb_log_file_size на минимально возможный размер (1 МБ) перед переходом в режим только для чтения.

  • Большинство фоновых потоков отключены. Остаются потоки чтения ввода-вывода, а также потоки записи ввода-вывода и координирующий поток сброса страниц для записи во временные файлы, которые разрешены в режиме только для чтения. Также активен поток изменения размера буфера пула, чтобы позволить онлайн-изменение размера буфера пула.

  • Информация о тупиках, выходные данные монитора и т. д. не записываются во временные файлы. В результате, SHOW ENGINE INNODB STATUS не выводит никаких результатов.

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

  • Обработка для принуждения к отключена. Все запросы считывают последнюю версию записи, так как обновления и удаления невозможны.

  • не используется. Отключите любые настройки для параметров конфигурации innodb_undo_tablespaces и innodb_undo_directory.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/innodb-read-only-instance.html

Spec-Zone.ru

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