Эластичный поиск

Резервное копирование и восстановление кластеров Elasticsearch со снимками

Резервное копирование и восстановление кластеров Elasticsearch со снимками
Elasticsearch - это все о данных, и, как вы, вероятно, уже знаете, данные важны для вас и Elasticsearch. Однако, насколько вы и Elasticsearch любите данные, могут возникать сбои данных, что приведет к потере данных.

Чтобы защитить себя от потери данных, Elasticsearch имеет различные функции, которые позволяют гарантировать доступность данных даже в случаях сбоя данных.

Некоторые из способов, которыми Elasticsearch использует для обеспечения доступности данных, включают:

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

Давайте начнем.

Что такое моментальный снимок Elasticsearch?

Как уже упоминалось, эластичный моментальный снимок - это резервная копия работающего кластера Elasticsearch. Этот снимок может быть всего кластера или определенных индексов и потоков данных в определенном кластере.

Как вы вскоре узнаете, плагин репозитория управляет снимками состояния Elasticsearch. Эти снимки можно хранить в различных местах хранения, определенных плагином. К ним относятся локальные системы и удаленные системы, такие как GCP Storage, Amazon EC2, Microsoft Azure и многие другие.

Как создать репозиторий моментальных снимков Elasticsearch

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

Вот некоторые из задач, которые выполняет Snapshot API:

Чтобы создать репозиторий снимков, мы используем конечную точку API _snapshot, за которой следует имя, которое мы хотим присвоить репозиторию снимков. Рассмотрим запрос ниже, который создает репозиторий с именем backup_repo

PUT / _snapshot / backup_repo

"тип": "фс",
"настройки":
"местоположение": "/ главная / корень / резервные копии",
"compress": true

Вот команда cURL для вышеуказанного запроса:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo" -H 'Content-Type: application / json' -d '"type": "fs", "settings": "location": "/ home / root / backups "," compress ": true '

Чтобы передать путь к репозиторию моментальных снимков, вы должны сначала добавить системный путь или родительский каталог к ​​пути.запись репо в elasticsearch.yml

Тропинка.Запись репо должна выглядеть примерно так:

дорожка.репо: [«/ home / root / backups»]

Вы можете найти файл конфигурации Elasticsearch, расположенный в / etc / elasticsearch / elasticsearch.yml

ПРИМЕЧАНИЕ: После добавления пути.репо, вам может потребоваться перезапустить кластеры Elasticsearch. Кроме того, значения, поддерживаемые для пути.репо может сильно отличаться в зависимости от платформы, на которой запущен Elasticsearch.

Как просмотреть репозиторий снимков

Чтобы подтвердить успешное создание репозитория моментальных снимков, используйте запрос GET с конечной точкой _snapshot как:

ПОЛУЧИТЬ / _snapshot / backup_repo

Вы также можете использовать следующую команду cURL:

curl -XGET "http: // localhost: 9200 / _snapshot / backup_repo"

Это должно отображать информацию о репозитории резервных копий, например:


"backup_repo":
"тип": "фс",
"настройки" :
"compress": "true",
"location": "" "/ home / root / backups" ""


Если у вас есть несколько репозиториев моментальных снимков и вы не помните их имя, вы можете опустить имя репо и вызвать конечную точку _snapshot, чтобы вывести список всех существующих репозиториев.

GET / _snapshot или cURL curl -XGET http: // localhost: 9200 / _snapshot

Как создать снимок Elasticsearch

Создание снимка Elasticsearch для определенного репозитория снимков выполняется с помощью API создания снимков. API требует имя репозитория снимков и имя снимка.

ПРИМЕЧАНИЕ: В одном репозитории моментальных снимков может быть несколько снимков одних и тех же кластеров, если они имеют уникальные идентификаторы / имена.

Рассмотрим следующий запрос на добавление снимка с именем snapshot_2021 в репозиторий backup_repo.

PUT / _snapshot / backup_repo / snapshot_2021

Чтобы использовать cURL, используйте команду:

curl -XPUT «http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021»

Команда должна вернуть ответ от Elasticsearch с 200 OK и принять: true


"принято": верно

Поскольку он не указывает, какие потоки данных и индексы вы хотите скопировать, вызов вышеуказанного запроса создает резервные копии всех данных и состояния кластера. Чтобы указать, какие потоки данных и индексы для резервного копирования, добавьте это в тело запроса.

Рассмотрим следующий запрос, который выполняет резервное копирование .индекс kibana (системный индекс) и указывает, какой пользователь авторизовал снимок и причину.

PUT / _snapshot / backup_repo / snapshot_2

"индексы": ".кибана ",
"ignore_unavailable": правда,
"include_global_state": правда,
"метаданные":
"take_by": "elasticadmin",
«Pted_because »:« Ежедневное резервное копирование »

Команда cURL для этого:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2" -H 'Content-Type: application / json' -d '"index": ".kibana "," ignore_unavailable ": true," include_global_state ": true," metadata ": " take_by ":" elasticadmin "," loaded_because ":" Ежедневное резервное копирование " '

Ignore_unavailable устанавливает логическое состояние, которое возвращает ошибку, если какие-либо потоки данных или индексы, указанные в моментальном снимке, отсутствуют или закрыты.

Параметр include_global_state сохраняет текущее состояние кластера, если true. Некоторая сохраненная информация о кластере включает:

ПРИМЕЧАНИЕ: Вы можете указать несколько индексов через запятую.

Обычным аргументом, используемым с конечной точкой _snapshot, является wait_for_completion, логическое значение, определяющее, должен ли (true) или нет (false) запрос возвращаться сразу после инициализации снимка (по умолчанию) или ждать завершения снимка.

Например:

PUT / _snapshot / backup_repo / snapshot_3?wait_for_completion = истина

"индексы": ".кибана ",
"ignore_unavailable": правда,
"include_global_state": ложь,
"метаданные":
"take_by": "elasticadmin",
«Take_because»: «Еженедельное резервное копирование»

Команда cURL:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3?wait_for_completion = true "-H 'Content-Type: application / json' -d '" index ":".kibana "," ignore_unavailable ": true," include_global_state ": false," metadata ": " Take_by ":" elasticadmin ", "pted_because": "Еженедельное резервное копирование" '

Если для параметра wait_for_completion установлено значение true, вы получите результат, аналогичный показанному ниже:


"снимок":
"снимок": "снимок_3",
«uuid»: «tQUHyofIRnGMMtw0AGBACQ»,
"version_id": 7100299,
"версия": "7.10.2 ",
"индексы": [
".kibana_1 "
],
"потоки_данных": [],
"include_global_state": ложь,
"метаданные":
"take_by": "elasticadmin",
«Take_because»: «Еженедельное резервное копирование»
,
"состояние": "УСПЕХ",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
«duration_in_millis»: 818,
"неудачи": [],
"shards":
«всего»: 1,
"не удалось": 0,
«успешно»: 1


Как просматривать снимки

API снимков GET обрабатывает функциональность снимков представления.

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

Снимок должен отвечать подробностями об указанном снимке. Эти детали включают:

Например, чтобы просмотреть подробную информацию о созданном выше снимке snapshot_3, используйте запрос, показанный ниже:

GET / _snapshot / backup_repo / snapshot_3
Чтобы использовать cURL, используйте команду ниже:
[cc lang = "text" width = "100%" height = "100%" escaped = "true" theme = "blackboard" nowrap = "0"]
curl -XGET «http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3»

Запрос должен вернуть ответ с подробностями снимка как:


"снимки": [

"снимок": "снимок_3",
«uuid»: «tQUHyofIRnGMMtw0AGBACQ»,
"version_id": 7100299,
"версия": "7.10.2 ",
"индексы": [
".kibana_1 "
],
"потоки_данных": [],
"include_global_state": ложь,
"метаданные":
"take_by": "elasticadmin",
«Take_because»: «Еженедельное резервное копирование»
,
"состояние": "УСПЕХ",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
«duration_in_millis»: 818,
"неудачи": [],
"shards":
«всего»: 1,
"не удалось": 0,
«успешно»: 1


]

Вы также можете настроить тело запроса, чтобы получить конкретную информацию о снимке. Однако мы пока не будем это рассматривать.

Допустим, вы хотите просмотреть информацию обо всех снимках в определенном хранилище снимков; в этом случае вы можете передать подстановочный знак звездочки в запросе как:

ПОЛУЧИТЬ / _snapshot / backup_repo / *

Команда cURL для этого:

curl -XGET «http: // localhost: 9200 / _snapshot / backup_repo / *»

Ответ представляет собой подробный дамп всех снимков в этом репозитории как:


"снимки": [

"снимок": "снимок_2021",
"uuid": "7CFigHzvRtyZW07c60d2iw",
"version_id": 7100299,
"версия": "7.10.2 ",
"индексы": [
"my_index",
"single_index_with_body",
"my_index_2",
"single_index",
".kibana_1 ",
"контрольная работа"
],
"потоки_данных": [],
"include_global_state": правда,
"состояние": "УСПЕХ",
"start_time": "2021-01-19T13: 28: 48.172Z ",
"start_time_in_millis": 1611062928172,
"end_time": "2021-01-19T13: 28: 50.831Z ",
"end_time_in_millis": 1611062930831,
«duration_in_millis»: 2659,
"неудачи": [],
"shards":
«всего»: 7,
"не удалось": 0,
«успешно»: 7

,

"снимок": "снимок_2",
"uuid": "w58IrYmORAub8VC7cg04Wg",
"version_id": 7100299,
"версия": "7.10.2 ",
"индексы": [
".kibana_1 "
],
"потоки_данных": [],
"include_global_state": ложь,
"метаданные":
"take_by": "elasticadmin",
"created_because": "Ежедневное резервное копирование"
,
"состояние": "УСПЕХ",
"start_time": "2021-01-19T13: 33: 34.482Z ",
"start_time_in_millis": 1611063214482,
"end_time": "2021-01-19T13: 33: 35.921Z ",
"end_time_in_millis": 1611063215921,
«duration_in_millis»: 1439,
"неудачи": [],
"shards":
«всего»: 1,
"не удалось": 0,
«успешно»: 1

,

"снимок": "снимок_3",
«uuid»: «tQUHyofIRnGMMtw0AGBACQ»,
"version_id": 7100299,
"версия": "7.10.2 ",
"индексы": [
".kibana_1 "
],
"потоки_данных": [],
"include_global_state": ложь,
"метаданные":
"take_by": "elasticadmin",
«Take_because»: «Еженедельное резервное копирование»
,
"состояние": "УСПЕХ",
"start_time": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
«duration_in_millis»: 818,
"неудачи": [],
"shards":
«всего»: 1,
"не удалось": 0,
«успешно»: 1


]

Подстановочные знаки очень полезны для фильтрации конкретной информации о снимках.

Как удалить снимок

Удалить снимок очень просто: все, что вам нужно сделать, это использовать запрос DELETE как:

УДАЛИТЬ / _snapshot / backup_repo / snapshot_2021 /

Команда cURL:

curl -XDELETE «http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021 /»

Ответ должен быть подтвержден: правда


«Подтверждено»: верно

Если снимок не существует, вы получите код состояния 404 и ошибку отсутствия снимка как:


"ошибка" :
"первопричина" : [

"тип": "snapshot_missing_exception",
"причина": "[backup_repo: snapshot_2021] отсутствует"

],
"тип": "snapshot_missing_exception",
"причина": "[backup_repo: snapshot_2021] отсутствует"
,
«статус»: 404

Заключение

В этом руководстве мы обсудили, как создавать снимки состояния Elasticsearch с помощью Snapshot API. То, что вы узнали, должно быть достаточно, чтобы позволить вам создавать репозиторий снимков, просматривать репозитории снимков, создавать, просматривать и удалять снимки. Несмотря на то, что с помощью API можно выполнить настройки, знаний этого руководства должно быть достаточно, чтобы вы начали.

Спасибо за чтение.

Лучшие игры с отслеживанием рук
Oculus Quest недавно представил отличную идею отслеживания рук без контроллеров. С постоянно растущим числом игр и действий, которые осуществляются фо...
Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...
Топ-5 карт для захвата игр
Все мы видели и любили потоковые игры на YouTube. PewDiePie, Jakesepticye и Markiplier - лишь некоторые из лучших игроков, которые заработали миллионы...