Sicherung und Wiederherstellung von Elasticsearch -Clustern mit Schnappschüssen

Sicherung und Wiederherstellung von Elasticsearch -Clustern mit Schnappschüssen
Bei Elasticsearch geht es um Daten, und wie Sie wahrscheinlich bereits wissen, sind Daten wichtig zu Ihnen und Elasticsarch. In so sehr sowohl Sie als auch Elasticsearch -Liebesdaten können Datenfehler auftreten, was zu Datenverlust führt.

Um vor Datenverlust zu schützen.

Zu den Möglichkeiten, mit denen Elasticsearch Ihnen die Datenverfügbarkeit zur Verfügung stellt, gehören:

  • Cross-Cluster-Replikationen, eine Funktion, mit der Sie Daten in einen Satz von Follower-Clustern replizieren können. Ein Anhängercluster ist ein Standby -Cluster, der bei Ausfall des Master -Clusters verwendet wird.
  • Eine andere Methode, die Elasticsearch verwendet. Wenn dies erforderlich ist, können Sie diese Snapshots verwenden, um Daten in einem völlig neuen Cluster wiederherzustellen.

Dieses Tutorial zeigt Ihnen, wie Sie Cluster -Snapshots erstellen. Dadurch können Sie vorbereitet sein, wenn ein irreversibler Datenfehlerereignis auftritt.

Lass uns anfangen.

Was ist ein Elasticsearch -Schnappschuss?

Wie bereits erwähnt, ist ein elastischer Schnappschuss eine Sicherungskopie eines laufenden Elasticsearch -Clusters. Dieser Schnappschuss kann in einem bestimmten Cluster einen gesamten Cluster- oder spezifischen Indizes und Datenströmen haben.

Wie Sie bald lernen werden, verwaltet ein Repository -Plugin Elasticsearch -Snapshots. Diese Schnappschüsse sind an verschiedenen vom Plugin definierten Speicherorten ausgestattet. Dazu gehören lokale Systeme und Remote -Systeme wie GCP -Speicher, Amazon EC2, Microsoft Azure und viele mehr.

So erstellen Sie ein Elasticsearch -Snapshot -Repository

Bevor wir in die Erstellung von Elasticsearch -Snapshots eintauchen, müssen wir ein Snapshot -Repository erstellen, da viele Dienste von Elasticsearch die Snapshot -API verwenden, um diese Aufgaben auszuführen.

Einige der von der Snapshot -API übernommenen Aufgaben sind:

  • Setzen Sie Snapshot -Repository ein
  • Überprüfen Sie das Snapshot -Repository
  • Holen Sie sich Snapshot -Repository
  • Snapshot -Repository löschen
  • Reinigen Sie das Snapshot -Repository
  • Snapshot erstellen
  • Klonschnappschuss
  • Holen Sie sich Schnappschuss
  • Holen Sie sich den Snapshot -Status
  • Snapshot wiederherstellen
  • Snapshot löschen

Um ein Snapshot -Repository zu erstellen, verwenden wir den _snapshot -API -Endpunkt, gefolgt von dem Namen, den wir dem Snapshot -Repository zuweisen möchten. Betrachten Sie die folgende Anfrage, die ein Repository namens backup_repo erstellt hat

Put /_snapshot /backup_repo

"Typ": "fs",
"Einstellungen":
"Ort": "/home/root/backups",
"Kompress": wahr

Hier ist ein Curl -Befehl für die obige Anfrage:

curl -xput "http: // localhost: 9200/_snapshot/backup_repo" -h 'content -type: application/json' -d '"type": "fs", "Einstellungen": "Ort": "//////////////// Home/Root/Backups "," Compress ": true '

Um den Snapshot -Repository -Pfad zu übergeben, müssen Sie zuerst den Pfad des Systems oder das übergeordnete Verzeichnis zum Pfad hinzufügen.Repo -Eintrag in Elasticsearch.YML

Der Weg.Der Repo -Eintrag sollte ähnlich aussehen wie mit:

Weg.Repo: ["/home/root/backups"]

Sie finden die Elasticsearch -Konfigurationsdatei in/etc/elasticsearch/elasticsearch.YML

NOTIZ: Nach dem Hinzufügen des Pfades.Repo, Sie müssen möglicherweise Elasticsearch -Cluster neu starten. Zusätzlich die für den Pfad unterstützten Werte.Repo kann je nach Plattform, die Elasticsearch ausführen, stark variieren.

So sehen Sie das Snapshot -Repository an

Verwenden Sie die GET -Anforderung mit dem Endpunkt _snapshot als:

Get /_snapshot /backup_repo

Sie können auch den folgenden Curl -Befehl verwenden:

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

Auf diese Weise sollten Informationen zum Backup -Repository angezeigt werden, zum Beispiel:


"backup_repo":
"Typ": "fs",
"Einstellungen" :
"Kompress": "wahr",
"Ort": "" "/home/root/backups" "" "


Wenn Sie mehr als eine Snapshot -Repositorys haben und sich nicht an den Namen erinnern, können Sie den Repo -Namen weglassen und den _snapshot -Endpunkt aufrufen, um alle vorhandenen Repositories aufzulisten.

Get/_snapshot oder curl curl -xget http: // localhost: 9200/_snapshot

So erstellen Sie einen Elasticsearch -Snapshot

Das Erstellen eines Elasticsearch -Snapshots für ein bestimmtes Snapshot -Repository wird von der Snapshot -API erstellen. Die API erfordert den Snapshot -Repository -Namen und den Namen des Snapshots.

NOTIZ: Ein einzelnes Snapshot -Repository kann mehr als einen Schnappschuss der gleichen Cluster haben, solange sie eindeutige Identitäten/Namen haben.

Betrachten Sie die folgende Anfrage, um dem Backup_Repo -Repository einen Snapshot namens Snapshot_2021 hinzuzufügen.

Put/_snapshot/backup_repo/snapshot_2021

Verwenden Sie den Befehl, um Curl zu verwenden:

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

Der Befehl sollte eine Antwort von Elasticsearch mit 200 OK zurückgeben und akzeptiert: True


"akzeptiert": wahr

Da es nicht angegeben ist. Um anzugeben, welche Datenströme und -indizes sie sichern sollen.

Betrachten Sie die folgende Anfrage, die die Sicherung der Sicherung des .Kibana -Index (ein Systemindex) und gibt an, welcher Benutzer den Snapshot und den Grund autorisiert hat.

Put/_snapshot/backup_repo/snapshot_2

"Indizes": ".Kibana ",
"Ignore_unAvailable": TRUE,
"include_global_state": true,
"Metadaten":
"Taken_by": "Elasticadmin",
"Taken_Because": "Daily Backup"

Der Curl -Befehl dafür ist:

curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_2" -h 'content -type: application/json' -d '"Indices": ".Kibana "," Ignore_unAverleable ": true," include_global_state ": true," metadata ": " tace_by ":" elasticadmin "," tace_because ":" Daily Backup " '

Der Ignore_unAverleable legt einen booleschen Status fest, der einen Fehler zurückgibt, wenn Datenströme oder Indizes im Snapshot fehlen oder geschlossen werden.

Der Parameter include_global_State speichert den aktuellen Status des Clusters, wenn wahr ist. Einige der gespeicherten Clusterinformationen umfassen:

  • Persistente Clustereinstellungen
  • Indexvorlagen
  • Legacy Index -Vorlagen
  • Pipelines einnehmen
  • ILM -Lebenszyklusrichtlinien

NOTIZ: Sie können mehr als eine durch Kommas getrennte Indizes angeben.

Ein gemeinsames Argument, das mit dem _snapshot -Endpunkt verwendet wird, ist Wait_For_Completion, ein boolescher Wert, der definiert, ob (true) oder nicht (falsch) die Anforderung sofort nach der Initialisierung der Snapshot (Standard) zurückgeben oder auf eine Snapshot -Fertigstellung warten sollte.

Zum Beispiel:

Put/_snapshot/backup_repo/snapshot_3?wait_for_completion = true

"Indizes": ".Kibana ",
"Ignore_unAvailable": TRUE,
"include_global_state": false,
"Metadaten":
"Taken_by": "Elasticadmin",
"Taken_Because": "Weekly Backup"

Der Befehl curl lautet:

curl -xput "http: // localhost: 9200/_snapshot/backup_repo/snapshot_3?wait_for_completion = true "-h 'content -type: application/json' -d '" Indizes ":".Kibana "," Ignore_unAverleable ": true," include_global_state ": false," metadata ": " tace_by ":" elasticadmin "," tace_because ":" wöchentliches backup " '

Wenn Sie den Parameter wait_for_completion auf true eingestellt haben, geben Sie eine ähnliche Ausgabe an, die dem unten gezeigten ähnelt:


"Snapshot":
"Snapshot": "Snapshot_3",
"uUid": "Tquhyofirngmmtw0Agbacq",
"Version_ID": 7100299,
"Version": "7.10.2 ",
"Indizes": [
".kibana_1 "
],
"Datenströme" : [ ],
"include_global_state": false,
"Metadaten":
"Taken_by": "Elasticadmin",
"Taken_Because": "Weekly Backup"
,
"Staat": "Erfolg",
"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,
"Misserfolge": [],
"Scherben":
"Gesamt": 1,
"fehlgeschlagen": 0,
"erfolgreich": 1


So sehen Sie Schnappschüsse

Die GET -Snapshot -API übernimmt die Snapshots -Funktionalität der Ansicht.

Alles, was Sie in die Anfrage übergeben müssen, ist das Snapshot -Repository und der Name des Snapshots, den Sie die Details anzeigen möchten.

Der Schnappschuss sollte mit Details zu einem bestimmten Snapshot antworten. Diese Details umfassen:

  • Start- und Endzeitwerte
  • Die Version von Elasticsearch, die den Snapshot erstellt hat
  • Liste der eingeschlossenen Indizes
  • Der aktuelle Zustand des Snapshots
  • Liste der Fehler, die während des Schnappschusss aufgetreten sind

Um beispielsweise die Details zum oben erstellten Snapshot_3 anzuzeigen, verwenden Sie die unten angegebene Anforderung:

Get/_snapshot/backup_repo/snapshot_3
Verwenden Sie den folgenden Befehl, um Curl zu verwenden:
[CC Lang = "Text" width = "100%" Height = "100%" entkommen = "True" thema = "Blackboard" nowrap = "0"]
curl -xget “http: // localhost: 9200/_snapshot/backup_repo/snapshot_3”

Die Anfrage sollte eine Antwort mit den Details des Snapshots als:


"Schnappschüsse": [

"Snapshot": "Snapshot_3",
"uUid": "Tquhyofirngmmtw0Agbacq",
"Version_ID": 7100299,
"Version": "7.10.2 ",
"Indizes": [
".kibana_1 "
],
"Datenströme" : [ ],
"include_global_state": false,
"Metadaten":
"Taken_by": "Elasticadmin",
"Taken_Because": "Weekly Backup"
,
"Staat": "Erfolg",
"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,
"Misserfolge": [],
"Scherben":
"Gesamt": 1,
"fehlgeschlagen": 0,
"erfolgreich": 1


]

Sie können auch die Anforderungsbehörde anpassen, um spezifische Details zu einem Snapshot zu erhalten. Wir werden uns jedoch vorerst nicht untersuchen.

Nehmen wir an, Sie möchten Informationen zu allen Schnappschüssen in einem bestimmten Snapshot -Repository anzeigen. In diesem Fall können Sie eine Asterisk -Wildcard in der Anfrage als:

Get/_snapshot/backup_repo/*

Der Curl -Befehl dafür ist:

curl -xget "http: // localhost: 9200/_snapshot/backup_repo/*"

Die Antwort ist eine detaillierte Mülldeponie aller Schnappschüsse in diesem Repository als:


"Schnappschüsse": [

"Snapshot": "Snapshot_2021",
"uUid": "7cfighzvrtyzw07c60d2iw",
"Version_ID": 7100299,
"Version": "7.10.2 ",
"Indizes": [
"my_index",
"Single_index_with_body",
"my_index_2",
"Single_index",
".kibana_1 ",
"prüfen"
],
"Datenströme" : [ ],
"include_global_state": true,
"Staat": "Erfolg",
"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,
"Misserfolge": [],
"Scherben":
"Gesamt": 7,
"fehlgeschlagen": 0,
"erfolgreich": 7

,

"Snapshot": "Snapshot_2",
"UUID": "W58irymorAb8vc7cg04Wg",
"Version_ID": 7100299,
"Version": "7.10.2 ",
"Indizes": [
".kibana_1 "
],
"Datenströme" : [ ],
"include_global_state": false,
"Metadaten":
"Taken_by": "Elasticadmin",
"Taken_Because": "Daily Backup"
,
"Staat": "Erfolg",
"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,
"Misserfolge": [],
"Scherben":
"Gesamt": 1,
"fehlgeschlagen": 0,
"erfolgreich": 1

,

"Snapshot": "Snapshot_3",
"uUid": "Tquhyofirngmmtw0Agbacq",
"Version_ID": 7100299,
"Version": "7.10.2 ",
"Indizes": [
".kibana_1 "
],
"Datenströme" : [ ],
"include_global_state": false,
"Metadaten":
"Taken_by": "Elasticadmin",
"Taken_Because": "Weekly Backup"
,
"Staat": "Erfolg",
"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,
"Misserfolge": [],
"Scherben":
"Gesamt": 1,
"fehlgeschlagen": 0,
"erfolgreich": 1


]

Wildkarten sind sehr nützlich, um bestimmte Informationen über die Schnappschüsse zu filtern.

So löschen Sie einen Schnappschuss

Das Löschen eines Snapshots ist sehr einfach: Alles, was Sie tun müssen, ist die Löschenanforderung zu verwenden

Löschen/_snapshot/backup_repo/snapshot_2021/löschen

Der Befehl curl lautet:

curl -xdelete “http: // localhost: 9200/_snapshot/backup_repo/snapshot_2021/"

Die Antwort sollte anerkannt werden: wahr


"Anerkannt": wahr

Wenn der Snapshot nicht vorhanden ist, erhalten Sie einen 404 -Statuscode und einen Snapshot -fehlenden Fehler als:


"Fehler" :
"tiefere Ursache" : [

"Typ": "snapshot_missing_exception",
"Grund": "[backup_repo: snapshot_2021] fehlt"

],
"Typ": "snapshot_missing_exception",
"Grund": "[backup_repo: snapshot_2021] fehlt"
,
"Status": 404

Abschluss

In diesem Handbuch haben wir besprochen, wie Sie Elasticsearch -Snapshots mit der Snapshot -API erstellen können. Was Sie gelernt haben, sollte ausreichen, damit Sie ein Snapshot -Repository erstellen, die Snapshot -Repositorys anzeigen, Snapshots erstellen, anzeigen und löschen können. Obwohl Sie Anpassungen mit der API vornehmen können, sollte das Wissen in diesem Leitfaden ausreichen, um Ihnen den Einstieg zu erleichtern.

Vielen Dank für das Lesen.