Elastisch zoeken

Back-up en herstel Elasticsearch-clusters met snapshots

Back-up en herstel Elasticsearch-clusters met snapshots
Bij Elasticsearch draait alles om data, en zoals je waarschijnlijk al weet, zijn data belangrijk voor jou en Elasticsearch. Echter, in zoverre u en Elasticsearch dol zijn op gegevens, kunnen er gegevensfouten optreden, wat kan leiden tot gegevensverlies.

Om gegevensverlies te voorkomen, heeft Elasticsearch verschillende functies waarmee u de beschikbaarheid van gegevens kunt garanderen, zelfs in gevallen van gegevensstoringen failure.

Enkele van de manieren die Elasticsearch gebruikt om u gegevensbeschikbaarheid te bieden, zijn onder meer:

Deze zelfstudie laat u zien hoe u clustersnapshots maakt, zodat u klaar bent als zich een onomkeerbare gebeurtenis voor gegevensfalen voordoet.

Laten we beginnen.

Wat is een Elasticsearch-snapshot??

Zoals gezegd is een elastische momentopname een reservekopie van een actief Elasticsearch-cluster. Deze momentopname kan een hele cluster zijn of specifieke indices en gegevensstromen binnen een bepaalde cluster.

Zoals je snel zult leren, beheert een repository-plug-in Elasticsearch-snapshots. Deze snapshots kunnen worden opgeslagen op verschillende opslaglocaties die zijn gedefinieerd door de plug-in. Deze omvatten lokale systemen en externe systemen zoals GCP Storage, Amazon EC2, Microsoft Azure en nog veel meer.

Een Elasticsearch Snapshot Repository maken

Voordat we ons verdiepen in het maken van Elasticsearch-snapshots, moeten we een snapshot-repository maken omdat veel van Elasticsearch-services de Snapshot API gebruiken om deze taken uit te voeren.

Enkele van de taken die worden afgehandeld door de Snapshot API zijn:

Om een ​​snapshot-repository te maken, gebruiken we het _snapshot API-eindpunt gevolgd door de naam die we willen toewijzen aan de snapshot-repository. Overweeg het onderstaande verzoek waarmee een opslagplaats wordt gemaakt met de naam   backup_repo

PUT /_snapshot/backup_repo

"type": "fs",
"instellingen":
"location": "/home/root/back-ups",
"comprimeren": waar

Hier is een cURL-opdracht voor het bovenstaande verzoek:

curl -XPUT "http://localhost:9200/_snapshot/backup_repo" -H 'Content-Type: application/json' -d'  "type": "fs",  "settings":     "location": "/ home/root/backups",    "compress": true  '

Om het pad van de snapshot-repository door te geven, moet u eerst het pad van het systeem of de bovenliggende map aan het pad toevoegen.repo-invoer in elasticsearch.yml

Het pad.repo-invoer moet er ongeveer zo uitzien:

pad.repo: [“/home/root/back-ups”]

U vindt het Elasticsearch-configuratiebestand in /etc/elasticsearch/elasticsearch.yml

OPMERKING: Na het toevoegen van het pad.repo, moet u mogelijk Elasticsearch-clusters opnieuw starten. Bovendien zijn de waarden die worden ondersteund voor pad.repo kan enorm variëren, afhankelijk van het platform waarop Elasticsearch wordt uitgevoerd.

Hoe de Snapshot Repository te bekijken

Om de succesvolle aanmaak van de snapshot-repository te bevestigen, gebruikt u het GET-verzoek met het _snapshot-eindpunt als:

GET /_snapshot/backup_repo

U kunt ook het volgende cURL-commando gebruiken:

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

Dit zou informatie over de back-uprepository moeten weergeven, bijvoorbeeld:


"backup_repo" :
"type" : "fs",
"instellingen" :
"comprimeren" : "waar",
"locatie" : """/home/root/back-ups"""


Als u meer dan één opslagplaats voor snapshots hebt en de naam niet meer weet, kunt u de naam van de opslagplaats weglaten en het _snapshot-eindpunt aanroepen om alle bestaande opslagplaatsen weer te geven.

GET /_snapshot of cURL curl -XGET http://localhost:9200/_snapshot

Een Elasticsearch-snapshot maken

Het maken van een Elasticsearch-snapshot voor een specifieke snapshot-repository wordt afgehandeld door de create snapshot-API. De API vereist de naam van de snapshot-repository en de naam van de snapshot.

OPMERKING: Een enkele snapshot-repository kan meer dan één snapshot van dezelfde clusters hebben, zolang ze maar unieke identiteiten/namen hebben.

Overweeg het volgende verzoek om een ​​snapshot met de naam snapshot_2021 toe te voegen aan de backup_repo-repository:.

PUT /_snapshot/backup_repo/snapshot_2021

Gebruik de opdracht om cURL te gebruiken:

curl -XPUT “http://localhost:9200/_snapshot/backup_repo/snapshot_2021”

De opdracht moet een antwoord van Elasticsearch retourneren met 200 OK en geaccepteerd: true


"geaccepteerd" : waar

Aangezien het niet specificeert van welke gegevensstromen en indices u een back-up wilt hebben, roept het bovenstaande verzoek een back-up op van alle gegevens en de clusterstatus. Om aan te geven van welke gegevensstromen en indices een back-up moet worden gemaakt, voegt u dat toe aan de hoofdtekst van het verzoek.

Overweeg het volgende verzoek om back-ups te maken van de .kibana-index (een systeemindex) en specificeert welke gebruiker de snapshot en de reden heeft geautoriseerd.

PUT /_snapshot/backup_repo/snapshot_2

"indexen": ".kibana",
"ignore_unavailable": true,
"include_global_state": true,
"metagegevens":
"taken_by": "elasticadmin",
"taken_because": "Dagelijkse back-up"

Het cURL-commando daarvoor is:

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"  '

De negeer_unavailable stelt een Booleaanse status in die een fout retourneert als gegevensstromen of indices die in de momentopname zijn gespecificeerd ontbreken of gesloten zijn.

De parameter include_global_state slaat de huidige status van het cluster op indien waar. Enkele van de opgeslagen clustergegevens zijn:

OPMERKING: U kunt meer dan één index opgeven, gescheiden door komma's.

Een veelgebruikt argument dat wordt gebruikt met het _snapshot-eindpunt is wait_for_completion, een Booleaanse waarde die bepaalt of (true) of niet (false) het verzoek onmiddellijk moet terugkeren na de initialisatie van de snapshot (standaard) of moet wachten op de voltooiing van een snapshot.

Bijvoorbeeld:

PUT /_snapshot/backup_repo/snapshot_3?wait_for_completion=true

"indexen": ".kibana",
"ignore_unavailable": true,
"include_global_state": false,
"metagegevens":
"taken_by": "elasticadmin",
"taken_because": "Wekelijkse back-up"

Het cURL-commando is:

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": "Wekelijkse back-up"  '

Als u de parameter wait_for_completion op true heeft ingesteld, geeft u een uitvoer die lijkt op die hieronder:


"momentopname" :
"snapshot" : "snapshot_3",
"uuid" : "tQUHyofIRnGMMtw0AGBACQ",
"versie_id" : 7100299,
"versie" : "7.10.2",
"indexen" : [
".kibana_1"
],
"data_streams" : [ ],
"include_global_state" : false,
"metagegevens" :
"taken_by" : "elasticadmin",
"taken_because": "Wekelijkse back-up"
,
"staat" : "SUCCES",
"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,
"duration_in_millis" : 818,
"mislukkingen" : [ ],
"scherven" :
"totaal" : 1,
"mislukt" : 0,
"geslaagd" : 1


Snapshots bekijken

De GET snapshot-API verwerkt de functionaliteit voor het bekijken van snapshots.

Het enige dat u in het verzoek hoeft door te geven, is de snapshot-repository en de naam van de snapshot waarvan u de details wilt bekijken.

De snapshot zou moeten reageren met details over een gespecificeerde snapshot. Deze gegevens omvatten:

Als u bijvoorbeeld de details over de hierboven gemaakte snapshot_3 wilt bekijken, gebruikt u het onderstaande verzoek:

GET /_snapshot/backup_repo/snapshot_3
Gebruik de onderstaande opdracht om cURL te gebruiken:
[cc lang="text" width="100%" height="100%" escaped="true" theme="blackboard" nowrap="0"]
curl -XGET “http://localhost:9200/_snapshot/backup_repo/snapshot_3”

Het verzoek moet een antwoord retourneren met de details van de momentopname als:


"momentopnamen" : [

"snapshot" : "snapshot_3",
"uuid" : "tQUHyofIRnGMMtw0AGBACQ",
"versie_id" : 7100299,
"versie" : "7.10.2",
"indexen" : [
".kibana_1"
],
"data_streams" : [ ],
"include_global_state" : false,
"metagegevens" :
"taken_by" : "elasticadmin",
"taken_because": "Wekelijkse back-up"
,
"staat" : "SUCCES",
"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,
"duration_in_millis" : 818,
"mislukkingen" : [ ],
"scherven" :
"totaal" : 1,
"mislukt" : 0,
"geslaagd" : 1


]

U kunt ook de hoofdtekst van het verzoek aanpassen om specifieke details over een momentopname te krijgen. Daar gaan we echter voorlopig niet naar kijken.

Stel dat u informatie wilt bekijken over alle snapshots in een specifieke snapshotrepository; in dat geval kunt u een asterisk-wildcard in het verzoek doorgeven als:

GET /_snapshot/backup_repo/*

Het cURL-commando daarvoor is:

curl -XGET “http://localhost:9200/_snapshot/backup_repo/*”

Het antwoord is een gedetailleerde dump van alle snapshots in die repository als:


"momentopnamen" : [

"snapshot" : "snapshot_2021",
"uuid" : "7CFigHzvRtyZW07c60d2iw",
"versie_id" : 7100299,
"versie" : "7.10.2",
"indexen" : [
"mijn_index",
"single_index_with_body",
"mijn_index_2",
"single_index",
".kibana_1",
"test"
],
"data_streams" : [ ],
"include_global_state" : true,
"staat" : "SUCCES",
"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,
"duration_in_millis" : 2659,
"mislukkingen" : [ ],
"scherven" :
"totaal" : 7,
"mislukt" : 0,
"geslaagd" : 7

,

"snapshot" : "snapshot_2",
"uuid" : "w58IrYmORAub8VC7cg04Wg",
"versie_id" : 7100299,
"versie" : "7.10.2",
"indexen" : [
".kibana_1"
],
"data_streams" : [ ],
"include_global_state" : false,
"metagegevens" :
"taken_by" : "elasticadmin",
"taken_because" : "Dagelijkse back-up"
,
"staat" : "SUCCES",
"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,
"duration_in_millis" : 1439,
"mislukkingen" : [ ],
"scherven" :
"totaal" : 1,
"mislukt" : 0,
"geslaagd" : 1

,

"snapshot" : "snapshot_3",
"uuid" : "tQUHyofIRnGMMtw0AGBACQ",
"versie_id" : 7100299,
"versie" : "7.10.2",
"indexen" : [
".kibana_1"
],
"data_streams" : [ ],
"include_global_state" : false,
"metagegevens" :
"taken_by" : "elasticadmin",
"taken_because": "Wekelijkse back-up"
,
"staat" : "SUCCES",
"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,
"duration_in_millis" : 818,
"mislukkingen" : [ ],
"scherven" :
"totaal" : 1,
"mislukt" : 0,
"geslaagd" : 1


]

Jokertekens zijn erg handig voor het filteren van specifieke informatie over de snapshots.

Een momentopname verwijderen

Het verwijderen van een snapshot is heel eenvoudig: het enige wat u hoeft te doen is het DELETE-verzoek te gebruiken als:

VERWIJDEREN /_snapshot/backup_repo/snapshot_2021/

Het cURL-commando is:

curl -XDELETE “http://localhost:9200/_snapshot/backup_repo/snapshot_2021/”

Het antwoord moet worden bevestigd: waar


“erkend”: waar

Als de momentopname niet bestaat, krijgt u een 404-statuscode en een ontbrekende momentopname als:


"fout" :
"oorzaak" : [

"type" : "snapshot_missing_exception",
"reden" : "[backup_repo:snapshot_2021] ontbreekt"

],
"type" : "snapshot_missing_exception",
"reden" : "[backup_repo:snapshot_2021] ontbreekt"
,
"status" : 404

Conclusie

In deze handleiding hebben we besproken hoe u Elasticsearch-snapshots kunt maken met behulp van de Snapshot API. Wat u hebt geleerd, zou voldoende moeten zijn om u in staat te stellen een snapshot-repository te maken, de snapshot-repository's te bekijken, snapshots te maken, te bekijken en te verwijderen. Hoewel er aanpassingen zijn die u met de API kunt maken, zou de kennis in deze handleiding voldoende moeten zijn om u op weg te helpen.

Bedankt voor het lezen.

Top 10 spellen om te spelen op Ubuntu
Het Windows-platform is een van de dominante platforms voor gaming geweest vanwege het enorme percentage games dat tegenwoordig wordt ontwikkeld om Wi...
5 beste arcade-spellen voor Linux
Tegenwoordig zijn computers serieuze machines die worden gebruikt om te gamen. Als je de nieuwe hoge score niet kunt halen, weet je wat ik bedoel. In ...
Strijd om Wesnoth 1.13.6 Ontwikkeling vrijgegeven
Strijd om Wesnoth 1.13.6 die vorige maand werd uitgebracht, is de zesde ontwikkelingsrelease in de 1.13.x-serie en het levert een aantal verbeteringen...