For å beskytte mot tap av data har Elasticsearch forskjellige funksjoner som lar deg sikre datatilgjengelighet, selv i datafeilstilfeller.
Noen av måtene som Elasticsearch bruker for å gi deg datatilgjengelighet, inkluderer:
- Replikasjoner på tvers av klynger, en funksjon som lar deg replikere data til et sett med følgere. en følger-klynge er en standby-klynge som brukes i tilfelle feil fra hovedklyngen.
- En annen metode som Elasticsearch bruker for å forhindre data ved hjelp av sikkerhetskopier - også kalt cluster snapshots. Hvis behovet oppstår, kan du bruke disse øyeblikksbildene til å gjenopprette data i en helt ny klynge.
Denne opplæringen viser deg hvordan du lager klyngemomenter, som vil hjelpe deg å være klar hvis en irreversibel datafeilhendelse skulle oppstå.
La oss komme i gang.
Hva er et øyeblikksbilde av elastisk søk?
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 pluginet. Disse inkluderer lokale systemer og eksterne systemer som GCP Storage, Amazon EC2, Microsoft Azure og mange flere.
Hvordan lage et Elasticsearch Snapshot Repository
Før vi dykker ned i å lage Elasticsearch-øyeblikksbilder, må vi opprette et øyeblikksbilde-arkiv fordi mange av Elasticsearch-tjenestene bruker Snapshot API for å utføre disse oppgavene.
Noen av oppgavene som håndteres av Snapshot API er:
- Sett øyeblikksbilde arkiv
- Bekreft øyeblikksbilde arkiv
- Få øyeblikksbilde arkiv
- Slett øyeblikksbilde arkiv
- Rydd opp øyeblikksbildelageret
- Lag øyeblikksbilde
- Klon øyeblikksbilde
- Få øyeblikksbilde
- Få øyeblikksbildestatus
- Gjenopprett øyeblikksbilde
- Slett øyeblikksbilde
For å opprette et øyeblikksbilde-arkiv bruker vi _snapshot API-endepunktet etterfulgt av navnet vi vil tilordne øyeblikksbildelageret. Vurder forespørselen nedenfor som oppretter et lager kalt backup_repo
PUT / _snapshot / backup_repo"type": "fs",
"innstillinger":
"location": "/ home / root / backups",
"komprimere": sant
Her er en CURL-kommando for forespørselen ovenfor:
krølle -XPUT "http: // localhost: 9200 / _snapshot / backup_repo" -H 'Content-Type: application / json' -d '"type": "fs", "settings": "location": "/ home / root / backups "," compress ": true 'For å passere øyeblikksbilde-arkivbanen må du først legge til systemets bane eller overordnede katalog i banen.repo oppføring i elasticsearch.yml
Banen.repooppføring skal se ut som:
sti.repo: [“/ home / root / backups]]Du finner konfigurasjonsfilen til Elasticsearch i / etc / elasticsearch / elasticsearch.yml
MERK: Etter å ha lagt til stien.repo, må du kanskje starte Elasticsearch-klynger på nytt. I tillegg støttes verdiene for banen.repo kan variere vilt avhengig av plattformen som kjører Elasticsearch.
Hvordan vise Snapshot Repository
For å bekrefte vellykket opprettelse av øyeblikksbildelageret, bruk GET-forespørselen med _snapshot-sluttpunktet som:
GET / _snapshot / backup_repoDu kan også bruke følgende cURL-kommando:
krøll -XGET "http: // localhost: 9200 / _snapshot / backup_repo"Dette skal vise informasjon om reservelageret, for eksempel:
"backup_repo":
"type": "fs",
"innstillinger":
"komprimere": "sant",
"location": "" "/ home / root / backups" ""
Hvis du har mer enn ett øyeblikksbilde-arkiv og ikke husker navnet, kan du utelate reponavnet og ringe til _snapshot-sluttpunktet for å liste alle eksisterende lagringssteder.
GET / _snapshot eller curl curl -XGET http: // localhost: 9200 / _snapshot
Hvordan lage et øyeblikksbilde av elastisk søk
Opprette et Elasticsearch-øyeblikksbilde for et bestemt øyeblikksbilde-arkiv håndteres av API-et for øyeblikksbilde. API-et krever øyeblikksbilde-depotnavnet og navnet på øyeblikksbildet.
MERK: Et enkelt øyeblikksbilde arkiv kan ha mer enn ett øyeblikksbilde av de samme klyngene så lenge de har unike identiteter / navn.
Vurder følgende forespørsel om å legge til et øyeblikksbilde kalt snapshot_2021 i backup_repo-depotet.
PUT / _snapshot / backup_repo / snapshot_2021For å bruke cURL, bruk kommandoen:
krøll -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, ringer ovennevnte forespørsel sikkerhetskopier alle dataene og klyngetilstanden. For å spesifisere hvilke datastrømmer og indekser som skal sikkerhetskopieres, legg til det i forespørselen.
Vurder følgende forespørsel om sikkerhetskopiering av .kibana-indeks (en systemindeks) og spesifiserer hvilken bruker som autoriserte øyeblikksbildet og årsaken.
PUT / _snapshot / backup_repo / snapshot_2"indices": ".kibana ",
"ignore_unavailable": sant,
"include_global_state": sant,
"metadata":
"taken_by": "elastisk admin",
“Taken_because”: “Daily Backup”
CURL-kommandoen for det er:
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 ":" Daily Backup " 'Ignorer_tilgjengelig angir en boolsk tilstand som returnerer en feil hvis noen datastrømmer eller indekser spesifisert i øyeblikksbildet mangler eller lukkes.
Parameteren include_global_state lagrer klyngens nåværende tilstand hvis den er sann. Noe av klyngene som er lagret inkluderer:
- Vedvarende klyngeinnstillinger
- Indeksmaler
- Eldre indeksmaler
- Svelg rørledninger
- ILM livssykluspolitikk
MERK: Du kan spesifisere mer enn én indeks atskilt med komma.
Et vanlig argument brukt med _snapshot-endepunktet er wait_for_completion, en boolsk verdi som definerer om (true) eller ikke (false) forespørselen skal returneres umiddelbart etter øyeblikksbildeinitialisering (standard) eller vente på å fullføre et øyeblikksbilde.
For eksempel:
PUT / _snapshot / backup_repo / snapshot_3?wait_for_completion = sant"indices": ".kibana ",
"ignore_unavailable": sant,
"include_global_state": false,
"metadata":
"taken_by": "elastisk admin",
“Taken_because”: “Weekly Backup”
CURL-kommandoen er:
krøll -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 ":" Weekly Backup " 'Når du har satt parameteren wait_for_completion til true, gir du en utgang som ligner på den som er vist nedenfor:
"øyeblikksbilde":
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"versjon_id": 7100299,
"versjon": "7.10.2 ",
"indekser": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadata":
"taken_by": "elastisk admin",
“Taken_because”: “Weekly Backup”
,
"state": "SUCCESS",
"starttid": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"sluttid": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"varighet_in_millis": 818,
"feil": [],
"skjær":
"totalt": 1,
"mislyktes": 0,
"vellykket": 1
Hvordan vise stillbilder
GET snapshot API håndterer funksjonen for visning av øyeblikksbilder.
Alt du trenger å sende inn forespørselen er øyeblikksbildelageret og navnet på øyeblikksbildet du vil se detaljene.
Øyeblikksbildet skal svare med detaljer om et spesifisert øyeblikksbilde. Disse detaljene inkluderer:
- Start- og sluttidverdier
- Versjonen av Elasticsearch som skapte øyeblikksbildet
- Liste over inkluderte indekser
- Øyeblikksbildets nåværende tilstand
- Liste over feil som oppstod under øyeblikksbildet
For eksempel, for å se detaljene om snapshot_3 opprettet ovenfor, bruk forespørselen vist nedenfor:
GET / _snapshot / backup_repo / snapshot_3For å bruke cURL, bruk kommandoen nedenfor:
[cc lang = "text" width = "100%" height = "100%" escaped = "true" theme = "blackboard" nowrap = "0"]
krøll -XGET “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3”
Forespørselen skal returnere et svar med detaljene i øyeblikksbildet som:
"øyeblikksbilder": [
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"versjon_id": 7100299,
"versjon": "7.10.2 ",
"indekser": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadata":
"taken_by": "elastisk admin",
“Taken_because”: “Weekly Backup”
,
"state": "SUCCESS",
"starttid": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"sluttid": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"varighet_in_millis": 818,
"feil": [],
"skjær":
"totalt": 1,
"mislyktes": 0,
"vellykket": 1
]
Du kan også tilpasse forespørselen for å få spesifikke detaljer om et øyeblikksbilde. Imidlertid vil vi ikke se på det foreløpig.
La oss si at du vil se informasjon om alle øyeblikksbilder i et bestemt øyeblikksbilde-arkiv; I så fall kan du sende et jokertegn i stjernen i forespørselen som:
GET / _snapshot / backup_repo / *CURL-kommandoen for det er:
krøll -XGET “http: // localhost: 9200 / _snapshot / backup_repo / *”Svaret er en detaljert dump av alle øyeblikksbildene i datalageret som:
"øyeblikksbilder": [
"snapshot": "snapshot_2021",
"uuid": "7CFigHzvRtyZW07c60d2iw",
"versjon_id": 7100299,
"versjon": "7.10.2 ",
"indekser": [
"min_indeks",
"single_index_with_body",
"min_index_2",
"single_index",
".kibana_1 ",
"test"
],
"data_streams": [],
"include_global_state": sant,
"state": "SUCCESS",
"starttid": "2021-01-19T13: 28: 48.172Z ",
"start_time_in_millis": 1611062928172,
"sluttid": "2021-01-19T13: 28: 50.831Z ",
"end_time_in_millis": 1611062930831,
"varighet_in_millis": 2659,
"feil": [],
"skjær":
"totalt": 7,
"mislyktes": 0,
"vellykket": 7
,
"snapshot": "snapshot_2",
"uuid": "w58IrYmORAub8VC7cg04Wg",
"versjon_id": 7100299,
"versjon": "7.10.2 ",
"indekser": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadata":
"taken_by": "elastisk admin",
"taken_because": "Daglig sikkerhetskopiering"
,
"state": "SUCCESS",
"starttid": "2021-01-19T13: 33: 34.482Z ",
"start_time_in_millis": 1611063214482,
"sluttid": "2021-01-19T13: 33: 35.921Z ",
"end_time_in_millis": 1611063215921,
"varighet_in_millis": 1439,
"feil": [],
"skjær":
"totalt": 1,
"mislyktes": 0,
"vellykket": 1
,
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"versjon_id": 7100299,
"versjon": "7.10.2 ",
"indekser": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": false,
"metadata":
"taken_by": "elastisk admin",
“Taken_because”: “Weekly Backup”
,
"state": "SUCCESS",
"starttid": "2021-01-19T13: 36: 59.615Z ",
"start_time_in_millis": 1611063419615,
"sluttid": "2021-01-19T13: 37: 00.433Z ",
"end_time_in_millis": 1611063420433,
"varighet_in_millis": 818,
"feil": [],
"skjær":
"totalt": 1,
"mislyktes": 0,
"vellykket": 1
]
Jokertegn er veldig nyttige for å filtrere spesifikk informasjon om øyeblikksbildene.
Slik sletter du et øyeblikksbilde
Det er veldig enkelt å slette et øyeblikksbilde: alt du trenger å gjøre er å bruke DELETE-forespørselen som:
SLETT / _snapshot / backup_repo / snapshot_2021 /CURL-kommandoen er:
krøll -XDELETE “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021 /”Svaret skal erkjennes: sant
“Erkjent”: sant
Hvis øyeblikksbildet ikke eksisterer, vil du få en statuskode 404 og manglende øyeblikksbilde som:
"feil":
"Opprinnelig årsak" : [
"type": "snapshot_missing_exception",
"reason": "[backup_repo: snapshot_2021] mangler"
],
"type": "snapshot_missing_exception",
"reason": "[backup_repo: snapshot_2021] mangler"
,
"status": 404
Konklusjon
I denne guiden har vi diskutert hvordan du oppretter Elasticsearch-øyeblikksbilder ved hjelp av Snapshot API. Det du har lært, burde være nok til at du kan opprette et øyeblikksbilde-arkiv, se øyeblikksbilde-arkivene, opprette, vise og slette øyeblikksbilder. Selv om det er tilpasninger du kan gjøre med API, bør kunnskapen i denne veiledningen være nok til å komme i gang.
Takk for at du leser.