/datasources/{datasource}/attach

Содержание раздела
  1. URL
  2. Заголовки запроса
    1. [ x-request-id ]
  3. Тело запроса
    1. [ params ]
    2. [ datasourceDonor ]
    3. [ recoverBatchPeriodMs ]
    4. [ recoverMaxConcurrent ]
    5. [ logicalOnly ]
  4. Варианты ответа
  5. Ограничения
  6. Примеры cURL-запросов
    1. Присоединение датасорса, отсутствующего в конфигурации, с донором
    2. Присоединение датасорса, заданного в конфигурации, без донора
    3. Логическое присоединение датасорса, заданного в конфигурации, с донором

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
  }'