Sauvegarde et restauration

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 de l’utilisateur, stockées dans le stockage d’objets S3, sont accessibles grâce aux métadonnées stockées dans la base de données PostgreSQL. Les métadonnées contiennent des références à des blocs de fichiers stockés dans le stockage d’objets.

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

  • La base de données SQL est à jour, mais certains objets manquent dans le stockage d’objets S3 : cela signifie que certains fichiers répertoriés dans les métadonnées peuvent manquer d’objets. Parsec considérera qu’il s’agit d’une corruption de fichier (uniquement pour les fichiers avec des objets manquants). Les fichiers concernés seront toujours affichés dans l’application, mais ils ne pourront pas être téléchargés ou ouverts.

  • La base de données SQL n’est pas à jour, mais tous les objets sont présents : cela signifie que certains objets ne sont référencés par aucun fichier. Les objets non référencés sont considérés comme orphelins et seront donc ignorés par Parsec. Tous les fichiers affichés sur l’application restent accessibles.

  • La base de données SQL n’est pas à jour et certains objets ne sont pas référencés : Dans ce scénario, les effets des deux points précédents sont cumulatifs.

Il convient de noter qu’aucun bloc n’est supprimé ou modifié du stockage d’objets, même dans le cas de la suppression d’un fichier ou d’un dossier à des fins historiques.

Important

Pour maintenir la cohérence des données entre les bases, il est donc nécessaire de sauvegarder la base de données SQL avant de sauvegarder la base de données objet, car les objets en trop n’ont pas de conséquences. La date de sauvegarde à considérer est celle de la base de données SQL.

En conclusion, il n’est pas nécessaire de garantir une cohérence exacte entre les bases de données, puisque la base de données SQL est la source faisant autorité, mais il est seulement nécessaire que la sauvegarde de la base de données SQL soit antérieure à la sauvegarde de la base de données objet.

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 en utilisant 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

Remplacement :

  • $USER: votre nom d’utilisateur PostgreSQL

  • $HOST : l’adresse de l’hôte de la base de données (utilisez localhost si la base de données est sur votre ordinateur)

  • $PORT : le port sur lequel PostgreSQL écoute (par défaut, c’est généralement le port 5432)

  • $DATABASE_NAME : le 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 ci-dessus crée un fichier backup.sql qui contient toutes les données et la structure de la base de données SQL.

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éation d’une base de données (si nécessaire)

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

Remplacement :

  • $USER: votre nom d’utilisateur PostgreSQL

  • $HOST : l’adresse de l’hôte de la base de données (utilisez localhost si la base de données est sur votre ordinateur)

  • $PORT : le port sur lequel PostgreSQL écoute (par défaut, c’est généralement le port 5432)

  • $DATABASE_NAME : le nom de la base de données

Restauration de la base de données

Si la base de données cible existe, vous pouvez restaurer la base de données avec le fichier de sauvegarde avec une seule commande en fonction du format de la sauvegarde : utilisez psql pour les fichiers SQL ou pg_restore pour les fichiers binaires.

Pour un fichier SQL, comme décrit dans la section précédente, utilisez :

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

Pour un fichier binaire (si vous avez utilisé pg_dump avec l’option -Fc), utilisez :

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

Stockage d’objets (S3)

Cette section traite de la sauvegarde et de la restauration du stockage d’objets S3 dans AWS.

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ù:

  • s`3://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 la commande 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
  • s`3://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.