О присоединении и отсоединении датасорсов

Содержание раздела
  1. Возможности
  2. Сравнение с включением и отключением датасорсов
  3. Поддерживаемые типы датасорсов
  4. Список датасорсов хранилища
  5. Определение и переопределение параметров датасорса
  6. Этапы присоединения датасорса
    1. Добавление датасорса в список датасорсов хранилища
    2. Расширение логических БД на датасорс
    3. Расширение сущностей на датасорс
      1. Поддерживаемые сущности
      2. Поддерживаемые типы датасорсов
      3. Обновление метаинформации сущностей
      4. Создание физических таблиц
      5. Наполнение физических таблиц данными (ADP)
  7. Этапы отсоединения датасорса
  8. Обработка ошибок
  9. Ограничения

Система поддерживает динамическое изменение состава датасорсов в хранилище данных:

  • присоединение — добавление датасорса в хранилище;
  • отсоединение — удаление датасорса из хранилища.

Присоединение и отсоединение датасорсов выполняются без остановки кластера Prostore и запланированного окна обслуживания, что позволяет добавлять, удалять и заменять датасорсы штатно, сохраняя кластер доступным для записи и чтения.

Примеры сценариев использования:

  • расширение или уменьшение хранилища;
  • миграция данных на новое аппаратное обеспечение;
  • обслуживание СУБД (обновления, замена дисков и т.д.).

Возможности

Механизм присоединения и отсоединения позволяет:

Присоединение и отсоединение датасорсов регистрируется в журнале.

Сравнение с включением и отключением датасорсов

Присоединение и отсоединение датасорсов позволяют изменять состав хранилища, добавляя и удаляя датасорсы. В свою очередь включение и отключение датасорсов — часть механизма auto-failover и процесса восстановления датасорсов — управляют уже существующими в хранилище датасорсами.

При этом включение и выключение датасорса могут быть частью присоединения, если датасорс присоединяется с автоматическим созданием реплик сущностей.

Поддерживаемые типы датасорсов

Присоединение и отсоединение доступно для типов датасорсов, перечисленных в таблице ниже.

Операция Поддерживаемые типы датасорсов
Присоединение с созданием реплик сущностей ADP
Присоединение в остальных случаях Все
Отсоединение Все

Список датасорсов хранилища

Список датасорсов хранилища формируется из следующих элементов:

  • датасорсов, заданных в конфигурации нод кластера (за вычетом отсоединенных);
  • присоединенных датасорсов.

Определение и переопределение параметров датасорса

Параметры датасорса можно задать в любом из следующих источников:

Если параметры датасорса были впервые определены в конфигурации нод и требуется удалить их из конфигурации, сначала отсоедините датасорс от хранилища.

Параметры в запросе на присоединение датасорса:

  • могут отсутствовать, если уже заданы в конфигурации нод;
  • если указаны:
    • не могут переопределить параметры, заданные в конфигурации;
    • должны отсутствовать в конфигурации нод или полностью совпадать с ней.

Изменения параметров датасорсов в конфигурации применяются при запуске или перезапуске ноды. Изменения по присоединяемым и отсоединяемым датасорсам применяются сразу, без перезапуска нод.

Этапы присоединения датасорса

При присоединении датасорса система всегда добавляет его в список датасорсов хранилища. Дополнительно, в зависимости от параметров запроса на присоединение (см. таблицу ниже), система также может выполнить следующие действия:

В таблице ниже описано, как параметры запроса на присоединение датасорса влияют на выполняемые этапы присоединения.

logicalOnly datasourceDonor Выполняемые этапы
true Не задан
  • Добавление датасорса в список датасорсов хранилища
false Не задан
  • Добавление датасорса в список датасорсов хранилища;
  • Расширение логических БД на датасорс
true Задан
  • Добавление датасорса в список датасорсов хранилища;
  • Расширение сущностей на датасорс:
    • обновление метаинформации сущностей
false Задан
  • Добавление датасорса в список датасорсов хранилища;
  • Расширение логических БД на датасорс;
  • Расширение сущностей на датасорс:
    • обновление метаинформации сущностей;
    • создание физических таблиц в датасорсе;
    • [ADP] наполнение датасорса данными датасорса-донора

Для сущностей с опцией recover.mode.logical.only=true система создает физические таблицы (если предполагается запросом), но пропускает этап наполнения их данными.

Описание параметров запроса на присоединение датасорса см. в разделе HTTP API > Присоединение датасорса, шаги по присоединению — в разделе Как присоединить ADP-датасорс.

Добавление датасорса в список датасорсов хранилища

Запрос на присоединение датасорса добавляет датасорс в список датасорсов хранилища, размещенный в сервисной БД каждой ноды. Сначала список обновляется на лидерской ноде, затем распространяется на остальные.

Этот этап доступен для датасорсов любых типов и выполняется независимо от параметров запроса. Он достаточен для любых последующих действий с датасорсом: расширения на него сущностей, размещения в нем новых сущностей, восстановления и т.д.

Расширение логических БД на датасорс

При присоединении датасорса система может расширить на него логические БД окружения: обновить метаинформацию в сервисных БД нод и создать соответствующие физические схемы данных в датасорсе.

Этот этап доступен для датасорсов любых типов и выполняется, если запрос на присоединение датасорса содержит logicalOnly=false. Он может быть полезен, если датасорс присоединяется:

  • для хранения данных новых сущностей, которые будут созданы позже в текущих логических БД;
  • как реплика другого датасорса:

Расширение сущностей на датасорс

При присоединении датасорса система может расширить на него сущности логических БД:

Сущности расширяются на логическом уровне, если запрос на присоединение датасорса содержит datasourceDonor, на физическом уровне — если запрос также содержит logicalOnly=false.

Поддерживаемые сущности

Расширение доступно только для сущностей, которые размещены в датасорсе-доноре и поддерживают размещение в нескольких датасорсах:

Поддерживаемые типы датасорсов

Все этапы расширения сущностей, кроме наполнения датасорса данными, доступны для любых типов датасорсов.

Наполнение датасорса данными доступно при выполнении следующих условий:

  • присоединяемый датасорс имеет тип ADP;
  • датасорс-донор имеет тип ADP или ADB и уже является частью хранилища данных;
  • механизм auto-failover настроен и включен.

Обновление метаинформации сущностей

При присоединении датасорса система может расширить на него сущности на логическом уровне: обновить метаинформацию сущностей, добавив датасорс в списки их датасорсов.

Этот этап доступен для датасорсов любых типов и выполняется, если запрос на присоединение датасорса содержит datasourceDonor.

Датасорс, на который логически расширены сущности, должен содержать их реплики, полностью соответствующие репликам в остальных датасорсах. Реплики сущностей могут быть созданы системой или внешними средствами (например, средствами самой СУБД).

Retention-правила не расширяются на новый датасорс и остаются без изменений.

Создание физических таблиц

При присоединении датасорса система может расширить на него сущности на физическом уровне, создав в нем необходимые физические таблицы. Этап выполняется, если запрос на присоединение датасорса содержит datasourceDonor и logicalOnly=false.

Физические таблицы создаются для сущностей, логически расширенных на датасорс. Значения опции recover.mode.logical.only сущностей не учитывается.

Создаваемые таблицы соответствует донору с некоторыми исключениями, сохраняя:

  • свой набор, исключая таблицы для хранения холодных данных;
  • структуру;
  • внутренние связи с другими таблицами (при их наличии).

Наполнение физических таблиц данными (ADP)

При присоединении датасорса система может наполнить его данными и индексами, скопированными из датасорса-донора. Этап выполняется при одновременном соблюдении условий:

  • запрос на присоединение датасорса содержит datasourceDonor и logicalOnly=false;
  • присоединяемый датасорс — типа ADP;
  • датасорс-донор — типа ADP или ADB;
  • механизм auto-failover настроен и включен.

При других сочетаниях типов датасорсов этап пропускается, а датасорс остается в статусе «Отключен» (disabled).

Данными наполняются физические таблицы тех логически расширенных на датасорс сущностей, чья опция recover.mode.logical.only не задана или равна false. Из донора копируются следующие данные сущностей:

  • текущие данные;
  • изменения и история данных (при поддержке сущностью), кроме холодных данных;
  • индексы физических таблиц *_actual.

Процесс наполнения датасорса данными можно отследить с помощью GET_RECOVER_STATUS.

Этапы отсоединения датасорса

При отсоединении датасорса система:

  • удаляет его из списка датасорсов хранилища, который размещен в сервисных БД нод;
  • обновляет метаинформацию сущностей окружения, удаляя датасорс из списков их датасорсов.

При этом не удаляются:

  • параметры датасорса из конфигурации нод;
  • логические БД и сущности из датасорса;
  • настройки балансировки чтения и retention-правила, настроенные для датасорса.

Информация об отсоединении датасорса сначала обновляется на лидерской ноде, затем распространяется на остальные.

Перед отсоединением датасорса удалите retention-правила, в которых он участвует. Иначе правила будут вызывать ошибки в логах и не смогут быть удалены впоследствии. При удалении retention-правил также удалятся все холодные данные, накопленные по ним.

Если необходимо продолжать использовать сущность, последний датасорс которой был отсоединен, пересоздайте ее. Добавление датасорсов для такой сущности с помощью ALTER TABLE ADD DATASOURCE не поддерживается.

Обработка ошибок

Система делает повторные попытки завершить процесс, если ошибка возникла во время наполнения датасорса данными или копирования индексов, — уже после возврата успешного ответа на запрос присоединения. Периодичность и число попыток определяются параметрами RECOVER_RETRY_COUNT и AUTOFAILOVER_FAILED_RETRY_TIMEOUT_MS.

В остальных случаях при ошибках присоединения или отсоединения, включая смену лидера в кластере, необходимо вручную перезапустить процесс (см. Как присоединить датасорс и Как отсоединить датасорс).

Ограничения

  • Присоединение и отсоединение датасорсов недоступно по время выполнения DDL-операций в любых логических БД окружения и, наоборот, выполнение DDL-операций недоступно во время присоединения и отсоединения датасорсов.
  • Присоединение датасорсов:
    • Недоступно присоединение:
      • во время другого запроса на присоединение или отсоединение того же датасорса;
      • с параметрами, отличными от параметров из конфигурации нод;
      • уже присоединенного датасорса, в том числе с другими параметрами запроса.
    • Наполнение присоединяемого датасорса данными доступно при выполнении следующих условий:
      • присоединяемый датасорс имеет тип ADP;
      • датасорс-донор имеет тип ADP или ADB и уже является частью хранилища данных;
      • механизм auto-failover настроен и включен.
    • Возвращаемый результат присоединения датасорса может опережать фактическое завершение процесса, так как ответ возвращается до наполнения датасорса данными, которое выполняется асинхронно после ответа.
  • Отсоединение датасорсов:
    • Параметры датасорса не удаляются из конфигурации нод.
    • Сущности и их данные не удаляются из датасорса.
    • Не удаляются настройки балансировки чтения и retention-правила, настроенные для датасорса.