Informationen zu GitHub Enterprise Server Backup Utilities
GitHub Enterprise Server Backup Utilities ist ein Sicherungssystem, das du auf einem separaten Host installierst, der in regelmäßigen Intervallen über eine sichere SSH-Netzwerkverbindung Sicherungsmomentaufnahmen von deine GitHub Enterprise Server-Instanz erstellt. Mit einem Snapshot kannst du eine vorhandene GitHub Enterprise Server-Instanz in einem vorherigen Zustand auf dem Backup-Host wiederherstellen.
Nur die seit dem letzten Snapshot hinzugefügten Daten werden über das Netzwerk übertragen und belegen zusätzlichen physischen Speicherplatz. Zum Minimieren der Auswirkung auf die Leistung werden Backups online unter der niedrigsten CPU-/E/A-Priorität durchgeführt. Zum Durchführen eines Backups muss kein Wartungsfenster geplant werden.
Hauptversionen und Versionsnummern für GitHub Enterprise Server Backup Utilities sind auf Featurereleases von GitHub Enterprise Server abgestimmt. Wir unterstützen die vier neuesten Versionen beider Produkte. Weitere Informationen findest du unter GitHub Enterprise Server-Releases.
Ausführlichere Informationen zu Features, Anforderungen und erweiterter Verwendung findest du in der README-Datei zu GitHub Enterprise Server Backup Utilities in der GitHub Enterprise Server Backup Utilities-Projektdokumentation.
Voraussetzungen
Du musst über ein von deine GitHub Enterprise Server-Instanz getrenntes Linux- oder Unix-Hostsystem verfügen, um GitHub Enterprise Server Backup Utilities verwenden zu können.
Du kannst GitHub Enterprise Server Backup Utilities auch zur langfristigen dauerhaften Speicherung von kritischen Daten in eine vorhandene Umgebung integrieren.
Der Sicherungshost und deine GitHub Enterprise Server-Instanz sollten geografisch voneinander getrennt sein. Dadurch wird gewährleistet, dass Backups wiederhergestellt werden können, falls am Hauptstandort eine schwere Katastrophe oder ein Netzwerkausfall auftritt.
Die Anforderungen an den physischen Speicher variieren basierend auf der Git-Repository-Festplattennutzung und den erwarteten Wachstumsmustern:
Hardware | Empfehlung |
---|---|
vCPUs | 2 |
Memory | 2 GB |
Storage | Das Fünffache des zugeordneten Speichers der primären Instanz |
Entsprechend deiner Nutzung, beispielsweise in Bezug auf die Benutzeraktivität und die ausgewählten Integrationen, sind möglicherweise mehr Ressourcen erforderlich.
Ausführlichere Informationen findest du unter GitHub Enterprise Server Backup Utilities-Anforderungen in der GitHub Enterprise Server Backup Utilities-Projektdokumentation.
GitHub Enterprise Server Backup Utilities installieren
Zum Installieren von GitHub Enterprise Server Backup Utilities auf deinem Sicherungshost empfehlen wir, das Git-Repository des Projekts zu klonen. Mit diesem Ansatz kannst du neue Versionen direkt mithilfe von Git abrufen und deine vorhandene Sicherungskonfigurationsdatei (backup.config
) beibehalten, wenn du eine neue Version installierst.
Falls der Hostcomputer nicht auf das Internet zugreifen kann, kannst du die einzelnen GitHub Enterprise Server Backup Utilities-Releases ansonsten auch als komprimiertes Archiv herunterladen und dann den Inhalt extrahieren und installieren. Weitere Informationen findest du unter Erste Schritte in der GitHub Enterprise Server Backup Utilities-Projektdokumentation.
Sicherungsmomentaufnahmen werden in den Datenträgerpfad geschrieben, der von der GHE_DATA_DIR
-Datenverzeichnisvariable in deiner backup.config
-Datei festgelegt wurde. Momentaufnahmen müssen auf einem Dateisystem gespeichert werden, das symbolische und feste Links unterstützt.
Hinweis: Es wird empfohlen, sicherzustellen, die Momentaufnahmen nicht in einem Unterverzeichnis des GitHub Enterprise Server Backup Utilities-Installationsverzeichnis zu speichern, um zu vermeiden, dass das Datenverzeichnis beim Aktualisieren von GitHub Enterprise Server Backup Utilities-Versionen versehentlich überschrieben wird.
-
Führe den folgenden Befehl aus, um das GitHub Enterprise Server Backup Utilities-Projektrepository in ein lokales Verzeichnis auf deinem Sicherungshost zu klonen.
$ git clone https://github.com/github/backup-utils.git /path/to/target/directory/backup-utils
-
Führe den folgenden Befehl aus, um in das lokale Repositoryverzeichnis zu wechseln.
cd backup-utils
-
Zum Aktualisieren auf die neueste Projektreleaseversion verwende den
stable
-Branch, indem du dengit checkout stable
-Befehl ausführst.git checkout stable
Falls du eine bestimmte Projektversion verwenden möchtest, kannst du alternativ den folgenden Befehl ausführen, wobei du
X.Y.Z
durch die gewünschte Releaseversion ersetzt.$ git checkout vX.Y.Z
-
Führe den folgenden Befehl aus, um die enthaltene
backup.config-example
-Datei inbackup.config
zu kopieren.cp backup.config-example backup.config
-
Zum Anpassen deiner Konfiguration bearbeite
backup.config
in einem Text-Editor.-
Lege den
GHE_HOSTNAME
-Wert auf den Hostnamen oder die IP-Adresse deiner primären GitHub Enterprise Server-Instanz fest.Hinweis: Wenn deine GitHub Enterprise Server-Instanz als Cluster oder in einer Hochverfügbarkeitskonfiguration mithilfe eines Lastenausgleichs bereitgestellt wird, kann
GHE_HOSTNAME
der Hostname des Lastenausgleichs sein, solange er (auf Port 122) SSH-Zugriff auf deine GitHub Enterprise Server-Instanz zulässt.Um sicherzustellen, dass eine wiederhergestellte Appliance sofort verfügbar ist, solltest du Backups durchführen, die selbst in einer Geo-Replikationskonfiguration auf die primäre Instanz abzielen.
-
Lege den
GHE_DATA_DIR
-Wert auf den Dateisystempfad fest, unter dem du Backup-Momentaufnahmen speichern möchtest. Es wird empfohlen, einen Speicherort auszuwählen, der sich in demselben Dateisystem wie dein Sicherheitshost befindet, aber außerhalb des Pfads, in den du das Git-Repository in Schritt 1 geklont hast.
-
-
Um deinem Sicherungshost Zugriff auf deine Instanz zu gewähren, öffne die Einstellungsseite deiner primären Instanz unter
http(s)://HOSTNAME/setup/settings
, und füge den SSH-Schlüssel des Sicherungshosts der Liste autorisierter SSH-Schlüssel hinzu. Weitere Informationen findest du unter Auf die Verwaltungsshell (SSH) zugreifen. -
Überprüfe mit dem
ghe-host-check
-Befehl die SSH-Verbindung mit deine GitHub Enterprise Server-Instanz auf dem Sicherungshost../bin/ghe-host-check
-
Führe den folgenden Befehl aus, um eine erste vollständige Sicherung zu erstellen.
./bin/ghe-backup
Weitere Informationen zur erweiterten Verwendung findest du in der README-Datei zu GitHub Enterprise Server Backup Utilities in der GitHub Enterprise Server Backup Utilities-Projektdokumentation.
Aktualisieren von GitHub Enterprise Server Backup Utilities
Wenn du GitHub Enterprise Server Backup Utilities aktualisierst, musst du eine Version auswählen, die mit deiner aktuellen Version von GitHub Enterprise Server funktioniert. Deine Installation von GitHub Enterprise Server Backup Utilities muss mindestens der Version von deine GitHub Enterprise Server-Instanz entsprechen und darf nicht älter als zwei Versionen davor sein. Weitere Informationen findest du unter Versionsanforderungen für GitHub Enterprise Server in der GitHub Enterprise Server Backup Utilities-Projektdokumentation. Du kannst GitHub Enterprise Server Backup Utilities in einem Git-Repository aktualisieren, indem du die neuesten Änderungen abrufst und auscheckst.
Falls du kein Git-Repository für deine Installation verwendest, kannst du ansonsten auch ein neues Archiv extrahieren oder deinen Ansatz ändern, um stattdessen ein Git-Repository zu verwenden.
Überprüfen des Installationstyps
Du kannst die Installationsmethode für GitHub Enterprise Server Backup Utilities überprüfen und die beste Möglichkeit für die Aktualisierung deiner Installation ermitteln.
-
Navigiere auf deinem Sicherungshost zu deinem GitHub Enterprise Server Backup Utilities-Verzeichnis, gewöhnlich
backup-utils
. -
Führe den folgenden Befehl aus, um zu überprüfen, ob ein gültiges Arbeitsverzeichnis in einem Git-Repository vorhanden ist.
git rev-parse --is-inside-work-tree
Wenn die Ausgabe
true
lautet, wurde GitHub Enterprise Server Backup Utilities durch Klonen des Git-Repositorys des Projekts installiert. Wenn die Ausgabefatal: not a git repository (or any of the parent directories)
lautet, wurde GitHub Enterprise Server Backup Utilities wahrscheinlich durch Extrahieren einer komprimierten Archivdatei installiert. Wenn sich deine Installation in einem Git-Repository befindet, kannst du die neueste Version mithilfe von Git installieren. Wenn die Installation aus einer komprimierten Archivdatei stammt, kannst du entweder die neueste Version herunterladen und extrahieren oder GitHub Enterprise Server Backup Utilities mithilfe von Git neu installieren, um zukünftige Upgrades zu vereinfachen.
- Aktualisieren einer Installation in einem Git-Repository
- Aktualisieren mit Git statt mit komprimierten Archiven
Aktualisieren einer Installation in einem Git-Repository
-
Navigiere auf deinem Sicherungshost zu deinem GitHub Enterprise Server Backup Utilities-Verzeichnis, gewöhnlich
backup-utils
.Hinweis: Es wird empfohlen, vor der Aktualisierung von GitHub Enterprise Server Backup Utilities eine Kopie der vorhandenen
backup.config
-Datei an einem temporären Speicherort zu erstellen (z. B.$HOME/backup.config
). -
Führe den
git fetch
-Befehl aus, um die neuesten Projektupdates herunterzuladen.git fetch
-
Zum Aktualisieren auf die neueste Projektreleaseversion verwende den
stable
-Branch, indem du dengit checkout stable
-Befehl ausführst.git checkout stable
Falls du eine bestimmte Projektversion verwenden möchtest, kannst du alternativ den folgenden Befehl ausführen, wobei du
X.Y.Z
durch die gewünschte Releaseversion ersetzt.
1. Führe den folgenden Befehl aus, um zu überprüfen, ob das Upgrade erfolgreich war.$ git checkout vX.Y.Z
./bin/ghe-backup --version
-
Führe den folgenden Befehl aus, um die SSH-Konnektivität zwischen deinen konfigurierten GitHub Enterprise Server-Instanzen zu überprüfen.
./bin/ghe-host-check
Aktualisieren mit Git statt mit komprimierten Archiven
Wenn dein Sicherungshost über eine Internetverbindung verfügt und du zuvor ein komprimiertes Archiv (.tar.gz
) zum Installieren oder Aktualisieren von GitHub Enterprise Server Backup Utilities verwendet hast, empfehlen wir, für deine Installation stattdessen ein Git-Repository zu verwenden. Das Aktualisieren mit Git ist weniger arbeitsaufwendig, und deine Sicherungskonfiguration wird beibehalten.
-
Navigiere auf deinem Sicherungshost zu deinem GitHub Enterprise Server Backup Utilities-Verzeichnis, gewöhnlich
backup-utils
. -
Wenn du die vorhandene GitHub Enterprise Server Backup Utilities-Installation sichern möchtest, kopiere die aktuelle
backup.config
-Datei an einen sicheren Speicherort, z. B. dein Stammverzeichnis.$ cp backup.config $HOME/backup.config.saved-$(date +%Y%m%d-%H%M%S)
-
Ändere das lokale Verzeichnis auf deinem Sicherungshost, in dem du das Git-Repository für GitHub Enterprise Server Backup Utilities installieren möchtest.
-
Führe den folgenden Befehl aus, um das Projektrepository in das Verzeichnis auf deinem Sicherungshost zu klonen.
git clone https://github.com/github/backup-utils.git
-
Führe den folgenden Befehl aus, um in das geklonte Repository zu wechseln.
cd backup-utils
-
Zum Aktualisieren auf die neueste Projektreleaseversion verwende den
stable
-Branch, indem du dengit checkout stable
-Befehl ausführst.git checkout stable
Falls du eine bestimmte Projektversion verwenden möchtest, kannst du alternativ den folgenden Befehl ausführen, wobei du
X.Y.Z
durch die gewünschte Releaseversion ersetzt.$ git checkout vX.Y.Z
-
Kopiere die vorhandene Sicherungskonfigurationsdatei in das lokale Repositoryverzeichnis, um deine vorherige Sicherungskonfiguration wiederherzustellen. Ersetze den Pfad im Befehl durch den Speicherort der Datei, die in Schritt 2 gespeichert wurde.
$ cp PATH/TO/BACKUP/FROM/STEP/2 backup.config
Hinweis: Du kannst auswählen, wo deine Sicherungskonfigurationsdatei nach dem Klonen wiederhergestellt werden soll. Weitere Informationen zum Speicherort von Konfigurationsdateien findest du unter Erste Schritte in der GitHub Enterprise Server Backup Utilities-Projektdokumentation.
-
Um zu bestätigen, dass die Pfade zu Verzeichnissen oder Skripts in deiner Sicherungskonfigurationsdatei richtig sind, überprüfe die Datei in einem Text-Editor.
-
Führe den folgenden Befehl aus, um zu überprüfen, ob das Upgrade erfolgreich war.
./bin/ghe-backup --version
-
Führe den folgenden Befehl aus, um die SSH-Konnektivität zwischen deinen konfigurierten GitHub Enterprise Server-Instanzen zu überprüfen.
./bin/ghe-host-check
-
Lösche dein altes GitHub Enterprise Server Backup Utilities-Verzeichnis aus Schritt 1 (wo sich die komprimierte Archivinstallation befindet).
Backup planen
Mithilfe des Befehls cron(8)
oder eines ähnlichen Diensts zum Planen von Befehlen kannst du regelmäßige Backups auf dem Backup-Host planen. Die konfigurierte Sicherungshäufigkeit schreibt die ungünstigste Recovery Point Objective (RPO) in deinem Wiederherstellungsplan vor. Angenommen, du hast das Backup so geplant, dass es täglich um Mitternacht ausgeführt wird. In diesem Fall könntest du in einem Notfallszenario bis zu 24 Stunden an Daten verlieren. Es wird empfohlen, mit einem stündlichen Backup-Plan zu beginnen. Dadurch wird garantiert, dass schlimmstenfalls maximal eine Stunde an Daten am Hauptstandort vernichtet wird.
Wenn sich Backup-Versuche überschneiden, wird der Befehl ghe-backup
mit einer Fehlermeldung abgebrochen. Diese gibt an, dass ein gleichzeitiges Backup vorhanden ist. In diesem Fall wird empfohlen, die Häufigkeit deiner geplanten Sicherungen zu verringern. Weitere Informationen findest du im Abschnitt „Planen von Sicherungen“ der README-Datei zu GitHub Enterprise Server Backup Utilities in der GitHub Enterprise Server Backup Utilities-Projektdokumentation.
Wiederherstellen einer Sicherung
Im Falle eines längeren Ausfalls oder eines Notfalls am Hauptstandort kannst du deine GitHub Enterprise Server-Instanz wiederherstellen. Stelle dazu eine andere GitHub Enterprise-Appliance bereit, und führe auf dem Sicherungshost eine Wiederherstellung aus. Du musst der Ziel-GitHub Enterprise-Appliance den SSH-Schlüssel des Backup-Hosts als einen autorisierten SSH-Schlüssel hinzufügen, bevor du eine Appliance wiederherstellst.
Hinweis: Bei der Ausführung von Vorgängen zur Sicherungswiederherstellung auf deine GitHub Enterprise Server-Instanz gelten die gleichen Versionsunterstützungsregeln. Du kannst nur Daten wiederherstellen, die maximal zwei Feature-Releases zurückliegen.
Wenn du beispielsweise eine Sicherung von GitHub Enterprise Server 3.0.x durchführst, kannst du die Sicherung in einer Instanz von GitHub Enterprise Server 3.2.x wiederherstellen. Du kannst keine Daten aus einer Sicherung von GitHub Enterprise Server 2.22.x in einer Instanz wiederherstellen, die 3.2.x ausführt, da dadurch drei Versionen übersprungen würden (2.22 auf 3.0 auf 3.1 auf 3.2). Die Wiederherstellung muss zuerst in einer Instanz erfolgen, die 3.1.x ausführt, und dann auf 3.2.x aktualisiert werden.
Führe den Befehl ghe-restore
aus, um deine GitHub Enterprise Server-Instanz aus der letzten erfolgreichen Momentaufnahme wiederherzustellen.
Hinweis: Stelle vor dem Wiederherstellen einer Sicherung Folgendes sicher:
- Der Wartungsmodus ist für die primäre Instanz aktiviert, und alle aktiven Prozesse wurden abgeschlossen. Weitere Informationen findest du unter Wartungsmodus aktivieren und planen.
- In Konfigurationen mit hoher Verfügbarkeit wird die Replikation auf allen Replikaten beendet. Weitere Informationen findest du im
ghe-repl-stop
-Befehl unter Informationen zur Hochverfügbarkeitskonfiguration. - Wenn deine GitHub Enterprise Server-Instanz GitHub Actions aktiviert hat, musst du zuerst den externen Speicheranbieter GitHub Actions für die Ersatzappliance konfigurieren. Weitere Informationen findest du unter Sichern und Wiederherstellen von GitHub Enterprise Server mit aktivierten GitHub Actions.
Beim Ausführen des ghe-restore
-Befehls sollte eine Ausgabe wie die folgende angezeigt werden:
$ ghe-restore -c 169.154.1.1
> Checking for leaked keys in the backup snapshot that is being restored ...
> * No leaked keys found
> Connect 169.154.1.1:122 OK (v2.9.0)
> WARNING: All data on GitHub Enterprise appliance 169.154.1.1 (v2.9.0)
> will be overwritten with data from snapshot 20170329T150710.
> Please verify that this is the correct restore host before continuing.
> Type 'yes' to continue: yes
> Starting restore of 169.154.1.1:122 from snapshot 20170329T150710
# ...output truncated
> Completed restore of 169.154.1.1:122 from snapshot 20170329T150710
> Visit https://169.154.1.1/setup/settings to review appliance configuration.
Optional kannst du zur Validierung der Wiederherstellung eine IP-Ausnahmeliste konfigurieren, um den Zugriff auf eine bestimmte Liste von IP-Adressen zuzulassen. Weitere Informationen findest du unter Wartungsmodus aktivieren und planen.
Hinweis:
-
Die Netzwerkeinstellungen sind von der Sicherungsmomentaufnahme ausgeschlossen. Du musst das Netzwerk auf der Ziel-GitHub Enterprise Server-Appliance manuell konfigurieren, wie dies für deine Umgebung erforderlich ist.
-
Beim Wiederherstellen auf neue Datenträger auf einer vorhandenen oder leeren GitHub Enterprise Server-Instanz können veraltete UUIDs vorhanden sein, was dazu führt, dass die Git- und/oder Alambic-Replikation als nicht synchronisiert gemeldet wird. Veraltete Servereintrags-IDs können aufgrund eines eingestellten Knotens in einer Hochverfügbarkeitskonfiguration vorhanden sein, der noch in der Anwendungsdatenbank vorhanden ist, aber nicht in der wiederhergestellten Replikationskonfiguration. Zur Behebung können veraltete UUIDs mithilfe von
ghe-repl-teardown
entfernt werden, sobald die Wiederherstellung abgeschlossen ist und bevor die Replikation gestartet wird. Wende dich in diesem Szenario an GitHub Enterprise Support, um Unterstützung zu erhalten.
Du kannst die folgenden zusätzlichen Optionen mit dem ghe-restore
-Befehl verwenden:
- Das
-c
-Flag überschreibt die Einstellungen, Zertifikate und Lizenzdaten auf dem Zielhost, selbst wenn es bereits konfiguriert ist. Lass dieses Flag weg, wenn du eine Testinstanz für Testzwecke einrichtest und die vorhandene Konfiguration auf dem Ziel beibehalten möchtest. Weitere Informationen findest du im Abschnitt „Verwenden von Sicherungs- und Wiederherstellungsbefehlen“ der README-Datei zu GitHub Enterprise Server Backup Utilities in der GitHub Enterprise Server Backup Utilities-Projektdokumentation. - Mit dem
-s
-Flag kannst du eine andere Backup-Momentaufnahme auswählen.