Еластично търсене

Архивиране и възстановяване на 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

"type": "fs",
"настройки":
"location": "/ home / root / backups",
"компресиране": вярно

Ето команда cURL за горната заявка:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo" -H 'Content-Type: application / json' -d '"type": "fs", "settings": "location": "/ начало / корен / архиви "," компресиране: вярно '

За да предадете пътя на хранилището на моментни снимки, първо трябва да добавите системния път или родителската директория към пътя.репо запис в еластично търсене.yml

Пътя.репо записът трябва да изглежда подобно на:

път.репо: [„/ home / root / backups“]

Можете да намерите конфигурационния файл на Elasticsearch, намиращ се в / etc / elasticsearch / elasticsearch.yml

ЗАБЕЛЕЖКА: След добавяне на пътя.repo, може да се наложи да рестартирате клъстерите Elasticsearch. Освен това стойностите, поддържани за път.репо може да варира необичайно в зависимост от платформата, изпълняваща Elasticsearch.

Как да разгледаме хранилището за снимки

За да потвърдите успешното създаване на хранилището на моментни снимки, използвайте заявката GET с крайната точка _snapshot като:

ВЗЕМЕТЕ / _snapshot / backup_repo

Можете също да използвате следната команда cURL:

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

Това трябва да показва информация за архивното хранилище, например:


"backup_repo":
"type": "fs",
"настройки" :
"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": вярно,
"метаданни":
"taken_by": "elasticadmin",
“Taken_because”: “Ежедневно архивиране”

Командата cURL за това е:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2" -H 'Тип съдържание: application / json' -d '"индекси": ".kibana "," ignore_unavailable ": true," include_global_state ": true," metadata ": " taken_by ":" elasticadmin "," taken_because ":" Ежедневно архивиране " '

Ignore_unavailable задава логическо състояние, което връща грешка, ако някакви потоци от данни или индекси, посочени в моментната снимка, липсват или са затворени.

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

ЗАБЕЛЕЖКА: Можете да посочите повече от един индекс, разделени със запетаи.

Често използван аргумент с крайната точка _snapshot е wait_for_completion, логическа стойност, определяща дали (вярно) или не (невярно) заявката трябва да се върне веднага след инициализацията на моментна снимка (по подразбиране) или да изчака завършването на моментната снимка.

Например:

PUT / _snapshot / backup_repo / snapshot_3?wait_for_completion = true

"индекси": ".кибана ",
"ignore_unavailable": вярно,
"include_global_state": false,
"метаданни":
"taken_by": "elasticadmin",
“Taken_because”: “Седмично архивиране”

Командата cURL е:

curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3?wait_for_completion = true "-H 'Тип съдържание: application / json' -d '" индекси ":".kibana "," ignore_unavailable ": true," include_global_state ": false," metadata ": " taken_by ":" elasticadmin "," taken_because ":" Седмично архивиране " '

Когато зададете параметъра wait_for_completion на true, ще получите изход, подобен на показания по-долу:


"моментална снимка" :
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"версия": "7.10.2 ",
"индекси": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"метаданни":
"taken_by": "еластичен администратор",
“Taken_because”: “Седмично архивиране”
,
"state": "УСПЕХ",
"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,
"неуспехи": [],
"парчета":
"общо": 1,
"неуспешно": 0,
"успешно": 1


Как да преглеждате снимки

GET snapshot API обработва функционалността на моментните снимки на изгледа.

Всичко, което трябва да предадете в заявката, е хранилището за моментни снимки и името на моментната снимка, което искате да видите, за да видите подробностите.

Снимката трябва да отговори с подробности за конкретна снимка. Тези подробности включват:

Например, за да видите подробностите за моментната снимка_3, създадена по-горе, използвайте заявката, показана по-долу:

ВЗЕМЕТЕ / _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”

Заявката трябва да върне отговор с подробности за моментната снимка като:


"моментни снимки": [

"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"версия": "7.10.2 ",
"индекси": [
".kibana_1 "
],
"потоци от данни": [],
"include_global_state": false,
"метаданни":
"taken_by": "elasticadmin",
“Taken_because”: “Седмично архивиране”
,
"state": "УСПЕХ",
"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,
"неуспехи": [],
"парчета":
"общо": 1,
"неуспешно": 0,
"успешно": 1


]

Можете също така да персонализирате тялото на заявката, за да получите конкретни подробности за моментна снимка. Засега обаче няма да разглеждаме това.

Да кажем, че искате да видите информация за всички моментни снимки в конкретно хранилище за моментни снимки; в този случай можете да предадете заместващ знак със звездичка в заявката като:

ВЗЕМЕТЕ / _snapshot / backup_repo / *

Командата cURL за това е:

curl -XGET “http: // localhost: 9200 / _snapshot / backup_repo / *”

Отговорът е подробен дъмп на всички моментни снимки в това хранилище като:


"моментни снимки": [

"snapshot": "snapshot_2021",
"uuid": "7CFigHzvRtyZW07c60d2iw",
"version_id": 7100299,
"версия": "7.10.2 ",
"индекси": [
"my_index",
"single_index_with_body",
"my_index_2",
"единичен_индекс",
".kibana_1 ",
"тест"
],
"data_streams": [],
"include_global_state": вярно,
"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,
"неуспехи": [],
"парчета":
"общо": 7,
"неуспешно": 0,
"успешно": 7

,

"snapshot": "snapshot_2",
"uuid": "w58IrYmORAub8VC7cg04Wg",
"version_id": 7100299,
"версия": "7.10.2 ",
"индекси": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"метаданни":
"taken_by": "еластичен администратор",
"taken_because": "Ежедневно архивиране"
,
"state": "УСПЕХ",
"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,
"неуспехи": [],
"парчета":
"общо": 1,
"неуспешно": 0,
"успешно": 1

,

"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"версия": "7.10.2 ",
"индекси": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"метаданни":
"taken_by": "еластичен администратор",
“Taken_because”: “Седмично архивиране”
,
"state": "УСПЕХ",
"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,
"неуспехи": [],
"парчета":
"общо": 1,
"неуспешно": 0,
"успешно": 1


]

Заместващите символи са много полезни за филтриране на конкретна информация за моментните снимки.

Как да изтриете моментна снимка

Изтриването на моментна снимка е много просто: всичко, което трябва да направите, е да използвате заявката DELETE като:

ИЗТРИВАНЕ / _snapshot / backup_repo / snapshot_2021 /

Командата cURL е:

curl -XDELETE “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021 /”

Отговорът трябва да бъде признат: вярно


„Признато“: вярно

Ако моментната снимка не съществува, ще получите код за състояние 404 и липсваща грешка в моментната снимка като:


"грешка":
"root_cause": [

"type": "snapshot_missing_exception",
"причина": "[backup_repo: snapshot_2021] липсва"

],
"type": "snapshot_missing_exception",
"причина": "[backup_repo: snapshot_2021] липсва"
,
„статус“: 404

Заключение

В това ръководство обсъдихме как да създадем снимки на Elasticsearch, използвайки Snapshot API. Това, което сте научили, трябва да е достатъчно, за да ви позволи да създадете хранилище за моментни снимки, да прегледате хранилищата за моментни снимки, да създавате, преглеждате и изтривате снимки. Въпреки че има персонализации, които можете да направите с API, знанията в това ръководство трябва да са достатъчни, за да започнете.

Благодаря ви за четенето.

Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...
Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...
Най-добрите игри за игра с ръчно проследяване
Oculus Quest наскоро представи страхотната идея за ръчно проследяване без контролери. С непрекъснато нарастващия брой игри и дейности, които изпълнява...