Exporter et importer à l'aide de pg_dump, pg_dumpall et pg_restore

Cette page décrit comment exporter et importer des données dans des instances Cloud SQL à l'aide des utilitaires pg_dump, pg_dumpall et pg_restore.

Avant de commencer

Les exportations utilisent des ressources de base de données, mais elles n'interfèrent pas avec les opérations de base de données normales, sauf si l'instance est sous-provisionnée.

Pour obtenir des conseils, consultez la page Bonnes pratiques pour l'importation et l'exportation de données.

Une fois l'opération d'importation terminée, vérifiez les résultats.

Apprenez-en plus sur les utilitaires pg_dump, pg_dumpall et pg_restore.

Exporter des données depuis Cloud SQL pour PostgreSQL

Vous pouvez utiliser Cloud SQL pour effectuer une exportation depuis la console Google Cloud, gcloud CLI ou l'API.

  • Pour exporter une seule base de données PostgreSQL, utilisez l'utilitaire pg_dump.
  • Pour exporter toutes les bases de données PostgreSQL d'un cluster, utilisez l'utilitaire pg_dumpall.

Lorsque vous utilisez l'un ou l'autre de ces utilitaires, veillez également à utiliser les options requises pour vous assurer que le fichier d'exportation obtenu est valide pour être réimporté dans Cloud SQL.

Exporter des données à partir d'un serveur PostgreSQL sur site à l'aide de pg_dump

Pour exporter une base de données non gérée par Cloud SQL, en vue de son importation ultérieure dans Cloud SQL, utilisez l'utilitaire pg_dump avec les options suivantes :

  • --no-owner

    Les commandes de changement de propriété ne doivent pas être incluses dans le fichier de vidage.

  • --format

    Les formats custom et directory sont autorisés si le fichier de vidage est destiné à être utilisé avec pg_restore.

    Pour le format plain-text, exportez plutôt les données vers un SQL dump file. Ce format n'est pas compatible avec pg_restore et doit être importé à l'aide de la commande d'importation de la console Google Cloud ou du client psql.

  • --no-acl

    Cette option est requise si votre fichier de vidage contient des instructions permettant d'accorder ou de révoquer l'adhésion à un rôle SUPERUSER.

  • --clean

    Cette option facultative vous permet d'inclure l'instruction SQL DROP <object> requise pour supprimer (nettoyer) les objets de base de données avant de les importer.

  • --if-exists

    Cette option facultative vous permet d'inclure l'instruction SQL IF EXISTS avec chaque instruction DROP générée par l'option clean.

En outre, vous devez supprimer tous les éléments suivants :

  • Les instructions liées aux extensions, en cas d'incompatibilité avec Cloud SQL. Reportez-vous à la section Extensions PostgreSQL pour connaître la liste des extensions compatibles.
  • Les instructions CREATE EXTENSION ou DROP EXTENSION faisant référence à plpgsql. Cette extension est préinstallée sur les instances Cloud SQL Postgres.
  • COMMENT ON EXTENSION.

Vérifiez que l'encodage par défaut, tel que déterminé par les paramètres de la base de données, est correct pour vos données. Si nécessaire, vous pouvez remplacer les valeurs par défaut par l'option --encoding.

Exporter des données au format custom à partir de Cloud SQL pour PostgreSQL

Pour utiliser le format personnalisé, exécutez pg_dump à partir d'une ligne de commande :

pg_dump \
-U USERNAME \
--format=custom \
--no-owner \
--no-acl \
DATABASE_NAME > DATABASE_NAME.dmp

Exporter des données depuis plusieurs fichiers en parallèle depuis Cloud SQL pour PostgreSQL

Vous ne pouvez utiliser le format de sortie directory que pour exporter des données à partir de plusieurs fichiers en parallèle.

Pour spécifier une exportation en parallèle, utilisez l'option -j NUM_CORES. NUM_CORES est le nombre de cœurs sur l'instance source.

Exporter toutes les bases de données

pg_dumpall est un utilitaire qui vous permet d'extraire toutes les bases de données PostgreSQL d'un cluster dans un seul fichier de script. Ce fichier contient des commandes SQL que vous pouvez utiliser pour restaurer les bases de données.

Pour exporter toutes les bases de données PostgreSQL dans une instance Cloud SQL, utilisez l'utilitaire pg_dumpall avec les options obligatoires suivantes :

  • exclude-database=cloudsqladmin
  • exclude-database=template*

L'utilitaire pg_dumpall n'a pas accès aux bases de données cloudsqladmin ou template.

Pour exporter toutes les bases de données PostgreSQL, exécutez la commande suivante :

pg_dumpall \
-h HOST_NAME -l DATABASE_NAME –exclude-database=cloudsqladmin \
–exclude-database=template* > pg_dumpall.sql

Pour afficher les mots de passe de rôle lors du vidage de rôles avec pg_dumpall, définissez l'option cloudsql.pg_authid_select_role sur un nom de rôle PostgreSQL. Si le rôle existe, il dispose d'un accès en lecture seule (SELECT) à la table pg_authid. Ce tableau contient les mots de passe des rôles.

Importer

Utilisez l'utilitaire pg_restore pour importer une archive dans une base de données Cloud SQL. pg_restore ne fonctionne qu'avec les archives créées par pg_dump aux formats custom ou directory. En savoir plus sur pg_restore.

Importer un fichier de vidage créé au format custom dans Cloud SQL pour PostgreSQL

Si le fichier de vidage a été créé avec un format personnalisé, exécutez la commande suivante :

pg_restore \
--list DATABASE_NAME.dmp | sed -E 's/(.* EXTENSION )/; \1/g' >  DATABASE_NAME.toc

Le post-traitement de sed met en commentaire toutes les instructions d'extension dans le fichier de vidage SQL.

Lors de l'importation à l'aide de pg_restore, spécifiez la table de contenu traitée avec l'argument de ligne de commande "--use-list=DATABASE_NAME.toc".

Importer des données à partir de plusieurs fichiers en parallèle avec Cloud SQL pour PostgreSQL

Vous ne pouvez importer des données de plusieurs fichiers en parallèle que pour les archives créées à l'aide des formats de sortie directory et custom.

Pour importer en parallèle, utilisez l'indicateur -j NUM_CORES. NUM_CORES est le nombre de cœurs sur l'instance de destination.

Performances des importations sur Cloud SQL pour PostgreSQL

Étape suivante