TDB Documentation portal logo
Помощь
Обновлена 30 июля 2026 г. в 16:49

HTTP API для работы с кластером

В этом разделе приведен список HTTP-адресов, через которые выполняется взаимодействие с кластером Tarantool DB.

/sync

Доступно с версии 1.2.6.

POST /sync

Задать синхронный режим для пользовательских и системных спейсов кластера. Это означает, что для каждого спейса указывается опция space_opts.is_sync со значением true. При этом асинхронными остаются системный спейс _sequence_data, а также локальные и временные спейсы (space_opts.is_local=true и space_opts.temporary=true).

Синхронный режим для спейсов будет задан при соблюдении условий ниже:

  • в наборе реплик задан параметр failover.replicasets.*.synchro_mode=true;
  • в наборе реплик есть владелец синхронной очереди — значение box.info.synchro.queue.owner() не равно 0.

Запрос может быть отправлен на любой экземпляр кластера. Запрос возвращает список и состояние спейсов для каждого набора реплик в следующем формате:

  • status — состояние, указывающее успешность включения синхронной репликации в наборе реплик. Возможные статусы:
    • success — синхронная репликация включена;
    • skipped — включение синхронной репликации пропущено на данном наборе реплик. Возможные причины:
      • набор реплик не владеет синхронной очередью;
      • набор реплик состоит из одного экземпляра;
      • набор реплик имеет параметр all_rw со значением true;
    • error — произошла ошибка при включении синхронной репликации. Возможные ошибки:
      • "tarantool-storage-1:3301": timed out — не удалось подключиться к мастер-узлу;
      • Instance is no longer the leader (reason: synchro) — узел больше не является лидером;
      • synchro_mode is enabled, but synchro queue is not claimed — для координатора отказоустойчивости включен параметр synchro_mode=true, но синхронная очередь не захвачена;
  • async_spaces — список асинхронных спейсов в наборе реплик;
  • sync_spaces — список синхронных спейсов в наборе реплик;
  • error — сообщение об ошибке, возвращается при получении состояния status=error.

Запрос возвращает один из статусов ниже:

  • HTTP-статус 200 — в случае успеха возвращает состояние status=success или status=skipped;
  • HTTP-статус 500 — при выполнении запроса возникла ошибка, получено состояние status=error.

Пример запроса:

curl -X POST "http://localhost:8081/sync"

Пример успешного ответа:

{  "storage-1": {    "status": "success",    "async_spaces": [      "_sequence_data",      "vinyl_defer_delete",      "some_local_space"    ],    "sync_spaces": [      "_space",      "_bucket"    ]  },  "storage-2": {    "status": "success",    "async_spaces": [      "_sequence_data",      "vinyl_defer_delete",      "some_local_space"    ],    "sync_spaces": [      "_space",      "_bucket"    ]  },  "storage-3": {    "status": "success",    "async_spaces": [      "_sequence_data",      "vinyl_defer_delete",      "some_local_space"    ],    "sync_spaces": [      "_space",      "_bucket"    ]  }}

Пример ошибки:

{  "storage-1": {    "status": "error",    "async_spaces": [],    "sync_spaces": [],    "error": "\"tarantool-storage-1-spb:3301\": timed out"  }}