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
etdirectory
sont autorisés si le fichier de vidage est destiné à être utilisé avecpg_restore
.Pour le format
plain-text
, exportez plutôt les données vers unSQL dump file
. Ce format n'est pas compatible avecpg_restore
et doit être importé à l'aide de la commande d'importation de la console Google Cloud ou du clientpsql
.--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 instructionDROP
générée par l'optionclean
.
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
ouDROP 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
- Apprenez à vérifier l'état des opérations d'importation et d'exportation.
- Découvrez les bonnes pratiques pour l'importation et l'exportation de données.
- Apprenez-en plus sur l'utilitaire PostgreSQL pg_dump.
- Consultez les problèmes connus concernant les importations et les exportations.