HTTP API для работы с кластером | Tdb
Справочник HTTP API для работы с кластером

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"
  }
}
Found what you were looking for?
Feedback