Pour optimiser les performances, réduire les coûts de stockage et éviter les interruptions opérationnelles lorsque vous déplacez des données vers ou depuis AlloyDB pour PostgreSQL, suivez ces bonnes pratiques :
- N'utilisez pas de buckets Cloud Storage pour lesquels les paiements du demandeur sont activés pour réaliser des importations ou des exportations.
- Utiliser les indicateurs appropriés lors de la création d'un fichier de dump SQL
- Compresser 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 bucket Cloud Storage pour lequel les paiements du demandeur sont activés pour réaliser des importations ou des exportations depuis AlloyDB. AlloyDB utilise un compte de service géré par Google, l'agent de service, pour effectuer des importations et des 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 avec paiements du demandeur.
Utiliser les indicateurs appropriés lors de la création d'un fichier de dump SQL
Si vous n'utilisez pas les options et les indicateurs appropriés lorsque vous exportez des données vers un fichier de dump SQL, l'importation risque d'échouer. Pour en savoir plus sur l'exportation de 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 est compatible avec l'importation et l'exportation de fichiers .gz compressés depuis Cloud Storage. La compression peut vous permettre d'économiser un espace de stockage important sur Cloud Storage et de réduire vos coûts de stockage, en particulier lorsque vous exportez de grandes quantités de données. Lorsque vous exportez un fichier de dump SQL ou un fichier 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, l'importation et l'exportation depuis 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'opération d'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 fournisse pas de 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 Cloud Run Functions.
Dépannage
Cette section fournit des suggestions de correction pour les problèmes que vous pourriez rencontrer lors des 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 d'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 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 dump n'existent pas. | Avant d'importer un fichier de dump, 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. S'ils n'existent pas, l'opération d'importation ne parvient pas à recréer les objets avec la propriété ou les autorisations d'origine. | Créez les utilisateurs de la base de données requis avant de l'importer. |
GRANT stderr: ERROR: must be member of role ROLE_NAME
|
Cette erreur peut se produire si vous importez un fichier de dump 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 effectuant 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 le compte de service AlloyDB dispose des rôles roles/storage.objectAdmin ou roles/storage.objectCreator. 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 s'exportent différemment. 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, il se peut qu'elle soit trop volumineuse. | Envisagez d'exporter les données par lots plus petits. 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.
|
Erreur Create Extension dans le journal pg_restore ou échec de l'importation. |
Le fichier de dump contient des références à une extension PostgreSQL qui n'est pas compatible avec AlloyDB ou qui n'est pas installée sur votre cluster. | Pour supprimer les références, modifiez le fichier de dump ou installez l'extension sur votre cluster si AlloyDB est compatible. |
Erreur lors de l'utilisation de pg_dumpall. |
L'utilitaire pg_dumpall avec des options telles que --globals-only peut nécessiter des droits 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 l'option
pg_dumpall --globals-only --no-role-passwords
|
L'opération d'exportation expire ou vous voyez Connection reset by peer. |
Si Cloud Storage ne reçoit pas de données dans un certain délai, la connexion peut être réinitialisée. Cela peut se produire si les requêtes de base de données initiales requises pour l'exportation prennent trop de temps à s'exécuter. | 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 l'API à la fois. | Envoyez votre requête une fois l'opération en cours terminée. |
Étapes suivantes
- Importez des données à l'aide de fichiers de dump.
- Exporter des données à l'aide de fichiers de dump
- Importer 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
- Accéder aux données Apache Iceberg depuis AlloyDB
- Activez les sauvegardes automatiques.
- Restaurez à partir d'une sauvegarde.