17.8.2 Настройка InnoDB для работы в режиме только для чтения
Вы можете выполнять запросы к таблицам InnoDB, когда каталог данных MySQL находится на носителе только для чтения, включив параметр конфигурации --innodb-read-only при запуске сервера.
Как включить
Чтобы подготовить экземпляр для работы в режиме только для чтения, убедитесь, что вся необходимая информация записана в файлы данных перед размещением их на носителе только для чтения. Запустите сервер с отключенной буферизацией изменений (innodb_change_buffering=0) и выполните .
Чтобы включить режим только для чтения для всего экземпляра MySQL, укажите следующие параметры конфигурации при запуске сервера:
Если экземпляр находится на носителе только для чтения, таком как 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 8.4 используют движок хранения 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.