OpenSearch Висячие индексы: Как перечислить, восстановить и примеры

Висячие индексы возникают, когда узел, у которого есть несколько индексов, хранящихся локально, присоединяется к кластеру, и эти локальные индексы не существуют в метаданных кластера. Другими словами, если узел, ранее подключенный к кластеру, подключается к новому кластеру, индексы на этом узле помечаются как висячие индексы.

Когда и почему следует использовать dangling API

Метаданные кластера описывают, как читать данные, хранящиеся на узлах данных. Если все главные узлы потеряют свои метаданные, то все, что хранится на узлах данных в кластере, не сможет быть прочитано. В такой ситуации необходимо создать новый кластер и подключить к нему существующие узлы данных. После подключения всех узлов данных к новому кластеру старые индексы станут висячими индексами. Вы можете использовать API для восстановления данных из этих индексов.

В этой статье мы рассмотрим, как составить список и восстановить висячие индексы.

Как перечислить и восстановить висячие индексы в OpenSearch

Вот как перечислить и восстановить висячие индексы в OpenSearch:

Шаг 1. Запустите API dangling indices и скопируйте index-uuid из ответа

Пример вывода

Шаг 2. Восстановите висячий индекс

Важно обратить внимание на это поле: accept_data_loss (Required, Boolean). Это поле должно быть установлено в true, чтобы импортировать висячий индекс. OpenSearch не может знать, откуда взялись данные висячего индекса, или определить, какие копии шарда являются свежими, а какие - устаревшими. Поэтому он не может гарантировать, что импортированные данные представляют собой последнее состояние индекса на момент его последнего нахождения в кластере.

Шаг 3. (Необязательно) Используйте автоматический сценарий для восстановления всех висячих индексов

В API _dangling невозможно использовать подстановочный знак(*). Если у вас сотни висячих индексов, вы можете использовать следующий bash-скрипт для обнаружения и восстановления висячих индексов.

Шаг 4. Проверьте состояние кластера

Некоторые индексы могут быть повреждены. Чтобы проверить индексы, необходимо проверить состояние кластера.

Шаг 5. Если вы видите неназначенные шарды, проверьте API распределения

Шаг 6. Восстановление поврежденных шардов

Для рассматриваемого индекса было 5 первичных шардов. Один из них, "первичный шард 2", был поврежден. Попробуем выделить именно этот шард индекса с помощью функции allocate_stale_primary.

Сначала мы восстановим индекс с помощью allocate_stale_primary.

Этот API попытается восстановить данные в шарде 2.

Как видно из ответа выше, данные в "шарде 2", к сожалению, потеряны. Восстановить их не представляется возможным. Теперь нам нужно запустить API reroute с флагами allocate_empty_primary и accept_data_loss: true.

Теперь попробуем восстановить индекс с помощью allocate_empty_primary.

Этот API выделит шард 2 как пустой. Цель этой операции - частично восстановить данные в индексе. Индекс не может быть использован с отсутствующим шардом.

Шаг 7. Проверьте состояние индекса

Состояние индекса - GREEN. Повторите ту же процедуру для всех неназначенных индексов, после чего можно перейти к шагу 5 и снова проверить объяснение распределения.

Резюме и важные замечания

  • В этой статье мы узнали, что такое висячий индекс, как он формируется и как его импортировать.
  • Помните, что dangling API не может дать никаких гарантий того, что импортированные данные действительно представляют собой последнее состояние данных, когда индекс еще был частью кластера.
  • Перед запуском dangling API убедитесь, что все узлы данных подключены к новому кластеру.
Понравилась статья? Поделиться с друзьями:
Добавить комментарий