Informationen zu Elasticsearch-Momentaufnahmen
Standardmäßig sichern GitHub Enterprise Server Backup Utilities und GitHub Enterprise Server Backup Service Suchindexdaten, indem sie Dateien direkt vom Datenträger kopieren. Dieser Ansatz folgt nicht den eigenen Empfehlungen von Elasticsearch, kann eine große Menge an Backup Appliance-Speicher verbrauchen und birgt ein gewisses Risiko, die gesicherten Indizes zu beschädigen.
Als optionale Alternative unterstützt Ihre GitHub Enterprise Server-Instance die integrierte inkrementelle Snapshot- und Restore-Funktion von Elasticsearch. Wenn Sie einen unterstützten Cloudspeicheranbieter konfigurieren und die Snapshot-Sicherungsstrategie aktivieren:
ghe-backuperstellt einen inkrementellen Snapshot der Daten Ihres Suchindexes in Ihrem konfigurierten Cloud-Speicherkonto. Inkrementelle Snapshots sind schneller als eine vollständige Sicherung, insbesondere bei nachfolgenden Sicherungen.ghe-restoreStellt Suchindexdaten aus Ihrem Cloudspeicherkonto wieder her, wenn eine Momentaufnahme vorhanden ist, die der Version der Zielinstanz GitHub Enterprise Server entspricht.- Momentaufnahmen sind für jede GitHub Enterprise Server-Patchversion isoliert, was sicherere Rollbackvorgänge zwischen Versionen ermöglicht.
Diese Funktion erfordert eine aktive Anmeldung. Wenn Sie kein Snapshot-Repository konfigurieren, sichert Ihre GitHub Enterprise Server-Instance Suchindexdaten weiterhin mit der vorhandenen, auf Datenträgern basierenden Methode.
Voraussetzungen
- Ein unterstützter Cloudspeicheranbieter: Azure Blob Storage, Amazon S3 oder Google Cloud Storage (oder ein Dienst, der mit einer dieser APIs kompatibel ist).
- Der Speichercontainer oder Bucket, den Sie als Snapshot-Repository verwenden möchten. Sie müssen diesen Container oder Bucket selbst erstellen. GitHub Enterprise Server erstellt sie nicht für Sie, und die Repositoryregistrierung schlägt fehl, wenn der Container oder Bucket noch nicht vorhanden ist.
Konfigurieren eines Snapshotspeicheranbieters
Konfigurieren Sie die folgenden Einstellungen über ghe-config SSH. Weitere Informationen findest du unter Auf die Verwaltungsshell (SSH) zugreifen.
Sie wenden die Konfiguration an, um das Snapshot-Repository bei Elasticsearch zu registrieren. Das Repository heißt search_index_snapshots-VERSION, wobei VERSION die aktuelle GitHub Enterprise Server-Release-Version ist.
Azure Blob-Speicher
-
Legen Sie die folgenden geheimen Schlüssel fest:
ghe-config secrets.elasticsearch.snapshot-provider azure ghe-config secrets.elasticsearch.snapshot.azure.container YOUR-CONTAINER ghe-config secrets.elasticsearch.snapshot.azure.account-name YOUR-STORAGE-ACCOUNT ghe-config secrets.elasticsearch.snapshot.azure.account-key YOUR-ACCOUNT-KEYOptional können Sie ein benutzerdefiniertes Blob-Endpunktsuffix festlegen (Standardwert:
core.windows.net):ghe-config secrets.elasticsearch.snapshot.azure.endpoint-suffix YOUR-ENDPOINT-SUFFIX -
Führen Sie die Konfiguration aus.
ghe-config-apply
Amazon S3
-
Legen Sie die folgenden geheimen Schlüssel fest:
ghe-config secrets.elasticsearch.snapshot-provider s3 ghe-config secrets.elasticsearch.snapshot.bucket-name YOUR-BUCKET-NAME ghe-config secrets.elasticsearch.snapshot.service-url YOUR-SERVICE-URL ghe-config secrets.elasticsearch.snapshot.region YOUR-AWS-REGION ghe-config secrets.elasticsearch.snapshot.access-key-id YOUR-ACCESS-KEY-ID ghe-config secrets.elasticsearch.snapshot.access-secret YOUR-ACCESS-SECRETVerwenden Sie für die Dienst-URL Ihren S3-Endpunkt, z. B
https://s3.us-east-1.amazonaws.com. . -
Ausführungskonfiguration anwenden.
ghe-config-apply
Google Cloud Storage
-
Erstellen Sie einen JSON-Dienstkontoschlüssel mit Zugriff auf Ihren Bucket, und codieren Sie ihn dann als base64.
base64 -w0 service-account.json -
Legen Sie die folgenden geheimen Schlüssel fest:
ghe-config secrets.elasticsearch.snapshot-provider gcs ghe-config secrets.elasticsearch.snapshot.gcs.bucket YOUR-BUCKET-NAME ghe-config secrets.elasticsearch.snapshot.gcs.credentials YOUR-BASE64-ENCODED-CREDENTIALS -
Führen Sie die Konfiguration aus.
ghe-config-apply
Überprüfen der Registrierung
Vergewissern Sie sich nach Abschluss der Konfiguration, dass das Snapshot-Repository registriert wurde.
curl -k "http://127.0.0.1:9200/_snapshot/search_index_snapshots-$(ghe-version -v)/_status"
Wenn ein erforderliches Secret fehlt, schlägt das Anwenden der Konfiguration bei der Registrierung des Repositorys fehl. Aktualisieren Sie die Secrets und führen Sie ghe-config-apply erneut aus, um es erneut zu versuchen.
Aktivieren von Momentaufnahmen während der Sicherung und Wiederherstellung
Beim Konfigurieren eines Speicheranbieters wird das Snapshot-Repository registriert, aber Sie müssen auch die Snapshot-Sicherungsstrategie aktivieren, damit ghe-backup und ghe-restore sie automatisch verwenden.
-
GitHub Enterprise Server Backup Service: Legen Sie die Strategie mithilfe von
ghe-configauf der Appliance fest.ghe-config backup.es-backup-strategy snapshot -
GitHub Enterprise Server Backup Utilities: Legen Sie die Strategie in Ihrer
backup.configDatei auf dem Sicherungshost fest.GHE_ES_BACKUP_STRATEGY=snapshotDer Standardwert ist
rsync, wodurch das vorhandene datenträgerbasierte Sicherungsverhalten beibehalten wird. GitHub Enterprise Server Backup Utilities speichert nur Momentaufnahmenmetadaten lokal; Snapshotinhalte verbleiben in Ihrem konfigurierten Cloudspeicher.
Wenn Sie keine Sicherungsstrategie festlegen, kann das Snapshot-Repository weiterhin manuell verwaltet werden, aber ghe-backup``ghe-restore weiterhin die datenträgerbasierte Methode verwenden.
Manuelles Verwalten von Momentaufnahmen
Sie können Snapshots von Elasticsearch direkt mithilfe der folgenden Befehle verwalten. Führen Sie einen beliebigen Befehl mit dem -h Kennzeichen für Verwendungsinformationen aus.
| Befehl | Description |
|---|---|
ghe-es-create-snapshot | Erstellt eine neue Momentaufnahme im konfigurierten Repository. |
ghe-es-list-snapshots | Listet Snapshot-Repositorys oder Snapshots innerhalb eines Repositorys auf. |
ghe-es-restore-snapshot | Stellt Suchindizes aus einer Momentaufnahme wieder her. |
Tipp
Verwenden Sie für regelmäßige Sicherungen und Wiederherstellungen GitHub Enterprise Server Backup Utilities oder GitHub Enterprise Server Backup Service anstelle dieser Befehle direkt. Die Sicherungstools koordinieren Elasticsearch-Momentaufnahmen mit den restlichen Daten Ihrer Instanz, um eine konsistente Sicherung oder Wiederherstellung sicherzustellen. Verwenden Sie die manuellen Befehle nur, wenn Sie Snapshots des Suchindex unabhängig von einer vollständigen Instanzsicherung oder Wiederherstellung verwalten müssen.
Wiederherstellen einer Momentaufnahme aus einer früheren Version
Sie können eine Momentaufnahme, die von einer früheren GitHub Enterprise Server Version erstellt wurde, in einer späteren Version wiederherstellen. Sie können eine Momentaufnahme von einer späteren Version nicht in einer früheren Version wiederherstellen.
-
Verfügbare Snapshots für die ältere Version auflisten.
ghe-es-list-snapshots -v 3.14.0 -
Stellen Sie die gewünschte Momentaufnahme wieder her.
ghe-es-restore-snapshot -v 3.14.0 -s SNAPSHOT-NAME
Elasticsearch aktualisiert die wiederhergestellten Indizes automatisch auf das Format der aktuellen Version.
Verwalten des Snapshotspeichers
Elasticsearch-Momentaufnahmen sind inkrementell, aber Ihr Cloudspeicherkonto kann im Laufe der Zeit weiterhin alte Momentaufnahmen sammeln. Um ein ungebundenes Speicherwachstum zu vermeiden, konfigurieren Sie eine Lifecycle-Richtlinie mit Ihrem Speicheranbieter, um Snapshots, die älter als Ihre Aufbewahrungsanforderungen sind, automatisch zu löschen. Weitere Informationen finden Sie in der Dokumentation Ihres Anbieters: