/datasources/{datasource}/attach
Содержание раздела
POST-метод присоединяет датасорс к хранилищу данных без остановки кластера Prostore и прерывания текущих операций записи.
Подробнее о присоединении датасорсов см. в разделе О присоединении и отсоединении датасорсов.
URL
{baseUrl}/api/v1/datasources/{datasource}/attach
Параметры:
baseUrl— адрес ноды Prostore, состоящий из IP-адреса или доменного имени и номера порта;datasource— имя присоединяемого датасорса.
Заголовки запроса
[ x-request-id ]
Задает уникальный идентификатор HTTP-запроса. Если не указан, система генерирует UUID-значение и возвращает его в качестве идентификатора в ответе.
Тело запроса
Тело запроса опционально: оно может отсутствовать или быть пустым объектом {}, если присоединяется датасорс, заданный в конфигурации нод. В квадратных скобках отмечены опциональные параметры.
[ params ]
Параметры присоединяемого датасорса. Можно не указывать, если параметры датасорса уже заданы в конфигурации нод.
Если указаны, должно выполняться любое из условий:
- датасорс отсутствует в конфигурации нод;
- указанные параметры полностью совпадают с параметрами датасорса в конфигурации нод.
Указываются как массив с одним элементом, содержащим параметры датасорса, в формате JSON или YAML. Список возможных параметров — такой же, как в секциях <тип_датасорса>.datasource конфигурации нод. Значением параметра может быть константа или имя переменной окружения.
[ datasourceDonor ]
Имя датасорса-донора — датасорса, сущности которого расширяются на присоединяемый датасорс.
Если не указано, датасорс присоединяется без расширения сущностей на него.
Влияние параметра на этапы присоединения датасорса см. в разделе О присоединении и отсоединении датасорсов.
[ recoverBatchPeriodMs ]
Интервал в миллисекундах, за который выбираются операции записи за один проход из донора для наполнения данными присоединяемого датасорса. Применяется, если задан datasourceDonor.
Если параметр не указан, используется значение параметра конфигурации AUTOFAILOVER_RECOVER_BATCH_PERIOD_MS.
Параметр не применяется к сущностям с опцией recover.mode.logical.only=true: такие сущности наполняются за один проход.
[ recoverMaxConcurrent ]
Максимальное количество сущностей, данные которых одновременно копируются из донора в присоединяемый датасорс. Применяется, если задан datasourceDonor.
При значении 0 количество таблиц не ограничено.
Если параметр не указан, используется значение параметра конфигурации AUTOFAILOVER_RECOVER_CONCURRENT.
[ logicalOnly ]
Признак присоединения датасорса только на логическом уровне:
false(по умолчанию) — полное присоединение: на логическом и физическом уровнях;true— логическое присоединение: пропускается создание физической схемы данных в датасорсе и наполнение его данными.
Влияние параметра на этапы присоединения датасорса см. в разделе О присоединении и отсоединении датасорсов.
Варианты ответа
Успешный ответ (200) означает, что датасорс:
- [при запуске с logicalOnly=true] успешно присоединен на логическом уровне;
- [при запуске с logicalOnly=false] перешел в стадию наполнения данными, которая будет выполнена асинхронно.
Чтобы отследить процесс наполнения датасорса данными, используйте GET_RECOVER_STATUS.
Неуспешный ответ (500) означает, что запрос не дошел до исполнения или присоединение датасорса было отменено системой из-за ошибки. В этом случае устраните причины ошибки и повторите запрос.
Ограничения
- Выполнение запроса недоступно в следующих случаях:
- выполняется другой запрос на присоединение или отсоединение этого датасорса;
- выполняется DDL-запрос в любой из логических БД окружения;
- датасорс уже присоединен (даже если новый запрос на присоединение содержит другие параметры).
- Во время выполнения запроса недоступны DDL-запросы во всех логических БД окружения.
- Ответ возвращается до этапа наполнения датасорса данными, выполняемого асинхронно, и поэтому может опережать фактическое завершение процесса присоединения.
Примеры cURL-запросов
Присоединение датасорса, отсутствующего в конфигурации, с донором
С параметрами, указанными в JSON-формате:
curl -X 'POST' \
'http://localhost:9090/api/v1/datasources/adp2/attach' \
-H 'x-request-id: 8f14e45f-ceea-467a-a866-090f8b8f5d21' \
-H 'Content-Type: application/json' \
-d '{
"params": {
"adp": {
"datasource": {
"name": "adp2",
"env": "dtm",
"user": "${ADP2_USERNAME}",
"password": "${ADP2_PASS}",
"host": "dtm.ru.internal",
"port": 5432,
"poolSize": 5,
"executorsCount": 3,
"poolRequestTimeout": 0,
"preparedStatementsCacheMaxSize": 256,
"preparedStatementsCacheSqlLimit": 2048,
"preparedStatementsCache": true,
"idleTimeoutMs": 60000,
"maxLifetimeTimeoutMs": 0,
"autofailoverPriority": 3
}
},
"datasourceDonor": "ADP",
"recoverBatchPeriodMs": 60000,
"recoverMaxConcurrent": 1
}'
С параметрами, указанными в YAML-формате:
curl -X 'POST' \
'http://localhost:9090/api/v1/datasources/adp2/attach' \
-H 'x-request-id: 55d26138-9611-43d8-beb0-00e5e2f767f9' \
-H 'Content-Type: application/yaml' \
-d 'params:
adp:
datasource:
- name: ADP2
env: dtm
user: ${ADP2_USERNAME}
password: ${ADP2_PASS}
host: dtm.ru.internal
port: 5432
poolSize: 5
executorsCount: 3
poolRequestTimeout: 0
preparedStatementsCacheMaxSize: 256
preparedStatementsCacheSqlLimit: 2048
preparedStatementsCache: true
idleTimeoutMs: 60000
maxLifetimeTimeoutMs: 0
autofailoverPriority: 3
datasourceDonor: ADP
recoverBatchPeriodMs: 60000
recoverMaxConcurrent: 1'
Присоединение датасорса, заданного в конфигурации, без донора
curl -X 'POST' \
'http://localhost:9090/api/v1/datasources/adp3/attach' \
-H 'x-request-id: 7c4a8d58-d0e0-4911-96d4-838bf95319a5' \
-d ''
Логическое присоединение датасорса, заданного в конфигурации, с донором
curl -X 'POST' \
'http://localhost:9090/api/v1/datasources/adp4/attach' \
-H 'x-request-id: 3e5d7b91-2c4a-4b6e-a0d3-9f8c1e2a5b7d' \
-H 'Content-Type: application/json' \
-d '{
"datasourceDonor": "adp2",
"logicalOnly": true
}'