В OpenSearch под восстановлением понимается процесс восстановления индекса или шарда, когда что-то пошло не так. Существует множество способов восстановления индекса или шарда, например, переиндексация данных из резервной копии / отказоустойчивого кластера в текущий или восстановление из моментального снимка OpenSearch.
Кроме того, OpenSearch выполняет восстановление автоматически, например, при перезагрузке узла или при его отключении и повторном подключении. Для проверки состояния восстановления индексов/шардов существует API.
1 2 | GET /<index>/_recovery GET /_recovery |
В целом восстановление может происходить по следующим сценариям:
- Запуск или отказ узла (восстановление локального хранилища)
- Репликация первичных шардов на реплики шардов
- Перемещение шарда на другой узел в том же кластере
- Восстановление моментального снимка
iПримеры
Получение информации о восстановлении нескольких индексов:
1 2 | GET my_index1 GET my_index2/_recovery |
Примечания и полезные сведения
При отключении узла от кластера все его шарды переходят в неназначенное состояние. Через некоторое время шарды будут распределены по другим узлам. Эта настройка определяет количество одновременно восстанавливаемых шардов на каждом узле.
1 2 3 4 5 | PUT _cluster/settings { "transient": {"cluster.routing.allocation.node_concurrent_recoveries":3} } |
Вы также можете контролировать, когда начинать восстановление после отключения узла. Это полезно, например, если узел просто перезагружается, поскольку для таких переходных событий можно не инициировать никакого восстановления.
1 2 3 | PUT _all/_settings {"settings": {"index.unassigned.node_left.delayed_timeout": "6m"}} |
OpenSearch ограничивает скорость, выделяемую на восстановление, чтобы не перегружать кластер. Эта настройка может быть изменена, чтобы сделать восстановление быстрее или медленнее, в зависимости от ваших требований.
1 2 3 | PUT _cluster/settings {"transient": {"indices.recovery.max_bytes_per_sec": "100mb"}} |