Режим «Только для чтения»
Содержание раздела
Система поддерживает сервисный режим работы «Только для чтения», блокирующий изменения логической схемы и данных на всех нодах кластера. Этот режим позволяет безопасно проводить техническое обслуживание системы и связанных компонентов.
Режим включается на уровне окружения или отдельной логической сущности. Если он включен, система отклоняет определенные запросы и возвращает ошибку. Остальные запросы и операции остаются доступны.
Уровни включения режима
Режим «Только для чтения» можно включить на уровне всего окружения или отдельной логической сущности (см. таблицу ниже).
| Уровень | Область действия | Ошибка при отклонении запроса |
|---|---|---|
| Окружение | Логические сущности* всех логических БД окружения | Environment is readonly |
| Логическая сущность | Указанная логическая сущность* |
|
* Список сущностей, для которых доступна блокировка изменений, см. в секции Что блокируется.
Уровни равнозначны и не зависят друг от друга:
- сущность доступна только для чтения, если режим «Только для чтения» включен для нее хотя бы на одном из уровней;
- сущность доступна в полном объеме, если режим выключен на обоих уровнях;
- порядок включения режима на уровнях не важен;
- включение и выключение режима на одном уровне не влияет на другой уровень.
Управление режимом
Режим включается и выключается запросами:
- SET_MODE_READONLY — на уровне окружения;
- SET_ENTITY_LOCK — на уровне сущности.
Что блокируется
На уровне окружения
В режиме «Только для чтения», включенном на уровне окружения, блокируются:
- операции по изменению схемы:
- создание, изменение и удаление следующих сущностей:
- довыполнение незавершенной операции повторным запуском DDL-запроса;
- операции с данными:
- загрузка и обновление данных логических таблиц и снапшот-таблиц;
- синхронизация материализованных представлений (включая SYNC_MATERIALIZED_VIEWS);
- BEGIN DELTA;
- управление статистикой:
На уровне логической сущности
В режиме «Только для чтения», включенном на уровне сущности, для нее блокируются:
- операции по изменению схемы**, задействующие сущность:
- изменение и удаление сущности;
- довыполнение незавершенной операции повторным запуском DDL-запроса;
- операции с данными:
- [для логической или снапшот-таблицы] загрузка и обновление данных сущности;
- [для материализованного представления] синхронизация сущности;
- управление статистикой:
* Операции по изменению схемы блокируются для логических, снапшот- и постоянных прокси-таблиц, а также логических и материализованных представлений.
Остальные сущности окружения остаются доступны для чтения и записи, если для них выключен режим «Только для чтения».
Что продолжает работать
В режиме «Только для чтения», включенном на любом из уровней, продолжают работать:
- DDL-операции создания, изменения и удаления:
- операции с данными:
- чтение и выгрузка данных из любых сущностей;
- загрузка и обновление данных прокси-таблиц и standalone-таблиц;
- управление операциями записи;
- отмена незавершенных операций по изменению схемы;
- управление дельтами:
- управление историей данных:
- управление запретами на изменение логических схем данных:
- восстановление данных:
- присоединение и отсоединение датасорсов.
Режим для партиционированных таблиц и партиций
Режим «Только для чтения» на уровне сущности включается отдельно для партиционированной таблицы и каждой ее партиции.
Режим, включенный только для партиционированной таблицы:
- блокирует DDL-операции для самой таблицы, но не для ее партиций;
- блокирует запись через таблицу, но не запись напрямую в ее партиции.
Режим, включенный только для некоторых или всех партиций партиционированной таблицы:
- блокирует DDL-операции для этих партиций, но не для их партиционированной таблицы или других партиций;
- блокирует запись в эти партиции и их партиционированную таблицу, но не в другие партиции той же таблицы.
Отмена выполняемых операций записи
При включении режима «Только для чтения» система может отменить выполняемые операции записи:
- [на уровне окружения] все операции окружения,
- [на уровне сущности] операции по этой сущности.
Если в запросе на включение режима установлен флаг отмены выполняемых операций, система:
- Дожидается завершения операций в статусе 1 (Подготовлена);
- Отменяет операции в статусе 0 (Выполняется). Ответ возвращается только после завершения отмены или по истечении тайм-аута
DELTA_ROLLBACK_OPERATIONS_TIMEOUT_MS.
Если во время отмены операций сменился лидер кластера, новый лидер автоматически завершает включение режима и отмену операций.
Если вы включаете режим без флага отмены операций, перед началом обслуживания системы дождитесь завершения всех операций записи или отмените их. Запрос GET_WRITE_OPERATIONS должен возвращать пустой ответ.