О присоединении и отсоединении датасорсов
Содержание раздела
Система поддерживает динамическое изменение состава датасорсов в хранилище данных:
- присоединение — добавление датасорса в хранилище;
- отсоединение — удаление датасорса из хранилища.
Присоединение и отсоединение датасорсов выполняются без остановки кластера Prostore и запланированного окна обслуживания, что позволяет добавлять, удалять и заменять датасорсы штатно, сохраняя кластер доступным для записи и чтения.
Примеры сценариев использования:
- расширение или уменьшение хранилища;
- миграция данных на новое аппаратное обеспечение;
- обслуживание СУБД (обновления, замена дисков и т.д.).
Возможности
Механизм присоединения и отсоединения позволяет:
- динамически добавлять датасорсы в хранилище, включая опциональные этапы:
- динамически удалять датасорсы из хранилища.
Присоединение и отсоединение датасорсов регистрируется в журнале.
Сравнение с включением и отключением датасорсов
Присоединение и отсоединение датасорсов позволяют изменять состав хранилища, добавляя и удаляя датасорсы. В свою очередь включение и отключение датасорсов — часть механизма auto-failover и процесса восстановления датасорсов — управляют уже существующими в хранилище датасорсами.
При этом включение и выключение датасорса могут быть частью присоединения, если датасорс присоединяется с автоматическим созданием реплик сущностей.
Поддерживаемые типы датасорсов
Присоединение и отсоединение доступно для типов датасорсов, перечисленных в таблице ниже.
| Операция | Поддерживаемые типы датасорсов |
|---|---|
| Присоединение с созданием реплик сущностей | ADP |
| Присоединение в остальных случаях | Все |
| Отсоединение | Все |
Список датасорсов хранилища
Список датасорсов хранилища формируется из следующих элементов:
- датасорсов, заданных в конфигурации нод кластера (за вычетом отсоединенных);
- присоединенных датасорсов.
Определение и переопределение параметров датасорса
Параметры датасорса можно задать в любом из следующих источников:
- в конфигурации нод (имеют приоритет при конфликте);
- в запросе на присоединении датасорса.
Если параметры датасорса были впервые определены в конфигурации нод и требуется удалить их из конфигурации, сначала отсоедините датасорс от хранилища.
Параметры в запросе на присоединение датасорса:
- могут отсутствовать, если уже заданы в конфигурации нод;
- если указаны:
- не могут переопределить параметры, заданные в конфигурации;
- должны отсутствовать в конфигурации нод или полностью совпадать с ней.
Изменения параметров датасорсов в конфигурации применяются при запуске или перезапуске ноды. Изменения по присоединяемым и отсоединяемым датасорсам применяются сразу, без перезапуска нод.
Этапы присоединения датасорса
При присоединении датасорса система всегда добавляет его в список датасорсов хранилища. Дополнительно, в зависимости от параметров запроса на присоединение (см. таблицу ниже), система также может выполнить следующие действия:
- расширить логические БД окружения на новый датасорс;
- расширить сущности логических БД на новый датасорс.
В таблице ниже описано, как параметры запроса на присоединение датасорса влияют на выполняемые этапы присоединения.
| logicalOnly | datasourceDonor | Выполняемые этапы |
|---|---|---|
| true | Не задан |
|
| false | Не задан |
|
| true | Задан |
|
| false | Задан |
|
Для сущностей с опцией recover.mode.logical.only=true система создает физические таблицы (если предполагается запросом), но пропускает этап наполнения их данными.
Описание параметров запроса на присоединение датасорса см. в разделе HTTP API > Присоединение датасорса, шаги по присоединению — в разделе Как присоединить ADP-датасорс.
Добавление датасорса в список датасорсов хранилища
Запрос на присоединение датасорса добавляет датасорс в список датасорсов хранилища, размещенный в сервисной БД каждой ноды. Сначала список обновляется на лидерской ноде, затем распространяется на остальные.
Этот этап доступен для датасорсов любых типов и выполняется независимо от параметров запроса. Он достаточен для любых последующих действий с датасорсом: расширения на него сущностей, размещения в нем новых сущностей, восстановления и т.д.
Расширение логических БД на датасорс
При присоединении датасорса система может расширить на него логические БД окружения: обновить метаинформацию в сервисных БД нод и создать соответствующие физические схемы данных в датасорсе.
Этот этап доступен для датасорсов любых типов и выполняется, если запрос на присоединение датасорса содержит logicalOnly=false. Он может быть полезен, если датасорс присоединяется:
- для хранения данных новых сущностей, которые будут созданы позже в текущих логических БД;
- как реплика другого датасорса:
- [ADP] с автоматическим наполнением данными;
- [ADB, ADQM, ADG] с ручным наполнением данными.
Расширение сущностей на датасорс
При присоединении датасорса система может расширить на него сущности логических БД:
- [на логическом уровне] обновить метаинформацию сущностей;
- [на физическом уровне] создать реплики сущностей в новом датасорсе:
- [в датасорсе любого типа] создать необходимые физические таблицы;
- [только в ADP] наполнить созданные таблицы данными, скопированными из другого датасорса (донора).
Сущности расширяются на логическом уровне, если запрос на присоединение датасорса содержит 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-правила, настроенные для датасорса.