Skip to main content

Configurer les sauvegardes sur votre instance à l’aide des Utilitaires de sauvegarde

Dans le cadre d’un plan de récupération d’urgence, vous pouvez protéger les données de production en votre instance GitHub Enterprise Server configurant des sauvegardes automatisées.

À propos des options de sauvegarde pour GitHub Enterprise Server

GitHub offre deux options pour sauvegarder votre GitHub Enterprise Server instance :

  • GitHub Enterprise Server Backup Utilities: système de sauvegarde open source que vous installez sur un hôte distinct. Pour plus d’informations, consultez les sections ci-dessous.
  • GitHub Enterprise Server Backup Service (in préversion publique)  : Un service de sauvegarde managé disponible dans GitHub Enterprise Server. Consultez « Service de sauvegarde pour GitHub Enterprise Server ».

À propos de GitHub Enterprise Server Backup Utilities

GitHub Enterprise Server Backup Utilities est un système de sauvegarde que vous installez sur un hôte distinct et qui prend des instantanés de sauvegarde de votre instance GitHub Enterprise Server à intervalles réguliers via une connexion réseau SSH sécurisée. Vous pouvez utiliser un instantané pour restaurer une instance existante GitHub Enterprise Server à un état précédent à partir de l’hôte de sauvegarde.

Seules les données ajoutées depuis le dernier instantané sont transférées sur le réseau et occupent un espace de stockage physique supplémentaire. Pour réduire l’impact sur les performances, les sauvegardes sont effectuées en ligne selon la priorité processeur/entrées-sorties la plus faible. Vous n’avez pas besoin de planifier une fenêtre de maintenance pour effectuer une sauvegarde.

Les versions majeures et les numéros de version de GitHub Enterprise Server Backup Utilities s’alignent sur les versions fonctionnelles de GitHub Enterprise Server. Nous prenons en charge les quatre versions les plus récentes des deux produits. Pour plus d’informations, consultez « Publications de GitHub Enterprise Server ».

Pour plus d’informations sur les fonctionnalités, les exigences et l’utilisation avancée, consultez le GitHub Enterprise Server Backup Utilities fichier README dans la documentation du GitHub Enterprise Server Backup Utilities projet.

Prérequis

Pour utiliser GitHub Enterprise Server Backup Utilities, vous devez disposer d’un système hôte distinct de votre instance GitHub Enterprise Server. Pour plus d’informations sur la configuration du système, consultez Configuration requise dans le dépôt github/backup-utils.

Vous pouvez également intégrer GitHub Enterprise Server Backup Utilities à un environnement existant pour le stockage permanent à long terme de données critiques.

Nous recommandons que l’hôte de sauvegarde et votre instance GitHub Enterprise Server soient géographiquement éloignés l’un de l’autre. Ainsi, les sauvegardes seront disponibles pour une récupération si un sinistre ou une panne réseau de grande ampleur se produit sur le site principal.

Les besoins en stockage physique varieront en fonction de l’utilisation disque des dépôts Git et des modèles de croissance attendus :

MatérielRecommandation
Processeurs virtuels4
Mémoire8 Go
StockageCinq fois le stockage alloué à l’instance principale

Selon votre utilisation en termes par exemple d’activité des utilisateurs et d’intégrations sélectionnées, des ressources supplémentaires peuvent s’avérer nécessaires.

Pour plus d’informations, consultez GitHub Enterprise Server Backup Utilities les conditions requises dans la documentation du GitHub Enterprise Server Backup Utilities projet.

Installation de GitHub Enterprise Server Backup Utilities

Pour l’installer GitHub Enterprise Server Backup Utilities sur votre hôte de sauvegarde, téléchargez la dernière version du GitHub Enterprise Server Backup Utilitiesdépôt github/backup-utils compatible avec votre version de GitHub Enterprise Server. Par exemple, si vous exécutez la version 3.8.4 de GitHub Enterprise Server, téléchargez la dernière version de GitHub Enterprise Server Backup Utilities la série 3.10. Cela est possible, car toutes les versions GitHub Enterprise Server Backup Utilities sont rétrocompatibles pour 2 versions, ce qui signifie que la GitHub Enterprise Server Backup Utilities série 3.10 peut être utilisée pour sauvegarder et restaurer GitHub Enterprise Server des instances exécutant les versions 3.8, 3.9 ou 3.10.

Après avoir téléchargé une archive compressée, vous pouvez extraire et installer le contenu. Pour plus d’informations, consultez Démarrage dans le référentiel github/backup-utils.

Si vous disposez d’un fichier de configuration de sauvegarde existant, backup.configveillez à copier le fichier à l’emplacement de la version nouvellement extraite et installée de GitHub Enterprise Server Backup Utilities.

Les instantanés de sauvegarde créés par GitHub Enterprise Server Backup Utilities sont enregistrés dans le chemin d’accès sur disque défini par la variable de répertoire de données GHE_DATA_DIR dans votre fichier backup.config. Ces instantanés doivent être stockés sur un système de fichiers qui prend en charge les liens symboliques et physiques.

Remarque

Nous vous recommandons de veiller à ce que vos instantanés ne soient pas conservés dans un sous-répertoire du répertoire d’installation, afin d’éviter de remplacer par inadvertance votre répertoire de données lors de la GitHub Enterprise Server Backup Utilities mise à niveau GitHub Enterprise Server Backup Utilities des versions.

  1. Téléchargez la version appropriée GitHub Enterprise Server Backup Utilities à partir de la page Releases du dépôt github/backup-utils.

  2. Pour extraire le référentiel à l’aide de tar, exécutez la commande suivante.

    tar -xzvf /path/to/github-backup-utils-vMAJOR.MINOR.PATCH.tar.gz
    
  3. Pour basculer vers le répertoire du dépôt local, exécutez la commande suivante.

    cd backup-utils
    
  4. Pour copier le fichier backup.config-example inclus dans backup.config, exécutez la commande suivante.

    cp backup.config-example backup.config
    
  5. Pour personnaliser votre configuration, modifiez backup.config dans un éditeur de texte.

    1. Si vous avez précédemment mis GitHub Enterprise Server Backup Utilities à niveau à l’aide de Git, veillez à copier votre configuration existante dans backup.config le nouveau fichier. Pour plus d’informations, consultez Mise à niveau GitHub Enterprise Server Backup Utilities.

    2. Définissez la GHE_HOSTNAME valeur sur le nom d’hôte ou l’adresse IP de votre GitHub Enterprise Server instance principale.

      Remarque

      S’il votre instance GitHub Enterprise Server est déployé en tant que cluster ou dans une configuration à haute disponibilité à l’aide d’un équilibreur de charge, il GHE_HOSTNAME peut s’agir du nom d’hôte de l’équilibreur de charge, tant que l’équilibreur de charge autorise l’accès SSH sur le port 122 vers votre instance GitHub Enterprise Server.

      Pour faire en sorte qu’une instance récupérée soit immédiatement disponible, effectuez des sauvegardes ciblant l’instance principale, même dans une configuration de géoréplication.

    3. Définissez la valeur de GHE_DATA_DIR sur l’emplacement du système de fichiers où vous souhaitez stocker les instantanées de sauvegarde. Nous vous recommandons de choisir un emplacement sur le même système de fichiers que votre hôte de sauvegarde.

  6. Pour accorder à votre hôte de sauvegarde l’accès à votre instance, ouvrez la page des paramètres de votre instance principale à http(s)://HOSTNAME/setup/settings et ajoutez la clé SSH de l’hôte de sauvegarde à la liste des clés SSH autorisées. Pour plus d’informations, consultez « Accès à l’interpréteur de commandes d’administration (SSH) ».

  7. Sur votre hôte de sauvegarde, vérifiez la connectivité SSH avec votre instance GitHub Enterprise Server à l’aide de la commande ghe-host-check.

    ./bin/ghe-host-check
    
  8. Pour créer une sauvegarde complète initiale, exécutez la commande suivante.

    ./bin/ghe-backup
    

Pour plus d’informations sur l’utilisation avancée, consultez le GitHub Enterprise Server Backup Utilities fichier README dans la documentation du GitHub Enterprise Server Backup Utilities projet.

Mise à niveau GitHub Enterprise Server Backup Utilities

Lors de la mise à niveau GitHub Enterprise Server Backup Utilities, vous devez choisir une version qui fonctionnera avec votre version actuelle de GitHub Enterprise Server. Votre installation de GitHub Enterprise Server Backup Utilities doit être au minimum de la même version que votre instance GitHub Enterprise Server et ne peut pas avoir plus de deux versions d’avance sur votre instance GitHub Enterprise Server. Pour plus d’informations, consultez GitHub Enterprise Server les exigences de version dans la documentation du projet GitHub Enterprise Server Backup Utilities.

  1. Vérifiez la méthode d’installation pour GitHub Enterprise Server Backup Utilities. Les versions précédentes de GitHub Enterprise Server Backup Utilities prenaient en charge l’installation et les mises à jour dans un dépôt Git local, mais cette méthode n’est plus prise en charge.

    1. Sur votre hôte de sauvegarde, accédez à votre répertoire GitHub Enterprise Server Backup Utilities, généralement backup-utils.

    2. Pour vérifier s’il existe un répertoire de travail valide dans un dépôt Git, exécutez la commande suivante.

      git rev-parse --is-inside-work-tree
      
  2. Pour déterminer comment procéder à la mise à niveau GitHub Enterprise Server Backup Utilities, passez en revue la sortie à partir de git rev-parse --is-inside-work-tree.

    • Si la sortie est true, GitHub Enterprise Server Backup Utilities a été installée en clonant le dépôt Git du projet. Pour effectuer une mise à niveau, copiez votre configuration existante dans backup.config, puis suivez les instructions de l’installation GitHub Enterprise Server Backup Utilities.
    • Si la sortie inclut fatal: not a git repository (or any of the parent directories), GitHub Enterprise Server Backup Utilities a été extraite d’un fichier d’archive compressé. Pour effectuer la mise à niveau, suivez les instructions de l’installation GitHub Enterprise Server Backup Utilities.

Planification d'une sauvegarde

Vous pouvez planifier des sauvegardes régulières sur l’hôte de sauvegarde à l’aide de la commande cron(8) ou d’un service de planification de commandes similaire. La fréquence de sauvegarde configurée détermine l’objectif de point de récupération (RPO) dans le cas le plus défavorable dans votre plan de récupération. Par exemple, si vous avez planifié une exécution de la sauvegarde tous les jours à minuit, vous pouvez perdre jusqu’à 24 heures de données dans un scénario catastrophe. Nous vous recommandons de commencer avec une planification de sauvegarde horaire, garantissant ainsi dans le pire des cas une perte de données maximale d’une heure si les données du site principal sont détruites.

Si les tentatives de sauvegarde se chevauchent, la commande ghe-backup abandonne avec un message d’erreur indiquant l’existence d’une sauvegarde simultanée. En pareil cas, nous vous recommandons de diminuer la fréquence de vos sauvegardes planifiées. Pour plus d’informations, consultez la section « Planification des sauvegardes » du GitHub Enterprise Server Backup Utilities fichier README dans la documentation du GitHub Enterprise Server Backup Utilities projet.

Restauration d’une sauvegarde

En cas de panne prolongée ou d’événement catastrophique sur le site principal, vous pouvez effectuer une restauration votre instance GitHub Enterprise Server en approvisionnant une autre instance et en effectuant une restauration à partir de l’hôte de sauvegarde. Vous devez ajouter la clé SSH de l’hôte de sauvegarde à l’instance cible GitHub Enterprise en tant que clé SSH autorisée avant de restaurer une instance.

Lorsque vous effectuez des restaurations de sauvegardes vers votre instance GitHub Enterprise Server, vous ne pouvez restaurer que des données vieilles d’au maximum deux versions fonctionnelles. Par exemple, si vous effectuez une sauvegarde à partir de GitHub Enterprise Server la version 3.0.x, vous pouvez restaurer la sauvegarde sur une instance exécutant GitHub Enterprise Server la version 3.2.x. Vous ne pouvez pas restaurer les données d’une sauvegarde de GitHub Enterprise Server 2.22.x vers une instance exécutant la version 3.2.x, car cela serait trois sauts entre les versions (2.22 à 3.0 à 3.1 à 3.2). Vous devrez d’abord restaurer sur une instance 3.1.x, puis effectuer une mise à niveau vers la version 3.2.x.

Des paramètres réseau sont exclus de l’instantané de sauvegarde. Après la restauration, vous devez configurer manuellement la mise en réseau sur l’instance cible GitHub Enterprise Server .

Prérequis

  1. Assurez-vous que le mode maintenance est activé sur l’instance principale et que tous les processus actifs sont terminés. Pour plus d’informations, consultez « Activation et planification du mode de maintenance ».
  2. Arrêtez la réplication sur tous les nœuds réplica dans une configuration à haute disponibilité. Pour plus d’informations, consultez « À propos de la configuration de la haute disponibilité ».
  3. Provisionnez une nouvelle GitHub Enterprise Server instance à utiliser comme cible pour la restauration de votre sauvegarde. Pour plus d’informations, consultez « Configuration d’une instance GitHub Enterprise Server ».
  4. Si GitHub Actions est activé sur votre instance GitHub Enterprise Server, vous devez configurer le fournisseur de stockage externe pour GitHub Actions sur l’instance de remplacement. Pour plus d’informations, consultez « Sauvegarde et restauration de GitHub Enterprise Server avec GitHub Actions activé ».

Démarrage de l’opération de restauration

Pour effectuer une restauration votre instance GitHub Enterprise Server à partir de votre hôte de sauvegarde à l’aide de la dernière capture instantanée réussie, utilisez la ghe-restore commande. Vous pouvez utiliser les options supplémentaires suivantes avec ghe-restore.

  • L’indicateur -c remplace les paramètres, le certificat et les données de licence sur l’hôte cible, même s’il est déjà configuré. Omettez cet indicateur si vous configurez une instance intermédiaire à des fins de test et que vous souhaitez conserver la configuration existante sur la cible. Pour plus d’informations, consultez la section « Utilisation des commandes de sauvegarde et de restauration » du GitHub Enterprise Server Backup Utilities fichier README dans le référentiel github/backup-utils.
  • L’indicateur -s vous permet de sélectionner un autre instantané de sauvegarde.

Une fois que vous avez exécuté ghe-restore, la commande vérifie la restauration, puis génère les détails et l’état pendant l’opération.

$ 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.

En option, pour valider la restauration, configurez une liste d'exceptions IP pour autoriser l'accès à une liste spécifiée d'adresses IP. Pour plus d’informations, consultez « Activation et planification du mode de maintenance ».

Sur une instance dans une configuration à haute disponibilité, une fois que vous avez restauré sur de nouveaux disques sur une instance existante ou vide, ghe-repl-status peut signaler que la réplication Git ou Alambic n’est pas synchronisée en raison d'UUIDs de serveur périmés. Ces UUID obsolètes peuvent être liés au fait qu’un nœud mis hors service dans une configuration à haute disponibilité est toujours présent dans la base de données d’application, mais pas dans la configuration de réplication restaurée.

Pour corriger une fois la restauration terminée et avant de commencer la réplication, vous pouvez supprimer les UUID obsolètes avec ghe-repl-teardown. Si vous avez besoin d’aide supplémentaire, visitez Support GitHub Enterprise.

Supervision de la progression de la sauvegarde ou de la restauration

Pendant une opération de sauvegarde ou de restauration, vous pouvez utiliser l’utilitaire ghe-backup-progress sur votre hôte de sauvegarde pour superviser la progression de l’opération. L’utilitaire affiche la progression de chaque travail de manière séquentielle.

Pour surveiller la progression sur l’hôte de sauvegarde, à partir du répertoire contenant GitHub Enterprise Server Backup Utilities, exécutez la commande suivante.

Shell
bin/ghe-backup-progress

Par défaut, l’utilitaire affiche la progression en continu jusqu’à ce que l’opération soit terminée. Vous pouvez appuyer sur n’importe quelle touche pour revenir à l'invite de commande.

Si vous le souhaitez, vous pouvez exécuter la commande suivante pour afficher la progression actuelle, le dernier travail terminé, puis quitter immédiatement.

Shell
bin/ghe-backup-progress --once