doc-locale/fr-fr/administration/backup_restore/backup_cli.md
{{< details >}}
{{< /details >}}
{{< history >}}
{{< /history >}}
Cet outil est en cours de développement et est destiné à terme à remplacer les tâches Rake utilisées pour sauvegarder et restaurer GitLab. Vous pouvez suivre le développement de cet outil dans l'epic : Next Gen Scalable Backup and Restore.
Les commentaires sur l'outil sont les bienvenus dans le ticket de feedback.
Pour effectuer une sauvegarde de l'installation GitLab actuelle :
sudo gitlab-backup-cli backup all
Seul Google Cloud est pris en charge. Consultez l'epic 11577 pour connaître le plan d'ajout d'autres fournisseurs.
gitlab-backup-cli crée et exécute des jobs avec le Storage Transfer Service de Google Cloud pour copier les données GitLab vers un bucket de sauvegarde séparé.
Prérequis :
Pour créer une sauvegarde :
role.yaml avec la définition suivante :---
description: Role for backing up GitLab object storage
includedPermissions:
- storagetransfer.jobs.create
- storagetransfer.jobs.get
- storagetransfer.jobs.run
- storagetransfer.jobs.update
- storagetransfer.operations.get
- storagetransfer.projects.getServiceAccount
stage: GA
title: GitLab Backup Role
Appliquer le rôle :
gcloud iam roles create --project=<YOUR_PROJECT_ID> <ROLE_NAME> --file=role.yaml
Créez un compte de service pour les sauvegardes et ajoutez-le au rôle :
gcloud iam service-accounts create "gitlab-backup-cli" --display-name="GitLab Backup Service Account"
# Get the service account email from the output of the following
gcloud iam service-accounts list
# Add the account to the role created previously
gcloud projects add-iam-policy-binding <YOUR_PROJECT_ID> --member="serviceAccount:<SERVICE_ACCOUNT_EMAIL>" --role="roles/<ROLE_NAME>"
Pour vous authentifier avec un compte de service, consultez les informations d'identification du compte de service. Les informations d'identification peuvent être enregistrées dans un fichier ou stockées dans une variable d'environnement prédéfinie.
Créez un bucket de destination pour la sauvegarde dans Google Cloud Storage. Les options disponibles dépendent fortement de vos besoins.
Exécuter la sauvegarde :
sudo gitlab-backup-cli backup all --backup-bucket=<BUCKET_NAME>
Si vous souhaitez sauvegarder le bucket du registre de conteneurs, ajoutez l'option --registry-bucket=<REGISTRY_BUCKET_NAME>.
La sauvegarde crée une entrée sous backups/<BACKUP_ID>/<BUCKET> pour chacun des types de stockage d'objets dans le bucket.
Exemple de structure de répertoire de sauvegarde :
backups
└── 1714053314_2024_04_25_17.0.0-pre
├── artifacts.tar.gz
├── backup_information.json
├── builds.tar.gz
├── ci_secure_files.tar.gz
├── db
│ ├── ci_database.sql.gz
│ └── database.sql.gz
├── lfs.tar.gz
├── packages.tar.gz
├── pages.tar.gz
├── registry.tar.gz
├── repositories
│ ├── default
│ │ ├── @hashed
│ │ └── @snippets
│ └── manifests
│ └── default
├── terraform_state.tar.gz
└── uploads.tar.gz
Le répertoire db est utilisé pour sauvegarder la base de données PostgreSQL de GitLab en utilisant pg_dump pour créer un dump SQL. La sortie de pg_dump est transmise via un pipe à gzip afin de créer un fichier SQL compressé.
Le répertoire repositories est utilisé pour sauvegarder les dépôts Git, tels qu'ils figurent dans la base de données GitLab.
Les ID de sauvegarde identifient les sauvegardes individuelles. Vous avez besoin de l'ID de sauvegarde d'une archive de sauvegarde si vous devez restaurer GitLab et que plusieurs sauvegardes sont disponibles.
Les sauvegardes sont enregistrées dans un répertoire défini dans backup_path, spécifié dans le fichier config/gitlab.yml.
/var/opt/gitlab/backups.backup_id où <backup-id> identifie l'heure de création de la sauvegarde et la version de GitLab.Par exemple, si le nom du répertoire de sauvegarde est 1714053314_2024_04_25_17.0.0-pre, l'heure de création est représentée par 1714053314_2024_04_25 et la version de GitLab est 17.0.0-pre.
backup_information.json) {#backup-metadata-file-backup_informationjson}{{< history >}}
{{< /history >}}
backup_information.json se trouve dans le répertoire de sauvegarde et stocke les métadonnées relatives à la sauvegarde. Par exemple :
{
"metadata_version": 2,
"backup_id": "1714053314_2024_04_25_17.0.0-pre",
"created_at": "2024-04-25T13:55:14Z",
"gitlab_version": "17.0.0-pre"
}
{{< history >}}
{{< /history >}}
Prérequis :
gitlab-backup-cli.Pour restaurer une sauvegarde de l'installation GitLab actuelle :
Exécutez la commande suivante :
sudo gitlab-backup-cli restore all <backup_id>
Vous pouvez restaurer des données depuis Google Cloud Storage. L'epic 11577 propose d'ajouter la prise en charge d'autres fournisseurs.
Prérequis :
gitlab-backup-cli.gitlab.rb ou gitlab.yml, et celle-ci correspond à l'environnement de sauvegarde.Pour restaurer les données de stockage d'objets :
Exécutez la commande suivante :
sudo gitlab-backup restore <backup_id>
Le processus de restauration :
Surveillez toujours les ressources de votre système lors d'une restauration. Conservez vos fichiers originaux jusqu'à ce que vous ayez vérifié que la restauration a réussi.
Lorsque vous travaillez avec gitlab-backup-cli, vous pouvez rencontrer les problèmes suivants.
Si vous utilisez l'outil gitlab-backup-cli sur des architectures autres que l'architecture 1K, vous pourriez rencontrer des problèmes. Cet outil n'est pris en charge que sur l'architecture 1K et est recommandé uniquement pour les environnements concernés.
Les modifications apportées aux fichiers existants pendant la sauvegarde peuvent entraîner des problèmes sur l'instance GitLab. Ce problème survient parce que la version initiale de l'outil n'utilise pas la stratégie de copie.
Une solution de contournement de ce problème consiste à :
Nous étudions une alternative à la stratégie de copie, consultez le ticket 428520.
Secrets et configurations
Données transitoires et données de cache
Au lieu d'utiliser les mêmes informations d'identification, vous devez créer un compte utilisateur distinct avec uniquement les autorisations nécessaires à l'exécution des sauvegardes. Exécuter des sauvegardes avec les mêmes informations d'identification que l'application est une mauvaise pratique de sécurité pour plusieurs raisons :