Lorsque vous importez et exportez des données dans AlloyDB pour PostgreSQL, tenez compte des bonnes pratiques suivantes :
- N'utilisez pas les buckets Cloud Storage Paiements du demandeur pour les importations ou les exportations.
- Utiliser les indicateurs appropriés lors de la création d'un fichier de dump SQL
- Compressez les données afin de réduire les coûts.
- Réduisez les processus d'importation et d'exportation de longue durée en traitant les données par lots.
- Vérifiez la base de données importée après l'importation.
Ne pas utiliser les buckets "Paiements" du demandeur Cloud Storage
Vous ne pouvez pas utiliser de buckets Cloud Storage pour lesquels les paiements du demandeur sont activés pour réaliser des importations vers ou des exportations depuis AlloyDB. AlloyDB utilise un compte de service géré par Google, l'agent de service, pour effectuer les importations et les exportations. Cet agent ne dispose généralement pas du contexte ni de la configuration nécessaires pour facturer l'accès aux données au projet du demandeur, ce qui entraîne l'échec des opérations impliquant des buckets Requester Pays.
Utiliser les indicateurs appropriés lors de la création d'un fichier de vidage SQL
Si vous n'utilisez pas les indicateurs et les options appropriés lorsque vous exportez des données vers un fichier de vidage SQL, l'importation peut échouer. Pour savoir comment exporter des données à importer dans AlloyDB, consultez Exporter un fichier DMP et Exporter un fichier SQL.
Compresser les données afin de réduire les coûts
AlloyDB permet d'importer et d'exporter des fichiers .gz compressés depuis Cloud Storage. Grâce à la compression, vous pouvez économiser un espace de stockage considérable sur Cloud Storage et réduire les coûts de stockage, en particulier lorsque vous exportez de grandes quantités de données. Lorsque vous exportez un fichier de vidage SQL ou CSV à l'aide de l'API AlloyDB, utilisez l'extension de fichier .gz dans l'URI de destination pour compresser les données. Lorsque vous importez un fichier avec une extension .gz, il est automatiquement décompressé.
Réduire les processus d'importation et d'exportation de longue durée
Selon la taille de vos données, les importations dans AlloyDB et les exportations à partir d'AlloyDB peuvent prendre beaucoup de temps. Si une opération prend trop de temps, elle peut bloquer d'autres opérations.
Réduisez le temps nécessaire à l'exécution de chaque opération en utilisant des lots de données plus petits. Vous pouvez également utiliser l'outil pg_dump pour effectuer une exportation manuelle à partir d'un client connecté à une instance de pool de lecture.
Vérifier la base de données importée
Une fois l'importation terminée, connectez-vous à votre base de données à l'aide de psql ou d'un autre client, puis exécutez les commandes appropriées pour vous assurer que le contenu est correct (par exemple, en listant les tables ou en interrogeant le nombre de lignes).
Automatiser les opérations d'exportation
Bien qu'AlloyDB ne dispose pas d'une méthode intégrée pour automatiser les exportations, vous pouvez créer un outil d'automatisation à l'aide d'autres composantsGoogle Cloud tels que Cloud Scheduler, Pub/Sub et les fonctions Cloud Run.
Dépannage
Cette section fournit des suggestions pour résoudre les problèmes que vous pouvez rencontrer avec les opérations d'importation et d'exportation.
Opérations d'importation
| Problème | Description | Correction recommandée |
|---|---|---|
ERROR: permission denied for schema public |
Pour PostgreSQL 15 et versions ultérieures, l'importation des données peut échouer en raison des autorisations de schéma si vous créez la base de données cible à partir de template0. |
Pour résoudre ce problème, utilisez la commande suivante afin d'accorder des droits sur le schéma
GRANT ALL ON SCHEMA public TO my_import_user;
|
| L'opération d'importation prend trop de temps. | Un trop grand nombre de connexions actives peut interférer avec les opérations d'importation. |
Essayez les approches suivantes :
|
| Une opération d'importation échoue, car un ou plusieurs utilisateurs référencés dans le fichier de vidage n'existent pas. | Avant d'importer un fichier de vidage, tous les utilisateurs de la base de données qui possèdent des objets ou disposent d'autorisations sur les objets qu'elle contient doivent exister dans la base de données cible. Si ce n'est pas le cas, l'opération d'importation ne parvient pas à recréer les objets en rétablissant les propriétaires ou les autorisations d'origine. | Créez les utilisateurs de base de données requis avant d'importer. |
GRANT stderr: ERROR: must be member of role ROLE_NAME
|
Cette erreur peut se produire si vous importez un fichier de vidage SQL contenant des objets appartenant à ROLE_NAME ou des autorisations accordées à ROLE_NAME, mais que l'utilisateur de la base de données qui effectue l'importation n'est pas membre de ROLE_NAME. |
Pour résoudre ce problème, assurez-vous que le rôle ROLE_NAME existe dans la base de données de destination et accordez l'appartenance à ROLE_NAME à l'utilisateur qui effectue l'importation avant d'exécuter l'importation. |
Opérations d'exportation
| Problème | Description | Correction recommandée |
|---|---|---|
HTTP Error 403: The service account does not have the required
permissions for the bucket. |
Le compte de service AlloyDB ne dispose pas des autorisations requises pour le bucket de destination. | Assurez-vous que le bucket Cloud Storage de destination existe et que les rôles roles/storage.objectAdmin ou roles/storage.objectCreator ont été accordés au compte de service AlloyDB. Ces rôles lui permettent d'écrire dans le bucket. Consultez Rôles Identity and Access Management (IAM) pour Cloud Storage.
|
| L'exportation au format CSV a fonctionné, mais pas l'exportation au format SQL. | Les formats CSV et SQL sont exportés de manière différente. Le format SQL exporte le schéma et les données de la base de données, et prend généralement plus de temps. Le format CSV n'exporte que les données résultant d'une requête SELECT que vous fournissez. |
Si une exportation SQL échoue ou est trop lente, envisagez d'exporter des tables individuelles au format CSV. |
| L'exportation prend trop de temps. | Si une exportation prend trop de temps sur votre instance principale, c'est peut-être parce qu'elle est trop volumineuse. | Pensez à exporter les données par petits lots. Par exemple, exportez les tables individuellement plutôt que d'exporter une base de données entière en une seule opération. Vous pouvez également utiliser l'outil pg_dump pour effectuer une exportation manuelle à partir d'un client connecté à une instance de pool de lecture.
|
Une erreur Create Extension dans le journal pg_restore ou l'importation échoue. |
Le fichier de vidage contient des références à une extension PostgreSQL qu'AlloyDB ne prend pas en charge ou qui n'est pas installée sur votre cluster. | Pour supprimer les références, modifiez le fichier de vidage ou installez l'extension sur votre cluster si AlloyDB la prend en charge. |
Erreur lors de l'utilisation de pg_dumpall. |
L'utilitaire pg_dumpall avec des indicateurs tels que --globals-only peut nécessiter des droits d'accès non disponibles dans AlloyDB. |
Pour exporter des objets globaux tels que des utilisateurs et des rôles sans mot de passe, utilisez la commande suivante pour inclure le flag
pg_dumpall --globals-only --no-role-passwords
|
L'opération d'exportation expire ou le message Connection reset by peer s'affiche. |
Si Cloud Storage ne reçoit aucune donnée dans un certain délai, la connexion peut être réinitialisée. Cela peut se produire si l'exécution des requêtes de base de données initiales requises pour l'exportation prend trop de temps. | Si cela se produit, essayez d'effectuer une exportation manuelle à l'aide de l'outil pg_dump à partir d'un client connecté à une instance de pool de lecture. |
Problèmes courants
| Problème | Description | Correction recommandée |
|---|---|---|
HTTP Error 409: Operation failed because another operation was
already in progress. |
Le système n'autorise qu'une seule opération d'importation ou d'exportation basée sur une API à la fois. | Envoyez votre requête une fois l'opération en cours terminée. |
Étapes suivantes
- Importer des données à l'aide de fichiers de vidage
- Exporter des données à l'aide de fichiers de vidage
- Importez des données à l'aide de fichiers CSV.
- Exporter des données à l'aide de fichiers CSV
- Importez des données à l'aide de fichiers SQL.
- Exporter des données à l'aide de fichiers SQL
- Activez les sauvegardes automatiques.
- Restaurez à partir d'une sauvegarde.