Skip to main content

Wiederherstellen aus einer Sicherung

So stellst du eine GitHub Enterprise Server-Instanz mithilfe einer zuvor erstellten Sicherungsmomentaufnahme wieder her.

Du kannst eine GitHub Enterprise Server-Instanz mithilfe der Befehlszeile aus einer Sicherung wiederherstellen. Der Sicherungsdienst unterstützt die vollständige Instanzwiederherstellung, einschließlich Konfiguration und Benutzerdaten.

Warnung

Durch die Wiederherstellung aus einer Sicherung werden alle vorhandenen Daten in deiner Instanz überschrieben. Dieser Vorgang kann nicht rückgängig gemacht werden.

Versionsanforderungen für Momentaufnahmen

Du kannst eine Momentaufnahme nur wiederherstellen, wenn sie aus maximal zwei Featureversionen hinter der Version der Zielinstanz stammt.

Zum Beispiel:

  • Eine Momentaufnahme aus Version 3.17 kann auf einem Ziel mit 3.17.x, 3.18.x oder 3.19.x wiederhergestellt werden.
  • Du kannst eine 3.17-Momentaufnahme nicht in Version 3.20 wiederherstellen, da diese mehr als zwei Versionen voraus ist.

Du kannst auch nicht von einer neueren Version auf eine ältere Version wiederherstellen. Wenn du beispielsweise versuchst, eine 3.18-Momentaufnahme in einer 3.17-Instanz wiederherzustellen, tritt ein Fehler auf: Error: Snapshot can not be restored to an older release of GitHub Enterprise Server..

Voraussetzungen

Vor dem Wiederherstellen einer Sicherung:

  1. Aktiviere den Wartungsmodus in der Zielinstanz. Weitere Informationen findest du unter Wartungsmodus aktivieren und planen.
  2. Bestätige den Zugriffs auf den Sicherungsspeicher, der die Momentaufnahme enthält.
  3. Halte beeinträchtigende Dienste an. Stelle bei Verwendung von Hochverfügbarkeit sicher, dass die Replikation beendet ist.
  4. Bereite GitHub Actions vor. Wenn aktiviert, musst du sicherstellen, dass die Zielinstanz mit dem richtigen externen Speicher konfiguriert ist. Einzelheiten findest du unter Wiederherstellen mit aktiviertem GitHub Actions-Feature.

Starten des Wiederherstellungsvorgangs

Wiederherstellen aus einer Momentaufnahme:

  1. Stelle eine SSH-Verbindung mit der Zielinstanz als admin-Benutzer her.

  2. Führen Sie einen der folgenden Befehle aus:

    • Wiederherstellen der neuesten Momentaufnahme:

      ghe-restore
      
    • Stelle eine bestimmte Momentaufnahme wieder her. Ersetze <SNAPSHOT_TIMESTAMP> durch den Zeitstempel der Momentaufnahme, die du wiederherstellen möchtest (z. B. YYYYMMDDTHHMMSS).

      ghe-restore -s <SNAPSHOT_TIMESTAMP>
      
    • (Optional) Erzwinge das Überschreiben von Konfigurations-, Zertifikat- und Lizenzdaten:

      ghe-restore -c          # Latest snapshot
      ghe-restore -s <SNAPSHOT_TIMESTAMP> -c  # Specific snapshot
      
  3. Fertigstellung in Verwaltungskonsole:

    • Überprüfe alle Konfigurationseinstellungen (Netzwerk, Authentifizierung, TLS usw.).
    • Klicke auf Save settings, um sie anzuwenden und die Dienste zu starten.
    • Die Instanz ist erst vollständig funktionsfähig, wenn dieser Schritt abgeschlossen ist.
  4. Überprüfe die wiederhergestellte Instanz, um sicherzustellen, dass alles wie erwartet funktioniert.

  5. Führe bei Verwendung von Hochverfügbarkeit zuerst die Wiederherstellung für eine eigenständige Instanz aus. Konfiguriere dann die Hochverfügbarkeit neu.

    • Wenn Synchronisierungsprobleme auftreten (z. B. veraltete UUIDs in ghe-repl-status), führe ghe-repl-teardown aus.
    • Wende dich an GitHub-Support, um Hilfe zu erhalten.
  6. Registriere selbstgehostete GitHub Actions-Runner erneut, da die Wiederherstellung vorherige Token ungültig macht.

Momentaufnahmerotation und -aufbewahrung

Momentaufnahmen werden basierend auf deinen Aufbewahrungseinstellungen automatisch bereinigt:

  • Nur die neuesten n Momentaufnahmen werden beibehalten (wie konfiguriert).
  • Ältere Momentaufnahmen werden nach jeder erfolgreichen Sicherung gelöscht.
  • Momentaufnahmen werden mithilfe von Zeitstempeln (YYYYMMDDTHHMMSS) benannt, um sie einfach zuordnen zu können.
  • Hardlinks werden verwendet, um unveränderte Dateien effizient zu speichern und gleichzeitig die vollständige Wiederherstellbarkeit beizubehalten.

Problembehandlung bei Wiederherstellungsfehlern

Wenn ein Wiederherstellungsvorgang fehlschlägt, überprüfe Folgendes:

  • Vollständigkeit der Sicherung: Stelle sicher, dass die Momentaufnahme nicht unterbrochen oder beschädigt wurde.
  • Speicherzugriff: Überprüfe, ob die Instanz das Sicherungsvolume bereitstellen und lesen kann.
  • Versionskonflikt: Vergewissere dich, dass die Momentaufnahmeversion mit der Zielinstanz kompatibel ist.
  • Protokolle: Überprüfe /var/log/github-backup/restore-verbose-[timestamp].log auf Fehler.

Wenn Verwaltungskonsole einen generischen Fehler anzeigt, stelle eine SSH-Verbindung mit der Instanz her, um auf die ausführlichen Protokolle zuzugreifen.