doc-locale/fr-fr/administration/backup_restore/backup_archive_process.md
Lorsque vous exécutez la commande de sauvegarde, un script de sauvegarde crée un fichier d'archive de sauvegarde pour stocker vos données GitLab.
Pour créer le fichier d'archive, le script de sauvegarde :
tar.Pour sauvegarder la base de données, la sous-tâche db :
pg_dump pour créer un dump SQL.pg_dump à travers gzip et crée un fichier SQL compressé.Pour sauvegarder les dépôts Git, la sous-tâche repositories :
Informe gitaly-backup des dépôts à sauvegarder.
Exécute gitaly-backup pour :
Transmet les données collectées dans une structure de répertoires dans le répertoire de transit de sauvegarde.
Le diagramme suivant illustre le processus :
%%{init: { "fontFamily": "GitLab Sans" }}%%
sequenceDiagram
accTitle: Git repository backup workflow
accDescr: Sequence diagram showing the repositories sub-task calling gitaly-backup with a list of repositories. For each repository, gitaly-backup uses RPCs to collect refs, create a bundle, and retrieve custom hooks. It then returns success or failure.
box Backup host
participant Repositories sub-task
participant gitaly-backup
end
Repositories sub-task->>+gitaly-backup: List of repositories
loop Each repository
gitaly-backup->>+Gitaly: ListRefs request
Gitaly->>-gitaly-backup: List of Git references
gitaly-backup->>+Gitaly: CreateBundleFromRefList request
Gitaly->>-gitaly-backup: Git bundle file
gitaly-backup->>+Gitaly: GetCustomHooks request
Gitaly->>-gitaly-backup: Custom hooks archive
end
gitaly-backup->>-Repositories sub-task: Success/failure
Les stockages configurés de Gitaly Cluster (Praefect) sont sauvegardés de la même manière que les instances Gitaly autonomes.
gitaly-backup, il reconstruit sa propre base de données.
Les sauvegardes de dépôts côté serveur constituent un moyen efficace de sauvegarder les dépôts Git. Les avantages de cette méthode sont :
Pour sauvegarder Gitaly côté serveur, la sous-tâche repositories :
gitaly-backup pour effectuer un seul appel RPC pour chaque dépôt.Le diagramme suivant illustre le processus :
%%{init: { "fontFamily": "GitLab Sans" }}%%
sequenceDiagram
accTitle: Server-side repository backup workflow
accDescr: Sequence diagram showing server-side backups where the repositories sub-task calls gitaly-backup, which issues a BackupRepository request for each repository. Gitaly uploads files directly to object storage, then reports success or failure for that repository.
box Backup host
participant Repositories sub-task
participant gitaly-backup
end
Repositories sub-task->>+gitaly-backup: List of repositories
loop Each repository
gitaly-backup->>+Gitaly: BackupRepository request
Gitaly->>+Object-storage: Git references file
Object-storage->>-Gitaly: Success/failure
Gitaly->>+Object-storage: Git bundle file
Object-storage->>-Gitaly: Success/failure
Gitaly->>+Object-storage: Custom hooks archive
Object-storage->>-Gitaly: Success/failure
Gitaly->>+Object-storage: Backup manifest file
Object-storage->>-Gitaly: Success/failure
Gitaly->>-gitaly-backup: Success/failure
end
gitaly-backup->>-Repositories sub-task: Success/failure
Les sous-tâches suivantes sauvegardent des fichiers :
uploads : Pièces jointesbuilds : Journaux de sortie des jobs CI/CDartifacts : Artefacts de job CI/CDpages : Contenu de pagelfs : Objets LFSterraform_state : États Terraformregistry : Images du registre de conteneurspackages : Paquetsci_secure_files : Fichiers sécurisés au niveau du projetexternal_diffs : Diffs de merge request (lorsqu'ils sont stockés en externe)Chaque sous-tâche identifie un ensemble de fichiers dans un répertoire spécifique à la tâche et :
tar.gzip sans enregistrement sur le disque.tar dans le répertoire de transit de sauvegarde.Les sauvegardes étant créées à partir d'instances en cours d'exécution, des fichiers peuvent être modifiés pendant le processus de sauvegarde. Dans ce cas, une stratégie alternative peut être utilisée pour sauvegarder les fichiers. L'utilitaire rsync crée une copie des fichiers à sauvegarder et les transmet à tar pour l'archivage.
[!note] Si vous utilisez cette stratégie, la machine exécutant la tâche Rake de sauvegarde doit disposer d'un espace de stockage suffisant pour les fichiers copiés et l'archive compressée.
Les ID de sauvegarde sont des identifiants uniques pour les archives de sauvegarde. Ces ID sont essentiels lorsque vous devez restaurer GitLab et que plusieurs archives de sauvegarde sont disponibles.
Les archives de sauvegarde sont enregistrées dans un répertoire spécifié par le paramètre backup_path dans le fichier config/gitlab.yml. L'emplacement par défaut est /var/opt/gitlab/backups.
L'ID de sauvegarde est composé de :
YYYY_MM_DD)Voici un exemple d'ID de sauvegarde : 1493107454_2018_04_25_10.6.4-ce
Par défaut, le nom de fichier suit la structure <backup-id>_gitlab_backup.tar. Par exemple, 1493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar.
Le fichier d'informations de sauvegarde, backup_information.yml, enregistre toutes les entrées de sauvegarde qui ne sont pas incluses dans la sauvegarde. Le fichier est enregistré dans le répertoire de transit de sauvegarde. Les sous-tâches utilisent ce fichier pour déterminer comment restaurer et lier les données de la sauvegarde avec des services externes tels que les sauvegardes de dépôts côté serveur.
Le fichier d'informations de sauvegarde comprend les éléments suivants :
Le répertoire de transit de sauvegarde est un emplacement de stockage temporaire utilisé pendant les processus de sauvegarde et de restauration. Ce répertoire :
Le répertoire de transit de sauvegarde est le même répertoire où les archives de sauvegarde terminées sont créées. Lors de la création d'une sauvegarde non archivée (untarred), les artefacts de sauvegarde restent dans ce répertoire et aucune archive n'est créée.
Voici un exemple de répertoire de transit de sauvegarde contenant une sauvegarde non archivée (untarred) :
backups/
├── 1701728344_2023_12_04_16.7.0-pre_gitlab_backup.tar
├── 1701728447_2023_12_04_16.7.0-pre_gitlab_backup.tar
├── artifacts.tar.gz
├── backup_information.yml
├── 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
├── repositories
│ ├── manifests/
│ ├── @hashed/
│ └── @snippets/
├── terraform_state.tar.gz
└── uploads.tar.gz