Tworzenie kopii zapasowych i przywracania klastrów elasticsearch za pomocą migawek

Tworzenie kopii zapasowych i przywracania klastrów elasticsearch za pomocą migawek
ElasticSearch dotyczy danych i jak zapewne wiesz, dane są ważne dla Ciebie i Elasticsearch. Jednak, o ile zarówno Ty, jak i Elasticsearch Love Data, mogą wystąpić awarie danych, co prowadzi do utraty danych.

Aby pomóc w ochronie przed utratą danych, ElasticSearch ma różne funkcje, które umożliwiają zapewnienie dostępności danych, nawet w przypadkach awarii danych.

Niektóre ze sposobów, w jakie ElasticSearch wykorzystuje, aby zapewnić dostępność danych:

  • Replikacje między klastrami, funkcja, która pozwala replikować dane do zestawu klastrów obserwujących; Klaster popychacza to klaster gotowości używany w przypadku awarii z klastra głównego.
  • Inna metoda, której używa ElasticSearch do zapobiegania danych za pomocą kopii zapasowych-zwane migawkami klastra. Jeśli potrzeba, możesz użyć tych migawek, aby przywrócić dane na zupełnie nowym klastrze.

Ten samouczek pokazuje, jak tworzyć migawki klastra, co pomoże Ci być gotowym, jeśli wystąpi nieodwracalne zdarzenie dotyczące awarii danych.

Zacznijmy.

Co to jest migawka elasticsearch?

Jak wspomniano, elastyczna migawka to kopia zapasowa działającego klastra ElasticSearch. Ta migawka może mieć cały klaster lub określone wskaźniki i strumienie danych w określonym klastrze.

Jak wkrótce się nauczysz, wtyczka repozytorium zarządza migawkami ElasticSearch. Te migawki można przechowywać w różnych lokalizacjach pamięci zdefiniowanych przez wtyczkę. Należą do nich systemy lokalne i systemy zdalne, takie jak GCP Storage, Amazon EC2, Microsoft Azure i wiele innych.

Jak utworzyć repozytorium migawek ElasticSearch

Zanim zagłębimy się w tworzenie migawek ElasticSearch, musimy utworzyć repozytorium migawek, ponieważ wiele usług ElasticSearch korzysta z API Snapshot do wykonywania tych zadań.

Niektóre zadania obsługiwane przez API migawki to:

  • Umieść repozytorium migawek
  • Sprawdź repozytorium migawek
  • Pobierz repozytorium migawek
  • Usuń repozytorium migawek
  • Oczyść repozytorium migawek
  • Utwórz migawkę
  • Migawka klonów
  • Zdobądź migawkę
  • Uzyskaj status migawki
  • Przywróć migawkę
  • Usuń migawkę

Aby utworzyć repozytorium migawek, używamy punktu końcowego API _SNAPSHOT, a następnie nazwa, którą chcemy przypisać do repozytorium migawek. Rozważ poniższe żądanie, które tworzy repozytorium o nazwie Backup_repo

PUT /_SNAPSHOT /BACKUP_REPO

„Typ”: „FS”,
„Ustawienia”:
„Lokalizacja”: „/home/root/backups”,
„Compress”: True

Oto polecenie Curl dla powyższego żądania:

curl -xput "http: // localhost: 9200/_snapshot/backup_repo" -h 'content -Type: Application/Json' -D '"type": „fs”, „settings”: „location”: "/" home/root/backups ”,„ compress ”: true '

Aby przejść ścieżkę repozytorium migawek, musisz najpierw dodać ścieżkę systemu lub katalog nadrzędny do ścieżki.Wpis repozytorium w ElasticSearch.yml

Ścieżka.Wpis Repo powinien wyglądać podobnie do:

ścieżka.Repo: [„/home/root/backups”]

Można znaleźć plik konfiguracyjny ElasticSearch znajdujący się w/etc/elasticSearch/elasticSearch.yml

NOTATKA: Po dodaniu ścieżki.repozytor. Dodatkowo wartości obsługiwane dla ścieżki.repozytor.

Jak wyświetlić repozytorium migawek

Aby potwierdzić udane tworzenie repozytorium migawki, użyj żądania GET z punktem końcowym _Snapshot jako:

Get /_Snapshot /Backup_repo

Możesz także użyć następującego polecenia Curl:

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

Powinno to wyświetlić informacje o repozytorium kopii zapasowych, na przykład:


„Backup_repo”:
„Typ”: „FS”,
„Ustawienia”:
„Compress”: „True”,
„Lokalizacja”: „„ ”/home/root/backups„ ”„ ”


Jeśli masz więcej niż jeden repozytoria migawek i nie pamiętasz nazwy, możesz pominąć nazwę repozytor.

Pobierz/_snapshot lub curl curl -xget http: // localhost: 9200/_snapshot

Jak utworzyć migawkę ElasticSearch

Tworzenie migawki ElasticSearch dla określonego repozytorium migawek jest obsługiwane przez interfejs API Utwórz migawkę. API wymaga nazwy repozytorium migawek i nazwy migawki.

NOTATKA: Pojedyncze repozytorium migawek może mieć więcej niż jedną migawkę tych samych klastrów, o ile mają one unikalne tożsamości/nazwy.

Rozważ następujące żądanie, aby dodać migawkę o nazwie Snapshot_2021 do repozytorium Backup_Repo.

PUT/_SNAPSHOT/BACKUP_REPO/Snapshot_2021

Aby użyć curl, użyj polecenia:

curl -xput „http: // localhost: 9200/_snapshot/backup_repo/snapshot_2021”

Polecenie powinno zwrócić odpowiedź z ElasticSearch z 200 OK i zaakceptowana: prawda


„Zaakceptowane”: prawda

Ponieważ nie określa, które strumienie danych i wskaźniki chcesz wykonać kopię zapasową, wywołanie powyższych zapasów żądania wszystkie dane i stan klastra. Aby określić, które strumienie danych i wskaźniki do tworzenia kopii zapasowej, dodaj to do ciała żądania.

Rozważ następujące żądanie, które tworzy kopie zapasowe .indeks kibana (indeks systemowy) i określa, który użytkownik autoryzował migawkę i powód.

PUT/_SNAPSHOT/BACKUP_REPO/Snapshot_2

„indeksy”: ".kibana ",
„ignore_unavailable”: true,
„Ableal_Global_State”: True,
„Metadata”:
„Take_by”: „elasticadmin”,
„Podeszła_because”: „Codzienna kopia zapasowa”

Komenda Curl dla tego jest:

curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_2" -h 'content -Type: Application/json' -d '"indicjami": ".kibana ",„ ignor_unavailable ”: true,„ include_global_state ”: true,„ metadata ”: „ wziął_by ”:„ elasticAdmin ”,„ wziął_because ”:„ Daily Backup ” '

Ignoramentowy ustawia stan logiczny, który zwraca błąd, jeśli brakuje żadnych strumieni danych lub indeksów określonych w migawce lub zamkniętej.

Parametr Ibled_Global_State zapisuje bieżący stan klastra, jeśli jest prawdziwy. Niektóre zapisane informacje o klastrze obejmują:

  • Trwałe ustawienia klastra
  • Szablony indeksu
  • Dziedziczne szablony indeksu
  • Spożywaj rurociągi
  • Polityka cyklu życia ILM

NOTATKA: Możesz określić więcej niż jedną indeksy oddzielone przecinkami.

Wspólnym argumentem używanym z punktem końcowym _snapshot jest Wait_For_Complecja, wartość logiczna określająca (prawda), czy nie (fałsz) żądanie powinno zwrócić natychmiast po inicjalizacji migawki (domyślnie) lub poczekaj na zakończenie migawki.

Na przykład:

PUT/_SNAPSHOT/BACKUP_REPO/Snapshot_3?Wait_For_Completet = true

„indeksy”: ".kibana ",
„ignore_unavailable”: true,
„Ableal_Global_State”: False,
„Metadata”:
„Take_by”: „elasticadmin”,
„Podeszła_because”: „Cotygodniowe kopie zapasowe”

Polecenie Curl to:

curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_3?Wait_for_Completet = true "-h 'Content -Type: Application/Json' -d '" indices ":".kibana ",„ ignor_unavailable ”: true,„ include_global_state ”: false,„ metadata ”: „ wzięty_bel ”:„ elasticadmin ”,„ wziął_because ”:„ cotygodniowe kopie zapasowe ” '

Gdy masz ustawiony parametr WAVE_FOR_COMPELETION na true, podasz wyjście podobne do tego pokazanego poniżej:


„Snapshot”:
„Snapshot”: „Snapshot_3”,
„UUID”: „TquhyOfirngmmtw0agbacq”,
„Version_id”: 7100299,
„Wersja”: „7.10.2 ",
„indeksy”: [
".kibana_1 "
],
„data_streams”: [],
„Ableal_Global_State”: False,
„Metadata”:
„Take_by”: „elasticadmin”,
„Podeszła_because”: „Cotygodniowe kopie zapasowe”
,
„Stan”: „Sukces”,
„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,
„Czas trwania_in_millis”: 818,
„Awarie”: [],
„Shards”:
„Total”: 1,
„nieudany”: 0,
„Sukces”: 1


Jak wyświetlić migawki

API GET Snapshot obsługuje funkcjonalność migawek View.

Wszystko, co musisz przekazać w żądaniu, to repozytorium migawki i nazwa migawki, którą chcesz wyświetlić szczegóły.

Migawka powinna odpowiedzieć ze szczegółami na temat określonej migawki. Te szczegóły obejmują:

  • Wartości czasu rozpoczęcia i zakończenia
  • Wersja ElasticSearch, która utworzyła migawkę
  • Lista zawartych indeksów
  • Obecny stan migawki
  • Lista awarii, które miały miejsce podczas migawki

Na przykład, aby wyświetlić szczegóły dotyczące Snapshot_3 utworzonego powyżej, użyj żądania pokazanego poniżej:

GET/_SNAPSHOT/BACKUP_REPO/Snapshot_3
Aby użyć curl, użyj poniższego polecenia:
[cc lang = "text" szerokie = "100%" height = "100%" uciekł = "true" motyw = "blackboard" nowrapt = "0"]
curl -xget „http: // localhost: 9200/_snapshot/backup_repo/snapshot_3”

Żądanie powinno zwrócić odpowiedź ze szczegółami migawki jako:


„Migawki”: [

„Snapshot”: „Snapshot_3”,
„UUID”: „TquhyOfirngmmtw0agbacq”,
„Version_id”: 7100299,
„Wersja”: „7.10.2 ",
„indeksy”: [
".kibana_1 "
],
„data_streams”: [],
„Ableal_Global_State”: False,
„Metadata”:
„Take_by”: „elasticadmin”,
„Podeszła_because”: „Cotygodniowe kopie zapasowe”
,
„Stan”: „Sukces”,
„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,
„Czas trwania_in_millis”: 818,
„Awarie”: [],
„Shards”:
„Total”: 1,
„nieudany”: 0,
„Sukces”: 1


]

Możesz także dostosować ciało żądania, aby uzyskać szczegółowe informacje na temat migawki. Jednak na razie nie zajmiemy się tym.

Powiedzmy, że chcesz wyświetlić informacje o wszystkich migawkach w określonym repozytorium migawek; W takim przypadku możesz przekazać wieloznaczną kartę gwiazdkową na żądanie jako:

GET/_SNAPSHOT/BACKUP_REPO/*

Komenda Curl dla tego jest:

curl -xget „http: // localhost: 9200/_snapshot/backup_repo/*”

Odpowiedź jest szczegółowym zrzutem wszystkich migawek w tym repozytorium jako:


„Migawki”: [

„Snapshot”: „Snapshot_2021”,
„UUID”: „7cfighzvrtyzw07c60d2iw”,
„Version_id”: 7100299,
„Wersja”: „7.10.2 ",
„indeksy”: [
„my_index”,
„single_index_with_body”,
„my_index_2”,
„single_index”,
".kibana_1 ",
"test"
],
„data_streams”: [],
„Ableal_Global_State”: True,
„Stan”: „Sukces”,
„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,
„Czas trwania_in_millis”: 2659,
„Awarie”: [],
„Shards”:
„Total”: 7,
„nieudany”: 0,
„Sukces”: 7

,

„Snapshot”: „Snapshot_2”,
„UUID”: „W58irymoraub8vc7cg04wg”,
„Version_id”: 7100299,
„Wersja”: „7.10.2 ",
„indeksy”: [
".kibana_1 "
],
„data_streams”: [],
„Ableal_Global_State”: False,
„Metadata”:
„Take_by”: „elasticadmin”,
„Podeszła_because”: „Daily Backup”
,
„Stan”: „Sukces”,
„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,
„Czas trwania_in_millis”: 1439,
„Awarie”: [],
„Shards”:
„Total”: 1,
„nieudany”: 0,
„Sukces”: 1

,

„Snapshot”: „Snapshot_3”,
„UUID”: „TquhyOfirngmmtw0agbacq”,
„Version_id”: 7100299,
„Wersja”: „7.10.2 ",
„indeksy”: [
".kibana_1 "
],
„data_streams”: [],
„Ableal_Global_State”: False,
„Metadata”:
„Take_by”: „elasticadmin”,
„Podeszła_because”: „Cotygodniowe kopie zapasowe”
,
„Stan”: „Sukces”,
„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,
„Czas trwania_in_millis”: 818,
„Awarie”: [],
„Shards”:
„Total”: 1,
„nieudany”: 0,
„Sukces”: 1


]

Wieloznaczne są bardzo przydatne do filtrowania konkretnych informacji o migawkach.

Jak usunąć migawkę

Usuwanie migawki jest bardzo proste: wystarczy użyć żądania usuwania jako:

Usuń/_snapshot/backup_repo/snapshot_2021/

Polecenie Curl to:

curl -xDelete „http: // localhost: 9200/_snapshot/backup_repo/snapshot_2021/”

Odpowiedź należy potwierdzić: prawda


„Uznane”: prawda

Jeśli migawka nie istnieje, otrzymasz kod stanu 404 i brak błąd migawki jako:


"błąd" :
„root_cause”: [

„Type”: „Snapshot_missing_exception”,
„Powód”: „[Backup_repo: Snapshot_2021] brakuje”

],
„Type”: „Snapshot_missing_exception”,
„Powód”: „[Backup_repo: Snapshot_2021] brakuje”
,
„Status”: 404

Wniosek

W tym przewodniku omówiliśmy, jak tworzyć migawki ElasticSearch za pomocą API Snapshot. To, czego się nauczyłeś, powinno wystarczyć, aby umożliwić utworzenie repozytorium migawek, wyświetlanie repozytoriów migawek, tworzenie, wyświetlanie i usuwanie migawek. Chociaż są dostosowywania, które możesz zrobić z API, wiedza w tym przewodniku powinna wystarczyć, aby zacząć.

Dziękuję za przeczytanie.