Aller au contenu principal

Postgres pg_dump & pg_restore

Ce sujet décrit comment créer une sauvegarde de votre base de données Lakebase à l'aide de l'utilitaire Postgres pg_dump et comment restaurer une sauvegarde à l'aide de pg_restore.

Quand utiliser pg_dump & pg_restore

Utilisez pg_dump et pg_restore pour les exigences de reprise après sinistre et de continuité des activités, ou lorsque vous devez stocker des sauvegardes complètes en dehors de Lakebase. Cette méthode fournit des exportations complètes de bases de données qui peuvent être stockées indépendamment et restaurées sur n’importe quel système compatible Postgres.

Prérequis

Avant de commencer, assurez-vous que :

  • pg_dump et pg_restore sont installés. Vous pouvez vérifier en exécutant pg_dump -V.
  • Vous utilisez les dernières versions de pg_dump et pg_restore.
  • La version client correspond à la version Postgres de votre projet Lakebase.
  • Un projet Lakebase avec un rôle Postgres configuré
remarque

Nous recommandons d'utiliser l' authentification native par mot de passe Postgres lors de l'utilisation de pg_dump et pg_restore. Les mots de passe Postgres natifs n'expirent pas toutes les heures comme les jetons OAuth, ce qui les rend mieux adaptés aux opérations de sauvegarde et de restauration. Consultez la présentation de l'authentification pour plus de détails sur les méthodes d'authentification.

Installer pg_dump et pg_restore

Si vous n'avez pas les utilitaires pg_dump et pg_restore installés localement, installez-les sur votre plateforme préférée.

Windows : Installez PostgreSQL à l'aide de l'installeur officiel de postgresql.org. Les utilitaires pg_dump et pg_restore sont installés par défaut et se trouvent dans le répertoire bin de PostgreSQL.

**macOS** : Installer PostgreSQL à l'aide de Homebrew :

Bash
brew install postgresql

Linux (Ubuntu/Debian) :

Bash
sudo apt-get install postgresql-client

**Docker :** Exécutez pg_dump à l’aide d’un conteneur Docker Postgres :

Bash
docker run --rm postgres:17 pg_dump --version

Créer une sauvegarde avec pg_dump

Pour créer une sauvegarde de base de données localement :

  1. Accédez à l'application Lakebase en cliquant sur le sélecteur d'applications dans le coin supérieur droit de votre Workspace.

  2. Sélectionnez votre projet.

  3. Cliquez sur Connecter pour ouvrir la fenêtre modale de connexion à la base de données.

  4. Sélectionnez un rôle Postgres dans la liste déroulante (nous vous recommandons d'utiliser un rôle Postgres natif avec authentification par mot de passe).

  5. Copiez la chaîne de connexion.

    Votre chaîne de connexion ressemble à ceci :

    postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require
  6. Créez une sauvegarde de votre base de données Lakebase en exécutant la commande pg_dump suivante :

    Bash
    pg_dump -Fc -v -d "<lakebase_database_connection_string>" -f <dump_file_name>

    Après avoir ajouté votre chaîne de connexion de base de données Lakebase et un nom de fichier de vidage, votre commande ressemble à ceci :

    Bash
    pg_dump -Fc -v -d "postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require" -f mydatabase.bak

arguments de la commande pg_dump

La commande pg_dump inclut les arguments suivants :

  • -Fc: Envoie la sortie vers une archive au format personnalisé, adaptée à l'entrée dans pg_restore.
  • -v: Exécute pg_dump en mode détaillé, vous permettant de surveiller ce qui se passe pendant l'opération de vidage.
  • -d: Spécifie la chaîne de connexion de votre base de données Lakebase.
  • -f <dump_file_name>: Le nom du fichier de vidage. Vous pouvez choisir n'importe quel nom (par exemple, mydumpfile.bak).

Restaurer une sauvegarde avec pg_restore

Pour restaurer une base de données à l'aide de l'utilitaire pg_restore à partir d'un fichier de sauvegarde créé à l'aide de pg_dump:

  1. Créer un nouveau projet Lakebase.

  2. Créez une base de données avec le même nom que celle que vous avez sauvegardée.

  3. Accédez à l'application Lakebase en cliquant sur le sélecteur d'applications dans le coin supérieur droit de votre Workspace.

  4. Sélectionnez votre projet et cliquez sur Connecter pour ouvrir la fenêtre modale de connexion à la base de données.

  5. Sélectionnez un rôle Postgres dans la liste déroulante (nous vous recommandons d'utiliser un rôle Postgres natif avec authentification par mot de passe).

  6. Copiez la chaîne de connexion.

    Votre chaîne de connexion ressemble à ceci :

    postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require
  7. Restaurez vos données dans la base de données cible dans Lakebase avec pg_restore:

    Bash
    pg_restore -v -d "<lakebase_database_connection_string>" <dump_file_name>

    Après avoir ajouté votre chaîne de connexion de base de données Lakebase et le nom du fichier de vidage, votre commande ressemble à ceci :

    Bash
    pg_restore -v -d "postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require" mydatabase.bak

Arguments de commande pg_restore

La commande pg_restore inclut les arguments suivants :

  • -v: Exécute pg_restore en mode détaillé, ce qui vous permet de surveiller ce qui se passe pendant l'opération de restauration.
  • -d: Spécifie la base de données Lakebase à laquelle se connecter. La valeur est une chaîne de connexion de base de données Lakebase.
  • <dump_file_name>: Le nom du fichier de dump que vous avez créé avec pg_dump.

Exemple complet

L'exemple suivant montre comment les données sont vidées d'une base de données source nommée databricks_postgres dans un projet Lakebase et restaurées vers une base de données databricks_postgres dans un autre projet Lakebase.

Avant d’effectuer cette procédure :

  • Un nouveau projet Lakebase a été créé pour la base de données de destination (qui inclut la base de données databricks_postgres default)
  • Les chaînes de connexion pour les bases de données source et de destination ont été collectées :
    • Source : postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require
    • Destination : postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require

Procédure de sauvegarde et de restauration :

Bash
# Create a directory for the dump
mkdir mydump && cd mydump

# Create the backup
pg_dump -Fc -v -d "postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require" -f mydatabase.bak

# Verify the backup file was created
ls
mydatabase.bak

# Restore the backup to the destination database
pg_restore -v -d "postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require" mydatabase.bak