Aby pomóc zabezpieczyć się przed utratą danych, Elasticsearch oferuje różne funkcje, które pozwalają zapewnić dostępność danych, nawet w przypadku awarii danych.
Niektóre ze sposobów, jakie Elasticsearch wykorzystuje w celu zapewnienia dostępności danych, obejmują:
- Replikacje między klastrami — funkcja, która umożliwia replikację danych do zestawu klastrów obserwujących; klaster obserwujący to klaster rezerwowy używany w przypadku awarii klastra głównego.
- Inna metoda używana przez Elasticsearch do zapobiegania używaniu kopii zapasowych danych, zwana również migawkami klastrów. Jeśli zajdzie taka potrzeba, możesz użyć tych migawek do przywrócenia danych w zupełnie nowym klastrze.
Ten samouczek pokazuje, jak tworzyć migawki klastra, które pomogą Ci być gotowym na wypadek nieodwracalnej awarii danych.
Zacznijmy.
Co to jest migawka Elasticsearch?
Jak wspomniano, elastyczna migawka to kopia zapasowa działającego klastra Elasticsearch. Ta migawka może obejmować cały klaster lub określone indeksy i strumienie danych w ramach konkretnego klastra.
Jak wkrótce się dowiesz, 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 wykorzystuje Snapshot API do wykonywania tych zadań.
Niektóre z zadań obsługiwanych przez Snapshot API to:
- Umieść repozytorium migawek
- Zweryfikuj repozytorium migawek
- Pobierz repozytorium migawek
- Usuń repozytorium migawek
- Wyczyść repozytorium migawek
- Utwórz migawkę
- Klonuj migawkę
- Pobierz migawkę
- Uzyskaj stan zrzutu
- Przywróć migawkę
- Usuń zrzut
Aby utworzyć repozytorium migawek, używamy punktu końcowego API _snapshot, po którym następuje 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/kopie zapasowe",
"kompresja": prawda
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": "/ strona główna/główna/kopie zapasowe”, "kompresuj": prawda 'Aby przekazać ścieżkę repozytorium migawek, musisz najpierw dodać do ścieżki ścieżkę systemową lub katalog nadrzędny.wpis repo w elasticsearch.Yml
Ścieżka.wpis repo powinien wyglądać podobnie do:
ścieżka.repozytorium: [„/home/root/kopie zapasowe”]Plik konfiguracyjny Elasticsearch można znaleźć w /etc/elasticsearch/elasticsearch.Yml
UWAGA: Po dodaniu ścieżki.repozytorium, może być konieczne ponowne uruchomienie klastrów Elasticsearch. Dodatkowo obsługiwane wartości dla path.repozytorium może się bardzo różnić w zależności od platformy, na której działa Elasticsearch.
Jak wyświetlić repozytorium migawek
Aby potwierdzić pomyślne utworzenie repozytorium migawek, użyj żądania GET z punktem końcowym _snapshot jako:
POBIERZ /_snapshot/backup_repoMoż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:
"repo_zapasowe" :
"typ" : "fs",
"ustawienia" :
"skompresuj" : "prawda",
"lokalizacja" : """/dom/główny/kopie zapasowe"""
Jeśli masz więcej niż jedno repozytoria migawek i nie pamiętasz nazwy, możesz pominąć nazwę repozytorium i wywołać punkt końcowy _snapshot, aby wyświetlić listę wszystkich istniejących repozytoriów.
GET /_snapshot lub cURL curl -XGET http://localhost:9200/_snapshot
Jak stworzyć migawkę Elasticsearch?
Tworzenie migawki Elasticsearch dla konkretnego repozytorium migawek jest obsługiwane przez API tworzenia migawek. API wymaga nazwy repozytorium zrzutów i nazwy zrzutu.
UWAGA: Pojedyncze repozytorium migawek może zawierać więcej niż jedną migawkę tych samych klastrów, o ile mają one unikalne tożsamości/nazwy.
Rozważ następujące żądanie dodania migawki o nazwie snapshot_2021 do repozytorium backup_repo.
PUT /_migawka/repo_zapasowe/migawka_2021Aby 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 zaakceptowane: prawda
"zaakceptowany" : prawda
Ponieważ nie określa, które strumienie danych i indeksy mają zostać zarchiwizowane, wywołanie powyższego żądania tworzy kopię zapasową wszystkich danych i stanu klastra. Aby określić, które strumienie danych i indeksy mają zostać uwzględnione w kopii zapasowej, dodaj to do treści żądania.
Rozważ następujące żądanie, które tworzy kopię zapasową .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": prawda,
"include_global_state": prawda,
"metadane":
"taken_by": "elasticadmin",
„Taken_because”: „Codzienna kopia zapasowa”
Polecenie cURL to:
curl -XPUT "http://localhost:9200/_snapshot/backup_repo/snapshot_2" -H 'Content-Type: application/json' -d' "indices": ".kibana", "ignore_unavailable": true, "include_global_state": true, "metadata": "taken_by": "elasticadmin", "taken_because": "Codzienna kopia zapasowa" 'Ignorowanie_niedostępne ustawia stan logiczny, który zwraca błąd, jeśli jakiekolwiek strumienie danych lub indeksy określone w migawce są niedostępne lub zamknięte.
Parametr include_global_state zapisuje bieżący stan klastra, jeśli prawda. Niektóre z zapisanych informacji o klastrze obejmują:
- Trwałe ustawienia klastra
- Szablony indeksów
- Starsze szablony indeksów
- Rurociągi dolotowe
- Zasady dotyczące cyklu życia ILM
UWAGA: Możesz podać więcej niż jeden indeks oddzielony przecinkami.
Typowym argumentem używanym z punktem końcowym _snapshot jest wait_for_completion, wartość logiczna określająca, czy (prawda) czy nie (fałsz) żądanie powinno powrócić natychmiast po zainicjowaniu migawki (domyślnie) lub czekać na zakończenie migawki.
Na przykład:
PUT /_snapshot/backup_repo/snapshot_3?wait_for_completion=true"indeksy": ".Kibana”,
"ignore_unavailable": prawda,
"include_global_state": fałsz,
"metadane":
"taken_by": "elasticadmin",
„Taken_because”: „Tygodniowa kopia zapasowa”
Polecenie cURL to:
curl -XPUT "http://localhost:9200/_snapshot/backup_repo/snapshot_3?wait_for_completion=true" -H 'Content-Type: application/json' -d' "indices": ".kibana", "ignore_unavailable": true, "include_global_state": false, "metadata": "taken_by": "elasticadmin", "taken_because": "Tygodniowa kopia zapasowa" 'Gdy ustawisz parametr wait_for_completion na true, otrzymasz wynik podobny do pokazanego poniżej:
"migawka" :
"migawka" : "migawka_3",
"uuid" : "tQUHyofIRnGMMtw0AGBACQ",
„identyfikator wersji” : 7100299,
„wersja” : „7.10.2",
"indeksy" : [
".kibana_1"
],
"strumienie_danych" : [ ],
"include_global_state" : fałsz,
"metadane" :
"taken_by" : "elasticadmin",
„Taken_because”: „Tygodniowa kopia zapasowa”
,
"stan" : "SUKCES",
"czas_rozpoczęcia" : "2021-01-19T13:36:59.615Z",
„czas_rozpoczęcia_w_millis” : 1611063419615,
"czas_zakończenia" : "2021-01-19T13:37:00.433Z",
„czas_zakończenia_w_millis” : 1611063420433,
„czas_w_mili” : 818,
"awarie" : [ ],
"odłamki" :
„ogółem” : 1,
"nie powiodło się" : 0,
„udany” : 1
Jak przeglądać migawki
API migawek GET obsługuje funkcjonalność migawek widoków.
Wszystko, co musisz przekazać w żądaniu, to repozytorium migawek i nazwę migawki, której szczegóły chcesz wyświetlić.
Zrzut powinien odpowiadać szczegółowymi informacjami o określonym zrzucie. Te szczegóły obejmują:
- Wartości czasu rozpoczęcia i zakończenia
- Wersja Elasticsearch, która utworzyła migawkę
- Lista uwzględnionych indeksów
- Aktualny stan zrzutu
- Lista awarii, które wystąpiły podczas wykonywania zrzutu
Na przykład, aby wyświetlić szczegóły dotyczące utworzonej powyżej migawki_3, użyj poniższego żądania:
POBIERZ /_snapshot/backup_repo/snapshot_3Aby użyć cURL, użyj poniższego polecenia:
[cc lang="tekst" width="100%" height="100%" escaped="true" theme="tablica" nowrap="0"]
curl -XGET „http://localhost:9200/_snapshot/backup_repo/snapshot_3”
Żądanie powinno zwrócić odpowiedź ze szczegółami migawki jako:
"migawki" : [
"migawka" : "migawka_3",
"uuid" : "tQUHyofIRnGMMtw0AGBACQ",
"identyfikator wersji" : 7100299,
„wersja” : „7.10.2",
"indeksy" : [
".kibana_1"
],
"strumienie_danych" : [ ],
"include_global_state" : fałsz,
"metadane" :
"taken_by" : "elasticadmin",
„Taken_because”: „Tygodniowa kopia zapasowa”
,
"stan" : "SUKCES",
"czas_rozpoczęcia" : "2021-01-19T13:36:59.615Z",
„czas_rozpoczęcia_w_millis” : 1611063419615,
"czas_zakończenia" : "2021-01-19T13:37:00.433Z",
„czas_zakończenia_w_millis” : 1611063420433,
„czas_w_mili” : 818,
"awarie" : [ ],
"odłamki" :
„ogółem” : 1,
"nie powiodło się" : 0,
„udany” : 1
]
Możesz także dostosować treść żądania, aby uzyskać szczegółowe informacje na temat zrzutu. Jednak na razie nie będziemy się tym zajmować.
Powiedzmy, że chcesz wyświetlić informacje o wszystkich migawkach w określonym repozytorium migawek; w takim przypadku możesz przekazać w żądaniu symbol wieloznaczny z gwiazdką jako:
POBIERZ /_snapshot/backup_repo/*Polecenie cURL to:
curl -XGET „http://localhost:9200/_snapshot/backup_repo/*”Odpowiedzią jest szczegółowy zrzut wszystkich migawek w tym repozytorium jako:
"migawki" : [
"migawka" : "migawka_2021",
"uuid" : "7CFigHzvRtyZW07c60d2iw",
"identyfikator wersji" : 7100299,
„wersja” : „7.10.2",
"indeksy" : [
„mój_indeks”,
"pojedynczy_indeks_z_body",
„mój_indeks_2”,
"pojedynczy_indeks",
".kibana_1",
"test"
],
"strumienie_danych" : [ ],
"include_global_state" : prawda,
"stan" : "SUKCES",
"czas_rozpoczęcia" : "2021-01-19T13:28:48.172Z",
„czas_rozpoczęcia_w_millis” : 1611062928172,
"czas_zakończenia" : "2021-01-19T13:28:50.831Z",
„czas_zakończenia_w_millis” : 1611062930831,
„czas trwania_w_millis” : 2659,
"awarie" : [ ],
"odłamki" :
„ogółem” : 7,
"nie powiodło się" : 0,
„udany” : 7
,
"migawka" : "migawka_2",
"uuid" : "w58IrYmORAub8VC7cg04Wg",
„identyfikator wersji” : 7100299,
„wersja” : „7.10.2",
"indeksy" : [
".kibana_1"
],
"strumienie_danych" : [ ],
"include_global_state" : fałsz,
"metadane" :
"taken_by" : "elasticadmin",
"taken_because" : "Codzienna kopia zapasowa"
,
"stan" : "SUKCES",
"czas_rozpoczęcia" : "2021-01-19T13:33:34.482Z",
„czas_rozpoczęcia_w_millis” : 1611063214482,
"czas_zakończenia" : "2021-01-19T13:33:35.921Z",
„czas_zakończenia_w_millis” : 1611063215921,
„czas trwania_w_millis” : 1439,
"awarie" : [ ],
"odłamki" :
„ogółem” : 1,
"nie powiodło się" : 0,
„udany” : 1
,
"migawka" : "migawka_3",
"uuid" : "tQUHyofIRnGMMtw0AGBACQ",
"identyfikator wersji" : 7100299,
„wersja” : „7.10.2",
"indeksy" : [
".kibana_1"
],
"strumienie_danych" : [ ],
"include_global_state" : fałsz,
"metadane" :
"taken_by" : "elasticadmin",
„Taken_because”: „Tygodniowa kopia zapasowa”
,
"stan" : "SUKCES",
"czas_rozpoczęcia" : "2021-01-19T13:36:59.615Z",
„czas_rozpoczęcia_w_millis” : 1611063419615,
"czas_zakończenia" : "2021-01-19T13:37:00.433Z",
„czas_zakończenia_w_millis” : 1611063420433,
„czas_w_mili” : 818,
"awarie" : [ ],
"odłamki" :
„ogółem” : 1,
"nie powiodło się" : 0,
„udany” : 1
]
Symbole wieloznaczne są bardzo przydatne do filtrowania określonych informacji o zrzutach.
Jak usunąć migawkę
Usunięcie migawki jest bardzo proste: wystarczy użyć żądania DELETE jako:
USUŃ /_migawka/repo_zapasowe/migawka_2021/Polecenie cURL to:
curl -XDELETE „http://localhost:9200/_snapshot/backup_repo/snapshot_2021/”Odpowiedź powinna być potwierdzona:prawda
„potwierdzony”: prawda
Jeśli migawka nie istnieje, otrzymasz kod stanu 404 i błąd braku migawki jako:
"błąd" :
"pierwotna przyczyna" : [
"typ" : "migawka_brakującego_wyjątku",
"powód" : "Brakuje [repo_zapasowe:migawka_2021]"
],
"typ" : "migawka_brakującego_wyjątku",
"powód" : "Brakuje [repo_zapasowe:migawka_2021]"
,
"stan" : 404
Wniosek
W tym przewodniku omówiliśmy tworzenie migawek Elasticsearch za pomocą Snapshot API. To, czego się nauczyłeś, powinno wystarczyć do utworzenia repozytorium migawek, przeglądania repozytoriów migawek, tworzenia, przeglądania i usuwania migawek. Chociaż istnieją dostosowania, których możesz dokonać za pomocą interfejsu API, wiedza zawarta w tym przewodniku powinna wystarczyć, aby rozpocząć.
Dziękuję za przeczytanie.