14.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
Сценарии использования
Этот режим работы подходит в таких ситуациях, как:
Распространение приложения MySQL или набора данных MySQL на носителе только для чтения, таком как DVD или CD.
Несколько экземпляров MySQL, одновременно запрашивающих одну и ту же директорию данных, обычно в конфигурации хранилища данных. Вы можете использовать эту технику, чтобы избежать , которые могут возникнуть при работе с сильно загруженным экземпляром MySQL, или вы можете использовать различные параметры конфигурации для разных экземпляров, чтобы настроить каждый из них для определенных типов запросов.
Выполнение запросов к данным, которые были переведены в режим только для чтения по соображениям безопасности или целостности данных, например, к данным архивированных резервных копий.
Эта функция предназначена в основном для гибкости в распределении и развертывании, а не для прямой производительности на основе аспекта только для чтения. См. Раздел 8.5.3, «Оптимизация транзакций InnoDB только для чтения» для способов настройки производительности запросов только для чтения, которые не требуют перевода всего сервера в режим только для чтения.
Как это работает
При работе сервера в режиме только для чтения с помощью параметра --innodb-read-only определенные InnoDB функции и компоненты уменьшаются или полностью отключаются:
Не производится , в частности, нет слияний из буфера изменений. Чтобы убедиться, что буфер изменений пуст при подготовке экземпляра для работы в режиме только для чтения, отключите буферизацию изменений (
innodb_change_buffering=0) и выполните сначала.На этапе запуска нет . Экземпляр должен был выполнить перед переходом в режим только для чтения.
Поскольку не используется в режиме только для чтения, вы можете установить
innodb_log_file_sizeна минимально возможный размер (1 МБ) перед переходом экземпляра в режим только для чтения.Большинство фоновых потоков выключены. Остаются потоки чтения Ввода/Вывода, а также потоки записи Ввода/Вывода и поток очистки страниц для записи в временные файлы, которые разрешены в режиме только для чтения.
Информация о тупиках, мониторинг вывода и т. д. не записываются во временные файлы. В результате
SHOW ENGINE INNODB STATUSне генерирует вывод.Если сервер MySQL запускается с
--innodb-read-only, но директория данных по-прежнему находится на записываемом носителе, пользователь root по-прежнему может выполнять операции, такие какGRANTиREVOKE.Изменения параметров конфигурации, которые обычно изменяют поведение операций записи, не оказывают никакого влияния, когда сервер работает в режиме только для чтения.
Обработка для принудительного выполнения отключена. Все запросы считывают последнюю версию записи, потому что обновления и удаления невозможны.
не используется. Отключите все настройки для параметров конфигурации
innodb_undo_tablespacesиinnodb_undo_directory.
© 2025 Oracle
Licensed under the GPLv2 License.