Kako bi se zaštitio od gubitka podataka, Elasticsearch ima razne značajke koje vam omogućuju osiguravanje dostupnosti podataka, čak i u slučajevima kvara podataka.
Neki od načina na koje Elasticsearch pruža dostupnost podataka uključuju:
- Replikacije više klastera, značajka koja vam omogućuje repliciranje podataka u skup klastera sljedbenika; klaster sljedbenika je rezervni klaster koji se koristi u slučaju kvara glavne klastera.
- Još jedna metoda koju Elasticsearch koristi za sprečavanje podataka korištenjem sigurnosnih kopija - također nazvanim snimkama klastera. Ako se ukaže potreba, možete koristiti ove snimke za vraćanje podataka na potpuno novom klasteru.
Ovaj vam vodič pokazuje kako stvoriti snimke klastera koji će vam pomoći da budete spremni u slučaju nepovratnog događaja neuspjeha podataka.
Započnimo.
Što je Elasticsearch Snapshot?
Kao što je spomenuto, elastična snimka sigurnosna je kopija pokrenutog Elasticsearch klastera. Ova snimka može sadržavati cijeli klaster ili određene indekse i tokove podataka unutar određenog klastera.
Kao što ćete uskoro saznati, dodatak spremišta upravlja snimkama Elasticsearch. Te se snimke mogu pohraniti na raznim mjestima za pohranu definiranim dodatkom. To uključuje lokalne sustave i udaljene sustave poput GCP Storage, Amazon EC2, Microsoft Azure i mnoge druge.
Kako stvoriti repozitorij snimaka Elasticsearch
Prije nego što krenemo u stvaranje Elasticsearch snimaka, moramo stvoriti spremište snimki jer mnoge usluge Elasticsearch koriste Snapshot API za izvršavanje ovih zadataka.
Neki od zadataka kojima se bavi Snapshot API su:
- Stavite spremište snimaka
- Provjerite spremište snimaka
- Nabavite spremište snimaka
- Izbriši spremište snimaka
- Očistite spremište snimaka
- Izradite snimku
- Kloniranje snimke
- Napravite snimku
- Dohvatite status snimke
- Vrati snimku
- Izbriši snimku
Da bismo stvorili spremište snimaka, koristimo _snapshot API krajnju točku praćeno imenom koje želimo dodijeliti spremištu snimki. Razmotrite zahtjev u nastavku koji stvara spremište pod nazivom backup_repo
PUT / _snapshot / backup_repo"type": "fs",
"postavke":
"location": "/ home / root / sigurnosne kopije",
"oblog": istina
Evo naredbe cURL za gornji zahtjev:
curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo" -H 'Content-Type: application / json' -d '"type": "fs", "settings": "location": "/ home / root / sigurnosne kopije "," compress ": true 'Da biste proslijedili put spremišta brzih snimki, prvo morate dodati putanju sustava ili nadređeni direktorij.repo unos u elastičnom pretraživanju.yml
Put.repo unos trebao bi izgledati slično:
staza.repo: [“/ home / root / sigurnosne kopije”]Konfiguracijsku datoteku Elasticsearch možete pronaći u / etc / elasticsearch / elasticsearch.yml
BILJEŠKA: Nakon dodavanja putanje.repo, možda ćete trebati ponovno pokrenuti Elasticsearch klastere. Uz to, vrijednosti podržane za put.repo se može jako razlikovati ovisno o platformi koja pokreće Elasticsearch.
Kako pregledati spremište snimaka
Da biste potvrdili uspješno stvaranje spremišta snimki, upotrijebite GET zahtjev s krajnjom točkom _snapshot kao:
GET / _snapshot / backup_repoMožete koristiti i sljedeću naredbu cURL:
curl -XGET "http: // localhost: 9200 / _snapshot / backup_repo"Ovo bi trebalo prikazati informacije o spremištu sigurnosnih kopija, na primjer:
"backup_repo":
"type": "fs",
"postavke":
"compress": "true",
"location": "" "/ home / root / sigurnosne kopije" ""
Ako imate više spremišta za brze snimke i ne sjećate se imena, možete izostaviti ime repo-a i pozvati krajnju točku _snapshot da biste popisali sve postojeće spremišta.
GET / _snapshot ili curl curl -XGET http: // localhost: 9200 / _snapshot
Kako stvoriti snimku elastičnog pretraživanja
Stvaranje snimke Elasticsearch za određeno spremište snimki obrađuje API stvaranja snimke. API zahtijeva naziv spremišta snimke i naziv snimke.
BILJEŠKA: Pojedino spremište snimke može imati više snimki istih klastera pod uvjetom da imaju jedinstvene identitete / imena.
Razmotrite sljedeći zahtjev za dodavanje snimke zvane snapshot_2021 u spremište backup_repo.
PUT / _snapshot / backup_repo / snapshot_2021Da biste koristili curl, upotrijebite naredbu:
curl -XPUT “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021”Naredba bi trebala vratiti odgovor s Elasticsearch s 200 OK i prihvatio: true
"prihvaćeno": istina
Budući da ne navodi koji tokovi podataka i indeksi želite imati sigurnosnu kopiju, pozivanje gornjeg zahtjeva sigurnosno kopira sve podatke i stanje klastera. Da biste odredili koje tokove podataka i indekse želite sigurnosno kopirati, dodajte to tijelu zahtjeva.
Razmotrite sljedeći zahtjev koji izrađuje sigurnosne kopije datoteke .indeks kibana (indeks sustava) i određuje koji je korisnik odobrio snimku i razlog.
PUT / _snapshot / backup_repo / snapshot_2"indeksi": ".kibana ",
"ignore_unavailable": true,
"include_global_state": točno,
"metapodaci":
"taken_by": "elastični administrator",
“Taken_because”: “Svakodnevne sigurnosne kopije”
Naredba cURL za to je:
curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2" -H 'Content-Type: application / json' -d '"indeksi": ".kibana "," ignore_unavailable ": true," include_global_state ": true," metapodaci ": " taken_by ":" elasticadmin "," taken_because ":" Daily Backup " 'Ignore_unavailable postavlja logičko stanje koje vraća pogrešku ako bilo koji tok podataka ili indeksi navedeni u snimci nedostaju ili su zatvoreni.
Parametar include_global_state sprema trenutno stanje klastera ako je istinito. Neke spremljene informacije o klasteru uključuju:
- Trajne postavke klastera
- Predlošci indeksa
- Naslijeđeni predlošci indeksa
- Unositi cjevovode
- Politike životnog ciklusa ILM-a
BILJEŠKA: Možete odrediti više indeksa odvojenih zarezima.
Uobičajeni argument koji se koristi s krajnjom točkom _snapshot je wait_for_completion, logička vrijednost koja definira hoće li se (istinito) ili ne (lažno) zahtjev vratiti odmah nakon inicijalizacije snimke (zadano) ili pričekati završetak snimke.
Na primjer:
PUT / _snapshot / backup_repo / snapshot_3?pričekajte_za_završetak = točno"indeksi": ".kibana ",
"ignore_unavailable": true,
"include_global_state": netačno,
"metapodaci":
"taken_by": "elastični administrator",
“Taken_because”: “Tjedna sigurnosna kopija”
Naredba cURL je:
curl -XPUT "http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3?wait_for_completion = true "-H 'Content-Type: application / json' -d '" indeksi ":".kibana "," ignore_unavailable ": true," include_global_state ": false," metapodaci ": " taken_by ":" elasticadmin "," take_because ":" Tjedno kopiranje " 'Kada postavite parametar wait_for_completion na true, dobit ćete izlaz sličan onome prikazanom u nastavku:
"snimka":
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"version": "7.10.2 ",
"indeksi": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": netačno,
"metapodaci":
"taken_by": "elastični administrator",
“Taken_because”: “Tjedna sigurnosna kopija”
,
"state": "USPJEH",
"start_time": "2021-01-19T13: 36: 59.615 Z ",
"vrijeme_početka_u_milisu": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433 Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"neuspjesi": [],
"krhotine":
"ukupno": 1,
"nije uspjelo": 0,
"uspješno": 1
Kako pregledati snimke
API GET snapshot obrađuje funkciju pregleda snimki.
Sve što trebate proslijediti u zahtjevu je spremište snimaka i ime snimke koje želite pregledati.
Snimka bi trebala odgovarati detaljima o određenoj snimci. Ti detalji uključuju:
- Vrijednosti vremena početka i završetka
- Verzija Elasticsearch koja je stvorila snimku
- Popis uključenih indeksa
- Trenutno stanje snimke
- Popis kvarova koji su se dogodili tijekom snimke
Na primjer, da biste pogledali detalje o gore stvorenom snimku_3, upotrijebite zahtjev prikazan u nastavku:
GET / _snapshot / backup_repo / snapshot_3Da biste koristili curl, upotrijebite naredbu u nastavku:
[cc lang = "text" width = "100%" height = "100%" escape = "true" theme = "blackboard" nowrap = "0"]
curl -XGET “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_3”
Zahtjev bi trebao vratiti odgovor s pojedinostima snimke kao:
"snimke": [
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"version": "7.10.2 ",
"indeksi": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": netačno,
"metapodaci":
"taken_by": "elastični administrator",
“Taken_because”: “Tjedna sigurnosna kopija”
,
"state": "USPJEH",
"start_time": "2021-01-19T13: 36: 59.615 Z ",
"vrijeme_početka_u_milisu": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433 Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"neuspjesi": [],
"krhotine":
"ukupno": 1,
"nije uspjelo": 0,
"uspješno": 1
]
Također možete prilagoditi tijelo zahtjeva da biste dobili određene detalje o snimci. Međutim, za sada to nećemo razmatrati.
Recimo da želite pregledati informacije o svim snimkama u određenom spremištu snimaka; u tom slučaju, u zahtjev možete dodati zamjenski znak zvjezdice kao:
GET / _snapshot / backup_repo / *Naredba cURL za to je:
curl -XGET “http: // localhost: 9200 / _snapshot / backup_repo / *”Odgovor je detaljan dump svih snimaka u tom spremištu kao:
"snimke": [
"snapshot": "snapshot_2021",
"uuid": "7CFigHzvRtyZW07c60d2iw",
"version_id": 7100299,
"version": "7.10.2 ",
"indeksi": [
"moj_indeks",
"single_index_with_body",
"moj_indeks_2",
"pojedinačni_indeks",
".kibana_1 ",
"test"
],
"data_streams": [],
"include_global_state": točno,
"state": "USPJEH",
"start_time": "2021-01-19T13: 28: 48.172 Z ",
"vrijeme_početka_u_milisu": 1611062928172,
"end_time": "2021-01-19T13: 28: 50.831 Z ",
"end_time_in_millis": 1611062930831,
"trajanje_u_milisu": 2659,
"neuspjesi": [],
"krhotine":
"ukupno": 7,
"nije uspjelo": 0,
"uspješno": 7
,
"snapshot": "snapshot_2",
"uuid": "w58IrYmORAub8VC7cg04Wg",
"version_id": 7100299,
"version": "7.10.2 ",
"indeksi": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": netačno,
"metapodaci":
"taken_by": "elastični administrator",
"taken_because": "Svakodnevne sigurnosne kopije"
,
"state": "USPJEH",
"start_time": "2021-01-19T13: 33: 34.482 Z ",
"vrijeme_početka_u_milisu": 1611063214482,
"end_time": "2021-01-19T13: 33: 35.921 Z ",
"end_time_in_millis": 1611063215921,
"trajanje_u_milisu": 1439,
"neuspjesi": [],
"krhotine":
"ukupno": 1,
"nije uspjelo": 0,
"uspješno": 1
,
"snapshot": "snapshot_3",
"uuid": "tQUHyofIRnGMMtw0AGBACQ",
"version_id": 7100299,
"version": "7.10.2 ",
"indeksi": [
".kibana_1 "
],
"data_streams": [],
"include_global_state": netačno,
"metapodaci":
"taken_by": "elastični administrator",
“Taken_because”: “Tjedna sigurnosna kopija”
,
"state": "USPJEH",
"start_time": "2021-01-19T13: 36: 59.615 Z ",
"vrijeme_početka_u_milisu": 1611063419615,
"end_time": "2021-01-19T13: 37: 00.433 Z ",
"end_time_in_millis": 1611063420433,
"duration_in_millis": 818,
"neuspjesi": [],
"krhotine":
"ukupno": 1,
"nije uspjelo": 0,
"uspješno": 1
]
Zamjenski znakovi vrlo su korisni za filtriranje određenih informacija o snimkama.
Kako izbrisati snimku
Brisanje snimke vrlo je jednostavno: sve što trebate je koristiti DELETE zahtjev kao:
IZBRIŠI / _snapshot / backup_repo / snapshot_2021 /Naredba cURL je:
curl -XDELETE “http: // localhost: 9200 / _snapshot / backup_repo / snapshot_2021 /”Odgovor treba priznati: istinit
"Priznato": istina
Ako snimka ne postoji, dobit ćete 404 statusni kod i pogrešku koja nedostaje u snimci kao:
"pogreška":
"korijenski_uzrok": [
"type": "snapshot_missing_exception",
"razlog": "Nedostaje [backup_repo: snapshot_2021]"
],
"type": "snapshot_missing_exception",
"razlog": "Nedostaje [backup_repo: snapshot_2021]"
,
"status": 404
Zaključak
U ovom smo vodiču razgovarali o tome kako stvoriti snimke Elasticsearch pomoću API-ja Snapshot. Ono što ste naučili trebalo bi biti dovoljno da vam omogući stvaranje spremišta za snimke, pregled spremišta za snimke, izradu, pregled i brisanje snimaka. Iako postoje prilagodbe koje možete izvršiti s API-jem, znanje u ovom vodiču trebalo bi biti dovoljno za početak.
Hvala na čitanju.