Spec-Zone.ru › MySQL 5.7

14.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
    

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

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

  • Распространение приложения 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/innodb-read-only-instance.html

Spec-Zone.ru

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