Sauvegarde et restauration

Cette section explique comment gérer les sauvegardes de la base de données PostgreSQL et du Stockage Objets.

Important

Cette section suppose que vous avez déployé Parsec en suivant les instructions de la section déploiement du serveur. Si vous avez déployé Parsec différemment, vous devrez peut-être adapter cette section à votre déploiement personnalisé.

Notes sur la cohérence de données

Les données auxquelles l’utilisateur a accès dépendent en premier lieu des métadonnées stockées dans la base de données PostgreSQL, puis du stockage objet. En effet, les métadonnées contiennent des références aux blocs de fichiers stockés dans le Stockage Objets.

Pendant la sauvegarde et la restauration, les situations suivantes peuvent se produire :

  • La base de données PostgreSQL est à jour, mais certains objets référencés sont manquants dans le Stockage Objets : Parsec considérera les fichiers comportant des objets manquants comme corrompus. Ces fichiers devraient rester visibles pour l’utilisateur, mais ils ne peuvent être ni téléchargés ni ouverts.

  • La base de données PostgreSQL n’est pas à jour, et le Stockage Objets contient certains objets qui ne sont référencés par aucun fichier : les objets qui ne sont référencés par aucun fichier sont considérés comme « orphelins » et seront donc ignorés par Parsec. Tous les fichiers affichés dans Parsec devraient toutefois rester accessibles.

  • La base de données PostgreSQL n’est pas à jour et certains objets ne sont pas référencés : dans ce cas, les effets des deux points précédents se cumulent.

Il convient de noter qu’aucun bloc n’est supprimé ni modifié dans le Stockage Objets, même en cas de suppression d’un fichier ou d’un dossier à des fins d’archivage.

Important

Pour garantir la cohérence des données entre les bases de données, vous devez sauvegarder la base de données PostgreSQL *avant* de sauvegarder le Stockage Objets, car la présence d’objets en trop n’aura aucune conséquence. La date de sauvegarde à prendre en compte est celle de la base de données PostgreSQL.

En conclusion, il n’est pas nécessaire de garantir une cohérence parfaite entre les bases de données, puisque la base de données PostgreSQL fait office de source de référence ; il suffit simplement que la sauvegarde de la base de données PostgreSQL soit plus ancienne (antérieure) que la sauvegarde du Stockage Objets.

Base de données PostgreSQL

Avant de commencer, assurez-vous que vous disposez des autorisations nécessaires pour effectuer ces opérations et que le service PostgreSQL est en cours d’exécution. Si vous rencontrez des erreurs, vérifiez les messages d’erreur pour savoir ce qui ne va pas.

Sauvegarde de la base de données

Vous pouvez créer un fichier de sauvegarde de la base de données à l’aide de la commande pg_dump.

Ouvrez un terminal ou une invite de commande et exécutez la commande suivante :

pg_dump -U $USER -h $HOST -p $PORT "$DATABASE_NAME" > backup.sql

$USER correspond à votre nom d’utilisateur PostgreSQL, $HOST à l’adresse de la base de données (utilisez « localhost » si la base de données se trouve sur votre ordinateur), $PORT au port sur lequel PostgreSQL écoute (généralement « 5432 ») et $DATABASE_NAME au nom de la base de données.

Si votre base de données a un mot de passe, vous serez invité à le saisir.

La commande précédente créera un fichier « backup.sql » contenant la structure de la base de données PostgreSQL ainsi que toutes ses données.

Restauration de la base de données

Pour restaurer la base de données à partir du fichier de sauvegarde, vous devez d’abord vous assurer que la base de données cible existe. Si ce n’est pas le cas, créez-la avec PostgreSQL.

Créez la base de données (si nécessaire)

Pour créer la base de données, exécutez la commande suivante :

createdb -U $USER -h $HOST -p $PORT "$DATABASE_NAME"

$USER correspond à votre nom d’utilisateur PostgreSQL, $HOST à l’adresse de la base de données (utilisez « localhost » si la base de données se trouve sur votre ordinateur), $PORT au port sur lequel PostgreSQL écoute (généralement « 5432 ») et $DATABASE_NAME au nom de la base de données.

Après vous être assuré que la base de données existe, vous pouvez la restaurer à l’aide du fichier « backup.sql » en une seule commande, selon le format de la sauvegarde.

Pour un fichier SQL, utilisez psql :

psql -U $USER -h $HOST -p $PORT -d "$DATABASE_NAME" < backup.sql

Pour un fichier binaire (si vous avez utilisé pg_dump -Fc), utilisez pg_restore :

pg_restore -U $USER -h $HOST -p $PORT -d "$DATABASE_NAME" -1 backup.bin

$USER correspond à votre nom d’utilisateur PostgreSQL, $HOST à l’adresse de la base de données (utilisez « localhost » si la base de données se trouve sur votre ordinateur), $PORT au port sur lequel PostgreSQL écoute (généralement « 5432 ») et $DATABASE_NAME au nom de la base de données.

Stockage Objets (S3)

Cette section traite de la sauvegarde et de la restauration dans le stockage objet AWS S3.

Avant de commencer, assurez-vous que votre compte AWS dispose des autorisations nécessaires pour accéder au seau S3 et effectuer ces opérations.

Sauvegarde du bucket

Utilisez aws pour gérer les buckets compatibles avec le service S3 d’Amazon.

Synchroniser le bucket S3 avec un répertoire local :

aws s3 sync s3://bucket_name /path/local/backup

Où:

  • s3://nom_du_bucket est le chemin vers le bucket S3

  • /path/local/backup est le chemin vers le répertoire local où vous voulez stocker la sauvegarde

Cette commande permet de télécharger tous les fichiers du bucket « bucket_name » dans le répertoire local spécifié.

Restauration du bucket

Restaurer tous les objets dans un bucket S3

Pour restaurer des données à partir d’une sauvegarde, utilisez aws s3 sync dans la direction opposée, c’est-à-dire du répertoire local vers le bucket S3.

aws s3 sync /path/local/backup s3://bucket_name
  • s3://nom_du_bucket est le chemin vers le bucket S3

  • /path/local/backup est le chemin vers le répertoire local où vous avez stocké la sauvegarde.

Cette commande enverra tous les fichiers du répertoire local spécifié dans le bucket « bucket_name ».

Astuce

Sauvegarde incrémentale : aws s3 sync est suffisamment intelligent pour ne copier que les fichiers qui ont été modifiés. Cela rend les sauvegardes suivantes plus rapides après la première sauvegarde complète.