Sikkerhetskopiering og gjenopprett elasticsearch -klynger med øyeblikksbilder

Sikkerhetskopiering og gjenopprett elasticsearch -klynger med øyeblikksbilder
Elasticsearch handler om data, og som du sannsynligvis allerede vet, er data viktig for deg og Elasticsearch. Imidlertid, så mye som både du og Elasticsearch Love Data, kan datafeil oppstå, noe som fører til tap av data.

For å bidra til å beskytte mot tap av data, har Elasticsearch forskjellige funksjoner som lar deg sikre datatilgjengelighet, selv i datasviktforekomster.

Noen av måtene Elasticsearch bruker for å gi deg datatilgjengelighet inkluderer:

  • Tverrklynger replikasjoner, en funksjon som lar deg gjenskape data til et sett med følgerklynger; En følgerklynge er en standby -klynge som brukes i tilfelle svikt fra masterklyngen.
  • En annen metode som Elasticsearch bruker for å forhindre data ved bruk av sikkerhetskopiering-også kalt klyngebilder. Hvis behovet oppstår, kan du bruke disse øyeblikksbildene til å gjenopprette data på en helt ny klynge.

Denne opplæringen viser deg hvordan du oppretter klyngebilder, noe som vil hjelpe deg å være klar hvis en irreversibel datafeilhendelse oppstår.

La oss komme i gang.

Hva er et elasticsearch -øyeblikksbilde?

Som nevnt er et elastisk øyeblikksbilde en sikkerhetskopi av en løpende Elasticsearch -klynge. Dette øyeblikksbildet kan være av en hel klynge eller spesifikke indekser og datastrømmer i en bestemt klynge.

Som du snart vil lære, administrerer et depot -plugin Elasticsearch -øyeblikksbilder. Disse øyeblikksbildene kan lagres på forskjellige lagringssteder definert av plugin. Disse inkluderer lokale systemer og eksterne systemer som GCP -lagring, Amazon EC2, Microsoft Azure og mange flere.

Hvordan lage et Elasticsearch Snapshot -depot

Før vi dykker ned i å lage elasticsearch -øyeblikksbilder, må vi lage et øyeblikksbilde depot fordi mange av Elasticsearchs tjenester bruker Snapshot API for å utføre disse oppgavene.

Noen av oppgavene som er håndtert av Snapshot API er:

  • Sett øyeblikksbilde depot
  • Kontroller Snapshot Repository
  • Få øyeblikksbilde depot
  • Slett Snapshot Repository
  • Rydd opp øyeblikksbilde depot
  • Lag øyeblikksbilde
  • Klones øyeblikksbilde
  • Få øyeblikksbilde
  • Få øyeblikksbilde status
  • Gjenopprett øyeblikksbilde
  • Slett øyeblikksbilde

For å lage et øyeblikksbilde depot, bruker vi _snapshot API -endepunktet etterfulgt av navnet vi ønsker å tilordne til Snapshot -depotet. Vurder forespørselen nedenfor som oppretter et depot som heter Backup_Repo

Put /_snapshot /backup_repo

"Type": "FS",
"Innstillinger":
"Plassering": "/Hjem/Root/Backups",
"Komprimering": True

Her er en Curl -kommando for ovennevnte forespørsel:

Curl -xput "http: // localhost: 9200/_snapshot/backup_repo" -h 'innholdstype: applikasjon/json' -d '"type": "fs", "innstillinger": "location": "///////// Hjem/rot/sikkerhetskopier "," komprimering ": true '

For å passere øyeblikksbilde -depotbanen, må du først legge til systemets bane eller overordnede katalog til banen.repo oppføring i Elasticsearch.yml

Banen.Repo -oppføring skal se ut som:

sti.Repo: [“/Home/Root/Backups”]

Du kan finne Elasticsearch -konfigurasjonsfilen som ligger i/etc/Elasticsearch/Elasticsearch.yml

MERK: Etter å ha lagt til stien.repo, det kan hende du må starte Elasticsearch -klynger på nytt. I tillegg støttes verdiene for sti.Repo kan variere vilt avhengig av plattformen som kjører Elasticsearch.

Hvordan du ser på øyeblikksbildet depot

For å bekrefte den vellykkede opprettelsen av Snapshot -depotet, bruk Get -forespørselen med _snapshot -endepunktet som:

Få /_snapshot /backup_repo

Du kan også bruke følgende Curl -kommando:

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

Dette skal vise informasjon om backup -depotet, for eksempel:


"backup_repo":
"Type": "FS",
"Innstillinger":
"Komprimering": "True",
"Plassering": "" "/Home/Root/Backups" ""


Hvis du har mer enn ett øyeblikksbilde -depoter og ikke husker navnet, kan du utelate repo -navnet og ringe _snapshot -endepunktet for å liste opp alle eksisterende depoter.

Get/_Snapshot eller Curl Curl -Xget http: // localhost: 9200/_Snapshot

Hvordan lage et elasticsearch -øyeblikksbilde

Opprette et elasticsearch -øyeblikksbilde for et spesifikt øyeblikksbilde depot håndteres av Create Snapshot API. APIen krever Snapshot -depotnavnet og navnet på øyeblikksbildet.

MERK: Et enkelt øyeblikksbilde depot kan ha mer enn ett øyeblikksbilde av de samme klyngene så lenge de har unike identiteter/navn.

Tenk på følgende forespørsel om å legge til et øyeblikksbilde kalt Snapshot_2021 til Backup_Repo -depotet.

Put/_snapshot/backup_repo/snapshot_2021

For å bruke krøll, bruk kommandoen:

Curl -xput “http: // localhost: 9200/_snapshot/backup_repo/snapshot_2021”

Kommandoen skal returnere et svar fra Elasticsearch med 200 OK og akseptert: True


"akseptert": sant

Siden den ikke spesifiserer hvilke datastrømmer og indekser du vil ha sikkerhetskopiert, og kaller forespørselen ovenfor sikkerhetskopierer alle dataene og klyngestaten. For å spesifisere hvilke datastrømmer og indekser som skal sikkerhetskopieres, kan du legge det til forespørselsorganet.

Tenk på følgende forespørsel som sikkerhetskopierer .Kibana Index (en systemindeks) og spesifiserer hvilken bruker som autoriserte øyeblikksbildet og årsaken.

Put/_snapshot/backup_repo/snapshot_2

"Indekser": ".Kibana ",
"Ignore_unavailable": True,
"Inkluder_global_state": True,
"Metadata":
"tatt_by": "Elasticadmin",
“Take_because”: “Daglig sikkerhetskopi”

Curl -kommandoen for det er:

Curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_2" -h 'innholdstype: applikasjon/json' -d '"indekser": ".kibana "," ignore_unavailable ": true," include_global_state ": true," metadata ": " tagn_by ":" elasticadmin "," tet_because ":" Daily backup " '

Ignore_unavailable setter en boolsk tilstand som returnerer en feil hvis noen datastrømmer eller indekser som er spesifisert i øyeblikksbildet mangler eller lukkes.

Parameteren Include_Global_State lagrer klyngens nåværende tilstand hvis True. Noen av klyngeinformasjonen som er lagret inkluderer:

  • Vedvarende klyngeinnstillinger
  • Indeksmaler
  • Legacy indeksmaler
  • Innta rørledninger
  • ILM livssykluspolitikk

MERK: Du kan spesifisere mer enn ett indekser atskilt med komma.

Et vanlig argument brukt med _snapshot -endepunktet er wait_for_completion, en boolsk verdi som definerer om (sant) eller ikke (falsk) forespørselen skal returnere umiddelbart etter øyeblikksbilde initialisering (standard) eller vente på et øyeblikksbilde fullføring.

For eksempel:

Put/_snapshot/backup_repo/snapshot_3?WAIT_FOR_COMPLETION = True

"Indekser": ".Kibana ",
"Ignore_unavailable": True,
"Inkluder_global_state": FALSE,
"Metadata":
"tatt_by": "Elasticadmin",
“Take_because”: “Ukentlig sikkerhetskopi”

Curl -kommandoen er:

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 ": falsk," metadata ": " take_by ":" elasticadmin "," tagn_because ":" Weekly backup " '

Når du har parameteren Wait_for_Completion satt til True, vil du gi en utgang som ligner den som er vist nedenfor:


"Snapshot":
"Snapshot": "Snapshot_3",
"uuid": "tquhyofirngmmtw0agbacq",
"versjon_id": 7100299,
"Versjon": "7.10.2 ",
"Indekser": [
"".kibana_1 "
],
"Data_streams": [],
"Inkluder_global_state": FALSE,
"Metadata":
"tatt_by": "Elasticadmin",
“Take_because”: “Ukentlig sikkerhetskopi”
,
"State": "Suksess",
"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,
"Varighet_in_millis": 818,
"Feil": [],
"Shards":
"Totalt": 1,
"Mislykket": 0,
"Vellykket": 1


Hvordan se øyeblikksbilder

Get Snapshot API håndterer visningssnapshots -funksjonaliteten.

Alt du trenger å sende i forespørselen er Snapshot Repository og navnet på øyeblikksbildet du vil se detaljene.

Stillbildet skal svare med detaljer om et spesifisert øyeblikksbilde. Disse detaljene inkluderer:

  • Start og slutttidsverdier
  • Versjonen av Elasticsearch som opprettet øyeblikksbildet
  • Liste over inkluderte indekser
  • Øyeblikksbildets nåværende tilstand
  • Liste over feil som skjedde under øyeblikksbildet

For å se detaljene om Snapshot_3 som er opprettet ovenfor, bruker du for eksempel forespørselen nedenfor:

Få/_snapshot/backup_repo/snapshot_3
For å bruke krøll, bruk kommandoen nedenfor:
[cc lang = "tekst" bredde = "100%" høyde = "100%" rømte = "true" tema = "blackboard" nowrap = "0"]
Curl -xget “http: // localhost: 9200/_snapshot/backup_repo/snapshot_3”

Forespørselen skal returnere et svar med detaljene i øyeblikksbildet som:


"Snapshots": [

"Snapshot": "Snapshot_3",
"uuid": "tquhyofirngmmtw0agbacq",
"versjon_id": 7100299,
"Versjon": "7.10.2 ",
"Indekser": [
"".kibana_1 "
],
"Data_streams": [],
"Inkluder_global_state": FALSE,
"Metadata":
"tatt_by": "Elasticadmin",
“Take_because”: “Ukentlig sikkerhetskopi”
,
"State": "Suksess",
"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,
"Varighet_in_millis": 818,
"Feil": [],
"Shards":
"Totalt": 1,
"Mislykket": 0,
"Vellykket": 1


]

Du kan også tilpasse forespørselsorganet for å få spesifikke detaljer om et øyeblikksbilde. Vi vil imidlertid ikke se nærmere på det for nå.

La oss si at du vil se informasjon om alle øyeblikksbilder i et spesifikt øyeblikksbilde depot; I så fall kan du passere et stjerne -jokertegn i forespørselen som:

Få/_snapshot/backup_repo/*

Curl -kommandoen for det er:

Curl -xget “http: // localhost: 9200/_snapshot/backup_repo/*”

Responsen er en detaljert dump av alle øyeblikksbilder i det depotet som:


"Snapshots": [

"Snapshot": "Snapshot_2021",
"UUID": "7CFIGHZVRTYZW07C60D2IW",
"versjon_id": 7100299,
"Versjon": "7.10.2 ",
"Indekser": [
"my_index",
"single_index_with_body",
"my_index_2",
"single_index",
"".kibana_1 ",
"test"
],
"Data_streams": [],
"Inkluder_global_state": True,
"State": "Suksess",
"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,
"Varighet_in_millis": 2659,
"Feil": [],
"Shards":
"Totalt": 7,
"Mislykket": 0,
"Vellykket": 7

,

"Snapshot": "Snapshot_2",
"uuid": "w58irymoraub8vc7cg04wg",
"versjon_id": 7100299,
"Versjon": "7.10.2 ",
"Indekser": [
"".kibana_1 "
],
"Data_streams": [],
"Inkluder_global_state": FALSE,
"Metadata":
"tatt_by": "Elasticadmin",
"Tatt_because": "Daglig sikkerhetskopi"
,
"State": "Suksess",
"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,
"Varighet_in_millis": 1439,
"Feil": [],
"Shards":
"Totalt": 1,
"Mislykket": 0,
"Vellykket": 1

,

"Snapshot": "Snapshot_3",
"uuid": "tquhyofirngmmtw0agbacq",
"versjon_id": 7100299,
"Versjon": "7.10.2 ",
"Indekser": [
"".kibana_1 "
],
"Data_streams": [],
"Inkluder_global_state": FALSE,
"Metadata":
"tatt_by": "Elasticadmin",
“Take_because”: “Ukentlig sikkerhetskopi”
,
"State": "Suksess",
"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,
"Varighet_in_millis": 818,
"Feil": [],
"Shards":
"Totalt": 1,
"Mislykket": 0,
"Vellykket": 1


]

Jokertegn er veldig nyttige for å filtrere spesifikk informasjon om øyeblikksbildene.

Hvordan slette et øyeblikksbilde

Å slette et øyeblikksbilde er veldig enkelt: alt du trenger å gjøre er å bruke slettforespørselen som:

Slette/_snapshot/backup_repo/snapshot_2021/

Curl -kommandoen er:

Curl -xDelete “http: // localhost: 9200/_snapshot/backup_repo/snapshot_2021/”

Responsen skal anerkjennes: sant


“Erkjent”: True

Hvis øyeblikksbildet ikke eksisterer, vil du få en statuskode på 404 og øyeblikksbilde manglende feil som:


"Feil":
"Opprinnelig årsak" : [

"type": "snapshot_missing_exception",
"Årsak": "[backup_repo: snapshot_2021] mangler"

],
"type": "snapshot_missing_exception",
"Årsak": "[backup_repo: snapshot_2021] mangler"
,
"Status": 404

Konklusjon

I denne guiden har vi diskutert hvordan du oppretter elasticsearch -øyeblikksbilder ved hjelp av øyeblikksbilde API. Det du har lært, skal være nok til at du kan lage et øyeblikksbilde depot, se på øyeblikksbildet depoter, opprette, se og slette øyeblikksbilder. Selv om det er tilpasninger du kan gjøre med API, bør kunnskapen i denne guiden være nok til å komme i gang.

Takk for at du leser.