SET_MODE_READONLY

Содержание раздела
  1. Синтаксис
  2. Варианты ответа
  3. Результат выполнения
    1. Включение режима
    2. Выключение режима
  4. Ограничения
  5. Примеры
    1. Включение режима «Только для чтения»
    2. Выключение режима «Только для чтения»

Поддерживается в версиях: 7.5.

В зависимости от параметров запрос включает или выключает режим «Только для чтения» во всех логических БД окружения на всех нодах кластера.

При включении режима «Только для чтения» запрос может игнорировать или отменить незавершенные операции записи. Подробнее см. в секции Синтаксис.

Синтаксис

SET_MODE_READONLY(enable_mode[, erase_running_write_ops])

Параметры:

enable_mode

Флаг, управляющий режимом «Только для чтения». Возможные значения:

  • true — включить режим;
  • false — выключить режим, вернув кластер в штатную работу.
erase_running_write_ops

Флаг, управляющий отменой выполняемых операций записистатусе 0) при включении режима «Только для чтения». Возможные значения:

  • false (по умолчанию) — игнорировать операции, не отменяя их, и сразу вернуть ответ;
  • true — отменить операции и вернуть ответ только после завершения отмены.

После выполнения SET_MODE_READONLY(true[, false]) убедитесь, что все операции записи завершены (GET_WRITE_OPERATIONS возвращает пустой ответ). Если есть незавершенные операции, дождитесь их завершения или отмените их командой ERASE_WRITE_OPERATION.

Варианты ответа

В ответе возвращается:

  • пустой объект ResultSet при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

Результат выполнения

Включение режима

При успешном включении режима «Только для чтения» запрос:

  1. Устанавливает запрет на новые DDL-операции (кроме DDL для внешних таблиц, временных прокси-таблиц и standalone-таблиц) и операции записи.
  2. Если запущен с флагом отмены выполняемых операций записи:
    1. Запускает отмену операций записи и дожидается завершения процесса в течение DELTA_ROLLBACK_OPERATIONS_TIMEOUT_MS.
    2. Если в процессе сменился лидер кластера, новый лидер автоматически завершает включение режима и отмену операций.
    3. Если операции не успели отмениться за DELTA_ROLLBACK_OPERATIONS_TIMEOUT_MS, исполнение завершается с ошибкой.
  3. Возвращает ответ.

Выключение режима

При успешном выключении режима «Только для чтения» запрос:

  1. Снимает запрет на новые DDL-операции и операции записи.
  2. Возвращает ответ.

Ограничения

  • Выключение режима недоступно, пока предыдущий запрос включает режим с отменой операций записи.
  • Запрос, отменяющий операции записи:
    • не гарантирует консистентность данных при отмене операций загрузки данных из Kafka в ADB;
    • завершается неуспешно, если операции записи не удалось отменить в течение DELTA_ROLLBACK_OPERATIONS_TIMEOUT_MS. В этом случае дождитесь завершения отмены операций и повторите команду.

Примеры

Включение режима «Только для чтения»

Включение режима «Только для чтения» для кластера без отмены выполняемых операций записи:

SET_MODE_READONLY(true);

-- равносилен запросу
SET_MODE_READONLY(true, false);

Включение режима «Только для чтения» для кластера с отменой выполняемых операций записи:

SET_MODE_READONLY(true, true)

Выключение режима «Только для чтения»

SET_MODE_READONLY(false)