View a markdown version of this page

Surveillance et résolution des problèmes - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Surveillance et résolution des problèmes

Aurora PostgreSQL signale l'activité des requêtes de tables étrangères via CloudWatch Amazon, les fonctions de diagnostic SQL, Database Insights et le journal PostgreSQL, les mêmes outils que vous utilisez déjà pour Aurora PostgreSQL. La surveillance couvre les indicateurs, les événements d'attente et les requêtes de diagnostic liés à l'observation d'une charge de travail ; le dépannage couvre les symptômes courants et explique comment les résoudre.

Contrôle

Cette section décrit les indicateurs, les événements d'attente et les requêtes de diagnostic que vous utilisez pour surveiller votre charge de travail analytique, ainsi que la façon de créer des tableaux de bord à partir de ces indicateurs. Pour des symptômes spécifiques, voirRésolution des problèmes.

Aurora PostgreSQL rend compte de ses activités d'analyse via quatre canaux. Chaque canal répond à une question différente, et la plupart des enquêtes en utilisent plusieurs.

  • CloudWatch Mesures Amazon : séries Instance-level chronologiques relatives à la mémoire, au cache, au débit, aux demandes Amazon S3 et aux threads de travail, ainsi que les métriques Aurora standard. Utilisez-les pour les tableaux de bord, les alarmes et les tendances pendant des heures, voire des semaines. Ce canal est le seul à prendre en charge les alarmes.

  • Fonctions de diagnostic SQL : Per-query et compteurs par backend lus en direct depuis l'instance. Utilisez-les lorsque vous avez besoin du nombre exact d'octets, de pertes ou de threads pour une requête ou un identifiant de processus, ce qu'Amazon CloudWatch ne peut attribuer.

  • Informations sur la base de données : activité de session échantillonnée plutôt que mesures publiées. Utilisez-le pour voir quelles requêtes dominent l'instance et ce qu'elles attendent.

  • Journalisation : messages du moteur dans le journal des erreurs de PostgreSQL. Utilisez-le en dernier recours pour les problèmes qui ne laissent aucune trace dans les trois autres canaux.

CloudWatch Métriques Amazon

Les CloudWatch métriques Amazon suivantes sont publiées pour Aurora Analytics.

CloudWatch Indicateurs Amazon d'Aurora Analytics
Nom des métriques Description Unit
AuroraAnalyticsActiveThreads Nombre total de threads de travail analytiques en cours d'exécution active. Nombre
AuroraAnalyticsMemoryUsage Mémoire consommée par toutes les sessions exécutant des requêtes de table étrangères. Octets
AuroraAnalyticsCacheHit Données diffusées depuis le cache. Octets
AuroraAnalyticsCacheHitRatio Rapport entre le nombre d'accès au cache et le nombre total d'accès aux données (0,0 à 1,0, 1,0 désignant toutes les lectures effectuées depuis le cache). Pour exprimer en pourcentage, multipliez par 100. Ratio
AuroraAnalyticsCacheSize Taille du cache sur disque. Octets
AuroraAnalyticsDiskSpillSize Espace disque temporaire utilisé par les spills de requêtes. Octets
AuroraAnalyticsRemoteRead Lecture de données depuis Amazon S3 (lectures à distance). Octets
AuroraAnalyticsS3GetRequest Nombre de GetObject demandes Amazon S3. Nombre
AuroraAnalyticsS3HeadRequest Nombre de HeadObject demandes Amazon S3. Nombre
Note

La AuroraAnalyticsActiveThreads métrique indique le nombre total de threads de travail actifs, y compris les threads d'exécution des requêtes et les I/O threads Amazon S3. Une valeur bien supérieure au nombre de sessions est normale, car chaque requête peut utiliser de nombreux fils de discussion. Par exemple, 8 sessions simultanées peuvent produire plusieurs centaines de threads actifs. Pour plus d’informations, consultez Interprétation du nombre de threads actifs.

Surveillance des performances du stockage local

Aurora PostgreSQL utilise le stockage local pour le cache de lecture sur disque et pour les fichiers de renvoi de requêtes, tels que les tris et les tables de hachage qui dépassent. query_mem Les statistiques indiquent que cela I/O dépend de la manière dont le stockage local est attaché à la classe d'instance. Vérifiez d'abord votre classe, puis utilisez l'ensemble de mesures correspondant ci-dessous.

Instances avec stockage Amazon EBS uniquement

Les classes telles que db.r8gdb.r7g, et n'db.r7iont pas de stockage d'instance, de sorte que les fichiers de cache de lecture et de déversement partagent le EBS-backed volume Amazon avec le reste de la base de données. Analytical est I/O donc en concurrence avec I/O PostgreSQL normal, et il est indiqué par les métriques de stockage générales plutôt que par un ensemble de métriques spécifiques à Analytics.

Mesures de stockage pour les EBS-only cours Amazon
Nom de la métrique Pertinence pour l'analyse Unit
ReadIOPS / WriteIOPS Amazon EBS lit et écrit des IOPS pour les fichiers de cache et de déversement. Étant donné que ces compteurs incluent également I/O PostgreSQL, comparez-les à une période pendant laquelle aucune requête analytique n'est exécutée pour voir le partage analytique. Count/Second
ReadLatency / WriteLatency Latence de lecture et d'écriture d'Amazon EBS. Les valeurs les plus élevées indiquent une I/O-bound charge de travail pour laquelle une classe d'instance NVMe serait utile. Secondes
ReadThroughput / WriteThroughput Débit de lecture et d'écriture Amazon EBS pour les fichiers de cache et de déversement. Bytes/Second
DiskQueueDepth I/O Demandes en suspens adressées au volume Amazon EBS. Des valeurs élevées soutenues indiquent que le volume est saturé et que les requêtes sont en attente de stockage. Nombre
FreeLocalStorage Stockage local disponible. Une valeur en baisse signifie que le cache et les fichiers de déversement remplissent le volume. Octets
Note

Sur Amazon, EBS-only les cours, regardez ReadLatency et DiskQueueDepth ensemble. L'augmentation de la latence associée à l'augmentation de la profondeur de la file d'attente signifie que le volume est à sa limite et que le correctif est une instance plus grande ou une classe NVMe plutôt qu'une modification de requête.

Instances avec stockage NVMe local

Des classes telles que db.r8gd et db.r6gd incluent un magasin d'instances NVMe, et Aurora PostgreSQL y place le cache de lecture et les fichiers de déversement plutôt que sur le volume Amazon EBS. Cela permet d'éviter que les I/O analyses soient intégrées au volume de la base de données et de réduire considérablement le temps de latence de lecture du cache. Le périphérique NVMe génère donc ReadIOPS des rapports via son propre ensemble de mesures de stockage éphémères et DiskQueueDepth ne reflète plus les analyses I/O relatives à ces classes. ReadLatency

Métriques de stockage pour les classes NVMe
Nom de la métrique Pertinence pour l'analyse Unit
ReadIOPSEphemeralStorage / WriteIOPSEphemeralStorage IOPS en lecture et en écriture NVMe. Des valeurs de lecture élevées indiquent des lectures de cache actives. Des valeurs d'écriture élevées indiquent une saturation du cache ou une activité de déversement. Count/Second
ReadLatencyEphemeralStorage / WriteLatencyEphemeralStorage Latence de lecture et d'écriture NVMe. L'augmentation des valeurs peut indiquer un conflit de stockage entre des requêtes simultanées. Secondes
ReadThroughputEphemeralStorage / WriteThroughputEphemeralStorage Débit de lecture et d'écriture NVMe. Bytes/Second
FreeEphemeralStorage Stockage NVMe éphémère disponible. Une valeur en baisse signifie que les fichiers de cache et de déversement remplissent le magasin d'instances. Octets
Note

Le cache de lecture sur disque ne résiste pas au redémarrage, au remplacement ou au basculement d'une instance. Sur les classes NVMe, le magasin d'instances est éphémère et est effacé ; sur les classes Amazon, EBS-only le volume Amazon EBS persiste, mais le cache est toujours invalidé. Dans les deux cas, le cache est ensuite vide, de sorte que les premières requêtes portant sur une table sont à nouveau lues depuis Amazon S3. Attendez-vous à une latence plus élevée et à une latence plus faible AuroraAnalyticsCacheHitRatio jusqu'à ce que le cache soit chaud.

Mesures Aurora standard pertinentes pour Analytics

Au-delà des mesures spécifiques à l'analyse, les métriques Aurora standard suivantes sont utiles pour surveiller une charge de travail analytique.

Mesures Aurora standard pertinentes pour Analytics
Nom de la métrique Pertinence pour l'analyse Unit
FreeLocalStorage Stockage local disponible pour le cache de lecture et pour les fichiers Query Spill. Une valeur en baisse signifie que le cache et les fichiers de déversement remplissent le volume. Sur les classes NVMe, utilisez-le FreeEphemeralStorage plutôt, car les fichiers de cache et de déversement se trouvent dans le magasin d'instance. Octets
FreeableMemory Pression globale sur la mémoire de l'instance. Des valeurs faibles indiquent un trop grand nombre de sessions simultanées. Octets
CPUUtilization Un processeur élevé est attendu lors des requêtes analytiques. Un maintien de 100 % peut indiquer une contention des fils de discussion. Pourcentage
DatabaseConnections Suit les connexions simultanées, y compris les sessions d'analyse. Nombre

SQL-based fonctions de diagnostic

Aurora PostgreSQL SQL-callable fournit des fonctions qu' CloudWatch Amazon ne peut attribuer aux compteurs de rapports : nombre exact d'octets, de spills et de threads pour une requête ou un backend. Commencez par le tableau suivant pour choisir une fonction, puis consultez la référence des fonctions SQL pour ses colonnes.

Fonctions de diagnostic SQL
Fonction Scope Ce qu'il répond
aurora_analytics_stat_statements() Par requête normalisée, cumulé Quelles requêtes sont lues depuis Amazon S3 plutôt que depuis le cache, sont renvoyées sur le disque ou utilisent le plus de CPU dans le moteur.
aurora_analytics_stat_resource_usage() Par backend, en direct Quel backend consomme actuellement de la mémoire, des threads de travail et de l'espace disponible.
aurora_analytics_instance_metrics() Instance complète, cumulée depuis le démarrage du moteur L'ampleur des requêtes Amazon S3 et l'activité du cache effectuées par l'instance, et si le moteur a redémarré.
aurora_analytics_cache_size() Instance complète, en cours La taille du cache de lecture sur disque a augmenté.

Toutes les colonnes d'octets indiquent des octets bruts, donc enveloppez-les pg_size_pretty() pour une sortie lisible. Pour la syntaxe, les autorisations et les exemples pratiques de chaque fonction, voirRéférence sur les fonctions SQL.

Exemples de requêtes et de résultats

Pour rechercher les requêtes lues depuis Amazon S3 plutôt que depuis le cache, exécutez la requête suivante.

-- Optional: enable the detailed columns, such as CPU time SET aurora_analytics.track_detailed_metrics = true; -- Run your queries, then check statistics SELECT SUBSTR(query, 1, 45) AS query, calls, pg_size_pretty(analytics_cache_hit_bytes) AS cache_hits, pg_size_pretty(analytics_remote_read_bytes) AS s3_reads, pg_size_pretty(analytics_total_disk_spill) AS spill, round(analytics_total_cpu_time::numeric, 2) AS cpu_ms FROM aurora_analytics_stat_statements() WHERE analytics_cache_hit_bytes > 0 OR analytics_remote_read_bytes > 0 ORDER BY analytics_remote_read_bytes DESC;

Interprétez les résultats comme suit.

  • analytics_cache_hit_bytesbien supérieur à analytics_remote_read_bytes : le cache est chaud et la plupart des lectures sont effectuées localement.

  • analytics_remote_read_bytesbien supérieur à analytics_cache_hit_bytes : le cache est froid ou l'ensemble de travail est trop grand.

  • analytics_total_disk_spillsupérieur à 0 : la requête se répand sur le disque en raison de la pression de la mémoire.

Pour attribuer de la mémoire, des threads et du spam à un backend, exécutez la requête suivante.

SELECT pid, pg_size_pretty(current_memory_usage) AS mem_used, active_threads, pg_size_pretty(disk_spill_size) AS spill FROM aurora_analytics_stat_resource_usage() WHERE current_memory_usage > 0 ORDER BY current_memory_usage DESC;

Joignez la pid colonne pg_stat_activity pour voir quelle requête est exécutée par chaque backend. Utilisez-le lorsque la AuroraAnalyticsMemoryUsage température est élevée et que vous devez savoir quelle session est responsable.

Pour afficher l'activité d'Amazon S3 et du cache à l'échelle de l'instance, exécutez la requête suivante.

SELECT s3_head_request_count, s3_get_request_count, pg_size_pretty(s3_cache_hit_bytes) AS cache_hit, pg_size_pretty(s3_remote_read_bytes) AS s3_read FROM aurora_analytics_instance_metrics();

Pour vérifier la taille du cache, exécutez la requête suivante.

SELECT pg_size_pretty(aurora_analytics_cache_size()) AS cache_size;

Pour rechercher des requêtes analytiques actives, exécutez la requête suivante.

WITH analytics_tables AS ( SELECT c.relname FROM pg_foreign_table ft JOIN pg_class c ON c.oid = ft.ftrelid JOIN pg_foreign_server fs ON fs.oid = ft.ftserver WHERE fs.srvname = 'aurora_analytics_server' ) SELECT a.pid, a.usename, a.datname, NOW() - a.query_start AS runtime, a.state, LEFT(a.query, 100) AS query_preview FROM pg_stat_activity a WHERE a.state = 'active' AND EXISTS (SELECT 1 FROM analytics_tables t WHERE a.query ILIKE '%' || t.relname || '%') ORDER BY a.query_start;

Interprétation du nombre de threads actifs

La CloudWatch métrique AuroraAnalyticsActiveThreads Amazon et la active_threads colonne de aurora_analytics_stat_resource_usage() rapport indiquent le nombre de fils de travail d'analyse qui s'exécutent activement au moment de la mesure. Ce nombre est souvent beaucoup plus élevé que le nombre de sessions simultanées, qui est attendu. Le nombre de threads actifs inclut deux types de threads de travail.

  • Threads d'exécution des requêtes : fils qui exécutent le plan de requête (scan, filtre, agrégation, jointure, tri). Aurora gère automatiquement le nombre de ces threads, en fonction du budget mémoire de la requête. Pour plus d’informations, consultez Threads de travail.

  • I/O Threads Amazon S3 : fils provenant d'un pool qui télécharge des blocs de données depuis Amazon S3 en parallèle en cas de défaillance du cache. Ces threads ne sont actifs que lorsque les données sont extraites d'Amazon S3. Dans un cache froid, ou lorsque l'ensemble de travail dépasse le cache, plusieurs de ces threads peuvent être actifs en même temps.

Seuls les threads qui travaillent activement sont pris en compte. Un thread inactif en attente de travail n'est pas inclus, de sorte que le nombre augmente et diminue continuellement au fur et à mesure de l'exécution d'une requête.

Comme les deux types de threads sont comptés ensemble, le total peut être bien supérieur au nombre de requêtes simultanées. Une poignée de requêtes lues simultanément depuis Amazon S3 concernant des erreurs de cache peuvent produire plusieurs centaines de threads actifs. C'est normal. Un nombre constamment élevé généré par les I/O threads Amazon S3 indique un faible taux de réussite du cache. Pensez donc à réchauffer ou à dimensionner le cache.

Ces threads de travail sont internes au moteur d'analyse et n'apparaissent pas danspg_stat_activity, qui affiche uniquement vos sessions PostgreSQL. C'est pourquoi un petit nombre de sessions peut entraîner une utilisation élevée du processeur : une seule session peut exécuter des dizaines ou des centaines de threads actifs.

Le nombre de threads actifs répond à la question « pourquoi le processeur est-il élevé avec seulement quelques sessions ? » , tandis que l'événement d'Extension:AuroraAnalyticsExecuteattente indique le nombre de sessions en attente sur le moteur d'analyse. Pour plus d’informations, consultez Interprétation de l'événement AuroraAnalyticsExecute d'attente.

Surveillance de Xmin Horizon sur les instances de lecteur

Long-running les requêtes analytiques sur les instances de lecteur maintiennent un instantané xmin ouvert, ce qui peut empêcher Autovacuum sur le rédacteur de récupérer des tuples morts. L'exécution de charges de travail analytiques sur un lecteur dédié permet d'isoler cet impact ; pour plus d'informations, consultez. Utilisation d'une instance de lecteur dédiée pour les analyses

statement_timeoutDéfini pour limiter la durée d'exécution d'une seule requête. Comme les autres paramètres PostgreSQL, vous pouvez le définir au niveau de la session, du rôle, de la base de données ou du groupe de paramètres du cluster ; utilisez le niveau le plus bas qui convient. Configurez-le par session pour une seule connexion.

SET statement_timeout = 'XX';

Vous pouvez également le définir par défaut pour le rôle d'analyse.

ALTER ROLE analytics_user SET statement_timeout = 'XX';

Database Insights

Lorsqu'Amazon vous CloudWatch indique que l'instance est sous pression, Database Insights vous indique quelles sessions et quel SQL sont responsables. Les requêtes de table étrangère y apparaissent comme n'importe quelle autre requête PostgreSQL. Vous utilisez donc le même graphique des sessions actives moyennes (AAS), la même liste des requêtes SQL les plus fréquentes et la même répartition des événements d'attente.

Aurora PostgreSQL ajoute un événement d'attente pour les requêtes de table étrangères.

Événement d'attente lié aux analyses
Événement d'attente Type Signification
Extension:AuroraAnalyticsExecute Extension Le backend exécute une requête dans le moteur d'analyse, y compris le temps passé à lire les données d'Amazon S3. Il s'agit du principal événement d'attente pour les requêtes de tables étrangères.

Pour identifier les principales requêtes analytiques, procédez comme suit.

  1. Accédez à l'onglet Top SQL.

  2. Trier par durée totale ou par appels.

  3. Recherchez les requêtes faisant référence à des tables étrangères (généralement préfixées parft_).

Interprétation de l'événement AuroraAnalyticsExecute d'attente

Lorsqu'une requête fait référence à une table étrangère, le serveur principal de PostgreSQL transmet l'exécution au moteur d'analyse intégré et la bloque jusqu'à ce que le moteur renvoie des résultats. Pendant ce temps, le backend signale l'événement Extension:AuroraAnalyticsExecute d'attente. Dans Database Insights, cela apparaît dans le graphique des sessions actives moyennes (AAS) sous la formeExtension:AuroraAnalyticsExecute. Gardez les points suivants à l'esprit.

  • Il est rapporté par session, et non par thread. Chaque backend PostgreSQL exécutant une requête analytique contribue au maximum à une unité de sessions Extension:AuroraAnalyticsExecute actives en moyenne, de la même manière que tout autre événement d'attente dans PostgreSQL. Si vous exécutez 8 requêtes analytiques simultanées, la contribution de cet événement d'attente à l'AAS est limitée à 8, quel que soit le nombre de threads de travail utilisés en interne par le moteur.

  • Il couvre à la fois le calcul et les lectures Amazon S3. Une seule requête passe du temps à effectuer des calculs en colonnes (agrégation, jointures, tri) et, en cas d'erreur de cache, à récupérer des données depuis Amazon S3. Les deux sont comptabilisés dans le cadre de cet événement d'attente unique. Le moteur n'émet actuellement aucun événement d'attente distinct pour les lectures Amazon S3.

  • Il est distinct du nombre de threads actifs. Le nombre de threads de travail internes que le moteur utilise pour traiter une requête est indiqué séparément, par la CloudWatch métrique AuroraAnalyticsActiveThreads Amazon et par la aurora_analytics_stat_resource_usage() fonction. Une seule session affichant une unité de Extension:AuroraAnalyticsExecute dans Database Insights peut correspondre à des dizaines ou des centaines de threads de travail actifs. Pour plus d’informations, consultez Interprétation du nombre de threads actifs.

Utilisez Database Insights pour savoir si le temps moyen des requêtes est stable ou s'il se dégrade au fil du temps. Une augmentation soudaine peut indiquer ce qui suit.

  • Le cache a été vidé (redémarrage, basculement).

  • Le volume de données a augmenté.

  • La simultanéité a augmenté au-delà des limites stables.

Logging

Aurora PostgreSQL peut écrire des messages du moteur d'analyse dans le journal des erreurs de PostgreSQL. La journalisation est un outil de diagnostic plutôt qu'un canal de surveillance : elle fournit des informations détaillées sur les opérations individuelles, et non des séries chronologiques sur lesquelles vous pouvez générer des tendances ou des alarmes. Deux paramètres le contrôlent. Définissez-les dans un groupe de paramètres de cluster de base de données pour couvrir l'ensemble de la charge de travail, ou SET au cours d'une seule session pour étendre la sortie à une seule investigation. La portée de la session nécessite SET le rôle. rds_superuser

aurora_analytics.enable_logging

Active ou désactive la journalisation du moteur. Activé par défaut.

aurora_analytics.logging_level

Contrôle la verbosité. DEBUG1est le niveau qui produit des informations diagnostiques utiles.

Les messages sont envoyés dans le journal des erreurs de PostgreSQL. Retrouvez-le de l'une des trois manières suivantes.

  • Console Amazon RDS : choisissez votre instance de base de données, choisissez Logs and events, puis choisissez le journal dans la section Logs.

  • Amazon CloudWatch Logs : disponible lorsque l'exportation des journaux est configurée pour le cluster de base de données, ce qui permet également de les conserver et de les interroger.

  • AWS CLI : exécutez la commande suivante.

    aws rds download-db-log-file-portion \ --db-instance-identifier <instance-id> \ --log-file-name error/postgresql.log \ --starting-token 0
Note

Le log_temp_files propre paramètre de PostgreSQL ne capture pas les données d'analyse, car le moteur n'écrit pas de fichiers temporaires dans PostgreSQL. Utilisez-le plutôt AuroraAnalyticsDiskSpillSize pour voir le déversement.

Référence des indicateurs clés

Le tableau suivant fournit une référence rapide sur l'état des analyses. Deux lignes dépendent de votre classe d'instance. Vérifiez donc le stockage utilisé par la classe avant de créer des alarmes à partir de ce tableau. Sur les classes NVMe, FreeLocalStorage ne suit pas le volume qui contient le cache de lecture et les fichiers de déversement. Une alarme restera donc silencieuse pendant que le magasin de l'instance est plein.

Référence des indicateurs clés
Ce qu'il faut vérifier Métrique Sain Avertissement Critique
Mémoire d'analyse AuroraAnalyticsMemoryUsage Dans les 30 % du budget de mémoire de l'instance 30 à 50 % de la mémoire de l'instance Plus de 50 %, ou requêtes échouant en raison d'erreurs liées à un manque de mémoire
Capacité de mémoire de l'instance FreeableMemory Stable et bien au-dessus de zéro sous charge En baisse constante à mesure que la simultanéité augmente Près de zéro, l'instance présente un risque de redémarrage
Efficacité du cache AuroraAnalyticsCacheHitRatio Supérieur à 0,7 0,3 à 0,7 Moins de 0,3 après l'échauffement
Volume de déversement AuroraAnalyticsDiskSpillSize Zéro ou faible Au-delà de votre charge de travail de base Large et durable
Stockage local gratuit, EBS-only cours Amazon FreeLocalStorage Gratuit à plus de 30 % 10 à 30 % gratuits Moins de 10 % gratuit
Stockage local gratuit, cours NVMe FreeEphemeralStorage Gratuit à plus de 30 % 10 à 30 % gratuits Moins de 10 % gratuit
Latence de lecture du stockage ReadLatencysur les EBS-only cours Amazon, ReadLatencyEphemeralStorage sur les cours NVMe Stabilité face à l'augmentation de la simultanéité Hausse du fait de la simultanéité des requêtes Hausse avec le DiskQueueDepth high également, sur les EBS-only cours Amazon
Lectures à distance AuroraAnalyticsRemoteRead Faible, le cache est en cours de service Augmentant Toujours élevé après l'échauffement
Processeur de l'instance CPUUtilization Moins de 80 % 80 à 95 % Maintenu à plus de 95 %

Résolution des problèmes

Cette section décrit les symptômes spécifiques, leurs causes et la façon de les résoudre. Pour les métriques, les événements d'attente et les requêtes de diagnostic utilisés pour surveiller une charge de travail, consultezContrôle.

Problèmes d'installation et de configuration

Les problèmes d'installation et de configuration courants sont les suivants.

Extension non disponible

Symptôme : CREATE EXTENSION aurora_analytics échec avec l'erreur suivante.

ERROR: extension "aurora_analytics" is not available

Causes et solutions : Cette erreur signifie que vous exécutez une version d'Aurora PostgreSQL qui ne prend pas en charge l'extension. aurora_analytics Pour utiliser cette fonctionnalité, effectuez une mise à niveau vers Aurora PostgreSQL 17.11 ou version ultérieure, ou vers la version 18.6 ou supérieure. Utilisez le tableau suivant pour identifier la cause et la résoudre.

Extension non disponible : causes et solutions
Cause Solution
La version du moteur ne prend pas en charge la fonctionnalité d'analyse. Vérifiez que votre cluster de base de données exécute une version d'Aurora PostgreSQL prise en charge (17.11 ou supérieure, ou 18.6 ou supérieure). Effectuez une mise à niveau si nécessaire.
Connecté au mauvais terminal. Vérifiez que vous êtes connecté au point de terminaison du cluster de base de données Aurora approprié.

Pour effectuer un diagnostic, exécutez les requêtes suivantes. La seconde ne renvoie aucune ligne sur une version non prise en charge.

SELECT version(); SELECT * FROM pg_available_extensions WHERE name = 'aurora_analytics';

Fonctionnalité non activée

Symptôme : Une requête portant sur une table étrangère échoue avec l'erreur suivante. Cela est distinct de l'erreur d'indisponibilité de l'extension : l'extension est installée avec succès, mais les requêtes sont rejetées car la fonctionnalité est désactivée au niveau du cluster de base de données.

ERROR: aurora_analytics is not enabled HINT: Set aurora_analytics.enabled to true in the parameter group and retry the query.

Cause : aurora_analytics.enabled est défini suroff.

Solution : définissez sur on dans aurora_analytics.enabled le groupe de paramètres de votre cluster de base de données. En tant que paramètre dynamique, la modification est appliquée immédiatement sans redémarrage.

Pour diagnostiquer, exécutez la requête suivante.

SHOW aurora_analytics.enabled;

Autorisation refusée pour créer une extension

Symptôme : La création de l'extension échoue avec l'erreur suivante.

ERROR: permission denied to create extension "aurora_analytics"

Solution : Pour créer l'extension, vous devez avoir le rds_superuser rôle ou être un utilisateur à qui le rds_extension rôle a été attribué et qui a délégué cette extension. Être propriétaire de la base de données n'est pas suffisant. Accordez le rds_superuser rôle et réessayez.

GRANT rds_superuser TO your_user; CREATE EXTENSION aurora_analytics;

Sinon, pour permettre à un non-superutilisateur de créer l'extension, accordez le rds_extension rôle et déléguez cette extension spécifique. Exécutez ce qui suit en tant querds_superuser.

GRANT rds_extension TO your_user; ALTER USER your_user SET rds.allowed_delegated_extensions = 'aurora_analytics';

La rds_extension subvention à elle seule n'est pas suffisante. Sans entrée aurora_analyticsrds.allowed_delegated_extensions, CREATE EXTENSION échoue avec « Cette extension n'est pas spécifiée dans \" rds.allowed_delegated_extensions \ "». Pour plus d'informations, consultez Utilisation de la prise en charge déléguée des extensions Amazon RDS pour PostgreSQL.

Le rôle IAM n'est pas actif

Symptôme : les requêtes de tables étrangères échouent avec des erreurs de refus d'accès, ou le statut du rôle s'affiche Pending au lieu deActive.

Diagnostic : exécutez la commande suivante pour vérifier l'état de l'association de rôles.

aws rds describe-db-clusters \ --db-cluster-identifier <cluster-id> \ --query "DBClusters[0].AssociatedRoles"

Solution : Utilisez le tableau suivant pour agir sur le statut.

État et action du rôle IAM
Statut Action
PENDING Patientez quelques minutes. L'association de rôles est asynchrone.
ACTIVE Le rôle est correctement attaché. Le problème est probablement lié à la politique IAM. Consultez Amazon S3 et les AWS Glue erreurs dans les sections suivantes.
Non répertorié Attachez le rôle à l'aide deadd-role-to-db-cluster.

Amazon S3 et erreurs d'accès aux données

Les erreurs courantes liées à Amazon S3 et à l'accès aux données sont répertoriées ci-dessous.

Accès refusé lors de la lecture d'Amazon S3

Symptôme : Une requête de table étrangère échoue avec l'erreur suivante.

ERROR: [Aurora Analytics] HTTP 403 Forbidden

Causes et solutions : Vérifiez les points suivants.

  • La politique IAM est manquante s3:GetObject : ajoutez l'autorisation pour le préfixe Amazon S3 spécifique.

  • La politique IAM est absente s3:ListBucket : obligatoire lorsque l'emplacement pointe vers un dossier plutôt que vers un seul fichier.

  • Compartiment ou préfixe Amazon S3 incorrect dans la politique : vérifiez que l'ARN correspond exactement à l'emplacement de votre table étrangère.

  • compartiment Amazon S3 dans un autre compte : ajoutez une politique de compartiment entre comptes qui accorde l'accès à votre rôle Aurora.

  • Point de terminaison VPC Amazon S3 non configuré : créez un point de terminaison de passerelle Amazon S3 et associez-le aux tables de routage d'Aurora.

Diagnostic : exécutez la requête suivante pour inspecter les options de la table étrangère.

SELECT ft.ftrelid::regclass, ftoptions FROM pg_foreign_table ft WHERE ft.ftrelid::regclass::text = 'ft_orders';

AWS Glue délai d'expiration ou erreur de connexion

Symptôme : une requête échoue avec l'erreur suivante.

ERROR: [Aurora Analytics] Glue GetTable API failed: curlCode: 28, Timeout was reached; Connection timed out after 301 milliseconds

Cause : aucun point de terminaison d'interface AWS Glue VPC n'existe ou un groupe de sécurité bloque le port TCP 443.

Pour résoudre ce problème : Procédez comme suit.

  1. Créez un point de terminaison d'interface AWS Glue VPC dans le même VPC que votre cluster de base de données Aurora.

    aws ec2 create-vpc-endpoint \ --vpc-id <vpc-id> \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.<region>.glue \ --subnet-ids <subnet-ids> \ --security-group-ids <sg-id> \ --private-dns-enabled
  2. Assurez-vous que le groupe de sécurité autorise le TCP 443 entrant depuis votre VPC CIDR.

    aws ec2 authorize-security-group-ingress \ --group-id <sg-id> \ --protocol tcp \ --port 443 \ --cidr <vpc-cidr>
  3. Vérifiez que la résolution DNS correspond à des adresses IP privées et non à des AWS adresses IP publiques.

    nslookup glue.<region>.amazonaws.com

AWS Glue table introuvable

Symptôme : une requête échoue avec l'erreur suivante.

ERROR: [Aurora Analytics] Glue GetTable API failed: EntityNotFoundException: Database not found: <name> -- or ERROR: [Aurora Analytics] Glue GetTable API failed: EntityNotFoundException: Table not found: <name>

Causes et solutions : utilisez le tableau suivant pour identifier la cause et la résoudre.

AWS Glue table introuvable : causes et solutions
Cause Solution
Erreur dans le nom de la base de données ou de la table. Vérifiez que les noms correspondent exactement (en distinguant majuscules et minuscules).
AWS Glue ressource dans une autre AWS région. Assurez-vous que la région AWS Glue ARN correspond à la région de votre point de terminaison VPC.
La politique IAM n'autorise pas l'accès à cette base de données ou à cette table. Ajoutez l' AWS Glue ARN spécifique à votre politique IAM.
La table a été supprimée de AWS Glue. Re-register le tableau dans le AWS Glue Data Catalog.

Diagnostic : exécutez la commande suivante.

aws glue get-table \ --database-name <db> \ --name <table> \ --region <region>

Mauvais format spécifié

Symptôme : une requête échoue avec l'erreur suivante.

ERROR: [Aurora Analytics] failed to fetch column information... HINT: If the S3 location contains Parquet files, verify the foreign table was created with format 'parquet' instead of 'iceberg'.

Solution : recréez le tableau étranger avec le format correct.

DROP FOREIGN TABLE ft_my_table; CREATE FOREIGN TABLE ft_my_table () SERVER aurora_analytics_server OPTIONS ( location 's3://my-bucket/data/', format 'parquet', region 'us-east-1' );

Échec de résolution DNS

Symptôme : une requête échoue avec l'erreur suivante.

ERROR: [Aurora Analytics] Glue GetTable API failed: curlCode: 6, Could not resolve host: glue.<region>.amazonaws.com

Cause : Mauvaise région dans l' AWS Glue ARN, ou le point de terminaison VPC n'est pas disponible dans cette région.

Solution : Procédez comme suit.

  • Vérifiez que la région de votre AWS Glue ARN correspond à la région dans laquelle votre point de terminaison VPC est déployé.

  • Vérifiez que le DNS privé est activé sur le point de terminaison VPC.

Problèmes de performances des requêtes

Les problèmes de performance des requêtes les plus courants sont les suivants.

Les requêtes sont lentes

Symptôme : les requêtes prennent plus de temps que prévu.

Causes et solutions : utilisez le tableau suivant pour déterminer pourquoi les requêtes sont lentes et comment y répondre.

Pourquoi les requêtes sont lentes
Cause Signal qui l'identifie Source Action
Cache froid après un redémarrage, un basculement ou un premier accès. AuroraAnalyticsCacheHitRatiofaible puis récupérant lors d'une rediffusion identique, ou pg_postmaster_start_time() récent. Amazon CloudWatch Réchauffez le cache en exécutant des requêtes classiques. Les courses suivantes sont plus rapides.
Lectures diffusées depuis Amazon S3 plutôt que depuis le cache. AuroraAnalyticsCacheHitRatioreste faible après l'échauffement, ou analytics_remote_read_bytes élevé par rapport àanalytics_cache_hit_bytes. Amazon CloudWatchaurora_analytics_cache_size(), aurora_analytics_stat_statements() Ajoutez des filtres afin que les requêtes analysent moins de données ; si l'ensemble de travail dépasse le cache, passez à une instance plus grande pour obtenir plus de cache.
La requête se répand sur le disque parce qu'elle query_mem est trop faible. analytics_total_disk_spillsupérieur à 0, AuroraAnalyticsDiskSpillSize en hausse. Amazon CloudWatch, aurora_analytics_stat_statements() Réduisez d'abord les données intermédiaires ; augmentez-les query_mem dans les limites de la marge de manœuvre.
Trop de sessions d'analyse simultanées. AuroraAnalyticsActiveThreadsmontant à côtéDatabaseConnections. Amazon CloudWatch Réduisez la simultanéité ou augmentez.
Requêtes de table étrangères consommant le processeur de l'instance. CPUUtilizationniveau élevé soutenu, Extension:AuroraAnalyticsExecute dominant l'AAS. Amazon CloudWatch, Database Insights Réduisez la simultanéité ou passez à un plus grand nombre de vCPU.
De nombreux objets de petite taille ou non compressés dans Amazon S3. Amazon CloudWatch Consolidez en fichiers plus volumineux et utilisez Snappy ou ZSTD. Consultez Optimisation de la mise en page des données dans Amazon S3.
Interrogez en lisant les colonnes dont elle n'a pas besoin (SELECT *sur une table large). analytics_remote_read_bytesdépassant de loinanalytics_total_result_size. aurora_analytics_stat_statements() Sélectionnez uniquement les colonnes dont vous avez besoin.
Cross-Region Accès à Amazon S3 après un changement de base de données globale. AuroraAnalyticsRemoteReadet AuroraAnalyticsS3GetRequest tous deux surélevés. Amazon CloudWatch Redirigez les tables étrangères vers une réplique de bucket dans la région locale. Consultez Cross-Region Latence d'Amazon S3 après le passage au numérique.

Requêtes utiles : pour vérifier si les requêtes sont traitées depuis le cache ou depuis Amazon S3, et si elles se répètent, exécutez la requête suivante.

SET aurora_analytics.track_detailed_metrics = true; -- Run your query, then check per-query stats SELECT query, analytics_cache_hit_bytes, analytics_remote_read_bytes, analytics_total_disk_spill FROM aurora_analytics_stat_statements() ORDER BY analytics_remote_read_bytes DESC;

Si cette valeur analytics_remote_read_bytes est élevée par rapport àanalytics_cache_hit_bytes, le cache est froid ou l'ensemble de travail dépasse la capacité du cache.

Pour vérifier le nombre de sessions d'analyse actives, exécutez la requête suivante.

SELECT COUNT(*) FROM pg_stat_activity a WHERE a.state = 'active' AND EXISTS ( SELECT 1 FROM pg_foreign_table ft JOIN pg_class c ON c.oid = ft.ftrelid JOIN pg_foreign_server fs ON fs.oid = ft.ftserver WHERE fs.srvname = 'aurora_analytics_server' AND a.query ILIKE '%' || c.relname || '%' );

Erreurs de mémoire insuffisante

Symptôme : deux erreurs partagent la même ERROR ligne mais diffèrent dans le mode HINT opératoireDETAIL. Dans le premier cas, la requête a besoin de plus de mémoire.

ERROR: [Aurora Analytics] Out of Memory Error: Failed to allocate memory for query execution. HINT: Possible solution: Increasing the query mem (SET aurora_analytics.query_mem='...GB')

Dans le second cas, l'instance de base de données est soumise à une pression de mémoire à l'échelle de l'instance.

ERROR: [Aurora Analytics] Out of Memory Error: Failed to allocate memory for query execution. DETAIL: Transaction cancelled due to insufficient memory

Cause : Distinguez les deux cas par la ligne qui les accompagne.

  • HINTprésent, la mémoire de requête est trop faible. L'ensemble de travail de la requête dépasse son query_mem budget par requête. Cela est spécifique à la requête, et une nouvelle tentative sans rien changer n'est d'aucune utilité. La requête échoue de la même manière à chaque fois jusqu'à ce que vous lui donniez plus de mémoire ou que vous réduisiez les données traitées.

  • DETAILpression de mémoire présente, instance. L'instance de base de données est soumise à une pression de mémoire globale, souvent en raison d'un trop grand nombre de sessions simultanées, et la gestion améliorée de la mémoire d'Aurora a annulé la transaction afin de maintenir la stabilité de l'instance. Cela est souvent transitoire et une nouvelle tentative aboutit souvent une fois que la pression est rétablie.

Confirmez la cause à l'aide de métriques : Vérifiez les points suivants.

  • AuroraAnalyticsMemoryUsageélevé par rapport à la taille de l'instance, au moment de l'erreur : les sessions d'analyse consomment de la mémoire. Réduisez la simultanéité ou query_mem par session.

  • FreeableMemoryfaible au moment de l'erreur : l'ensemble de l'instance est soumis à une pression de mémoire, et pas seulement les analyses, ce qui est le DETAIL cas.

  • DatabaseConnectionsaugmentation parallèle à l'erreur : trop de sessions simultanées se disputent la mémoire.

Pour résoudre ce problème : choisissez le chemin qui correspond au message. Si l'erreur est associée à un HINT (mémoire de requête trop faible), procédez comme suit.

  • Augmentez la mémoire de la session, puis relancez-la.

    SET aurora_analytics.query_mem = '16GB'; -- Rerun your query
  • Optimisez la requête pour réduire son ensemble de travail. Ajoutez des filtres pour réduire le volume de données avant les JOINs, divisez les requêtes complexes en étapes à l'aide de CTE ou de tables temporaires, ou réduisez le champ ORDER BY avec LIMIT.

  • Augmentez l'instance si la charge de travail nécessite légitimement plus de mémoire que ce que l'instance peut prévoir par requête.

  • Réessayer la même requête sans modification ne résout pas ce problème.

Si l'erreur entraîne une DETAIL (pression sur la mémoire de l'instance), procédez comme suit.

  • Réessayez la requête. Si la cause est une pression temporaire sur la mémoire à l'échelle de l'instance, la requête aboutit souvent une fois la pression relâchée.

  • Réduisez la simultanéité. Si de nombreuses sessions sont actives, certaines devront peut-être attendre.

  • Augmentez la taille de l'instance afin de fournir davantage de mémoire pour la même charge de travail.

Note

La gestion améliorée de la mémoire d'Aurora PostgreSQL annule les transactions lorsque l'instance de base de données est soumise à une pression de mémoire critique, ce qui empêche les redémarrages de l'instance de base de données induits par la charge de travail. Cette protection est activée par défaut. Pour plus d'informations, consultez la section Gestion améliorée de la mémoire dans Aurora PostgreSQL dans le guide de l'utilisateur Amazon Aurora.

Stockage insuffisant en raison d'une fuite de requêtes

Symptôme : une requête échoue avec l'erreur suivante.

ERROR: [Aurora Analytics] could not write to temporary file: No space left on device

Cause : lorsque les résultats intermédiaires d'une requête sont supérieursquery_mem, le moteur transfère les données vers un stockage local temporaire. Si plusieurs requêtes simultanées se répandent simultanément, ou si une seule requête déverse un très gros volume de données, le stockage local peut être épuisé. query_memest un budget par requête plutôt qu'un pool à l'échelle de l'instance, ce qui signifie que chaque requête simultanée peut générer son propre débordement et que les fichiers sortants partagent le stockage local avec le cache de lecture. Ensemble, c'est la raison pour laquelle la simultanéité, plutôt qu'une seule requête volumineuse, est le déclencheur habituel de l'épuisement.

Diagnostic : surveillez sur Amazon AuroraAnalyticsDiskSpillSize le volume CloudWatch de déversements à l'échelle de l'instance, puis attribuez-le à un backend.

SELECT pid, pg_size_pretty(disk_spill_size) AS spill, pg_size_pretty(current_memory_usage) AS mem_used, active_threads FROM aurora_analytics_stat_resource_usage() WHERE disk_spill_size > 0 ORDER BY disk_spill_size DESC;

Pour résoudre ce problème : Procédez comme suit.

  • Réduisez la simultanéité. Moins de sessions de déversement simultanées se traduisent par une diminution de la pression totale sur le disque. Cela résout la cause habituelle, prend effet lors de la prochaine exécution et ne nécessite aucun privilège élevé.

  • Optimisez la requête pour réduire le volume de données intermédiaire. Ajoutez LIMIT aux requêtes ORDER BY, ajoutez des filtres avant les jointures pour réduire la cardinalité, ou préagrégez-les dans des sous-requêtes avant de les joindre.

  • Vérifiez si le cache de lecture, plutôt que d'être déversé, consomme de l'espace de stockage local, et effacez-le uniquement si c'est le cas (le rds_superuser rôle est requis et assurez-vous qu'aucune requête n'est en cours d'exécution).

    -- Compare the cache size against the instance's local storage first SELECT aurora_analytics_cache_size(); SELECT aurora_analytics_clear_cache();
  • Augmentez l'échelle de l'instance. Les instances de plus grande taille, en particulier les db.r8gd variantes, disposent d'un stockage NVMe local plus important pour le cache et les spills.

Problèmes liés aux tables étrangères

Les problèmes courants liés aux tables étrangères sont les suivants.

Incompatibilité du schéma

Symptôme : une requête échoue avec l'erreur suivante ou renvoie des types de données incorrects.

ERROR: column "column_name" does not exist

Causes : les définitions des colonnes ne correspondent pas au schéma Parquet ou Iceberg réel, ou le schéma source a été modifié après la création de la table étrangère.

Pour résoudre ce problème : si la table étrangère existe déjà et que seules ses définitions de colonnes sont dérivées de la source, actualisez-la sur place avecaurora_analytics_refresh_foreign_table, ce qui permet de réconcilier les définitions de colonne sans supprimer ni recréer la table (en préservant les autorisations et les objets dépendants). Pour la syntaxe complète et les autorisations, voirRéférence sur les fonctions SQL. L'apply_changesargument est obligatoire : pass false pour prévisualiser les modifications sans modifier le tableau, ou true pour les appliquer. Faites d'abord un essai à sec, puis appliquez.

-- Preview the schema changes SELECT aurora_analytics_refresh_foreign_table('ft_my_table', false); -- Apply them SELECT aurora_analytics_refresh_foreign_table('ft_my_table', true);

Vous pouvez également recréer la table étrangère avec une inférence de schéma.

DROP FOREIGN TABLE ft_my_table; CREATE FOREIGN TABLE ft_my_table () SERVER aurora_analytics_server OPTIONS (location 's3://...', format 'parquet', region 'us-east-1'); -- Check inferred schema \d ft_my_table
Note

S'il aurora_analytics.lowercase_unquoted_column_name est défini sur true (par défaut), les colonnes sont en minuscules. Une colonne Parquet nommée OrderDate devient orderdate dans PostgreSQL.

Erreur de type de colonne non prise en charge

Symptôme : La création d'une table étrangère échoue avec l'erreur suivante.

ERROR: unsupported data type for column "complex_column"

Solution : activez l'option d'ignorer les colonnes non prises en charge, puis recréez la table étrangère. Les colonnes non prises en charge sont ignorées.

SET aurora_analytics.skip_unsupported_columns = true; -- Recreate the table, unsupported columns are skipped DROP FOREIGN TABLE ft_my_table; CREATE FOREIGN TABLE ft_my_table () SERVER aurora_analytics_server OPTIONS (location 's3://...', format 'parquet', region 'us-east-1');

Problèmes de connexion et de session

Les problèmes de connexion et de session les plus courants sont les suivants.

Long-running requêtes bloquant d'autres travaux

Symptôme : quelques requêtes analytiques consomment la plupart des ressources de l'instance, ce qui ralentit les performances. Sur Amazon CloudWatch, cela se traduit par un pic soutenu CPUUtilization associé à un AuroraAnalyticsActiveThreads nombre élevé, même si seules quelques sessions sont actives. Ces sessions indiquent l'événement Extension:AuroraAnalyticsExecute d'attente dans le graphique des sessions actives moyennes (AAS). Quelques sessions peuvent entraîner une charge CPU élevée car chaque requête analytique s'exécute sur de nombreux threads de travail ; voirInterprétation du nombre de threads actifs.

Diagnostic : exécutez la requête suivante pour rechercher les requêtes analytiques de longue durée.

WITH analytics_tables AS ( SELECT c.relname FROM pg_foreign_table ft JOIN pg_class c ON c.oid = ft.ftrelid JOIN pg_foreign_server fs ON fs.oid = ft.ftserver WHERE fs.srvname = 'aurora_analytics_server' ) SELECT a.pid, a.usename, a.datname, NOW() - a.query_start AS runtime, a.state, LEFT(a.query, 100) AS query_preview FROM pg_stat_activity a WHERE a.state = 'active' AND EXISTS (SELECT 1 FROM analytics_tables t WHERE a.query ILIKE '%' || t.relname || '%') ORDER BY a.query_start;

Solution : définissez un environnement statement_timeout d'exécution des requêtes limité pour les utilisateurs analytiques.

ALTER USER analyst SET statement_timeout = '30min';

Pour arrêter une requête déjà en cours d'exécution, annulez ou arrêtez son backend.

SELECT pg_cancel_backend(<pid>); -- cancel the query SELECT pg_terminate_backend(<pid>); -- terminate the session

Tempêtes de connexion

Symptôme : DatabaseConnections des pics soudains et des requêtes ralentissent ou échouent.

Solution : implémentez le regroupement des connexions (par exemple, Amazon RDS Proxy) pour gérer les connexions analytiques et définissez les statement_timeout valeurs appropriées pour empêcher les requêtes intempestives.

Basculement et basculement globaux des bases de données

Les problèmes suivants sont courants après un basculement ou un basculement de base de données globale.

Cross-Region Latence d'Amazon S3 après le passage au numérique

Symptôme : après le basculement ou le basculement d'une base de données globale, les requêtes analytiques ralentissent.

Cause : les tables étrangères pointent toujours vers des compartiments Amazon S3 situés dans la région d'origine, de sorte que le nouveau fichier principal indique Cross-region.

Confirmez la cause à l'aide de métriques : le niveau élevé AuroraAnalyticsRemoteRead et AuroraAnalyticsS3GetRequest après le passage au numérique, en particulier lorsque les requêtes qui étaient auparavant envoyées depuis le cache affichent désormais des lectures à distance soutenues, indique que le nouveau serveur principal extrait des données depuis la région d'origine plutôt que localement. On s'attend à ce que AuroraAnalyticsCacheHitRatio le nouveau serveur principal soit épuisé jusqu'à ce que son cache se réchauffe.

Ces indicateurs de volume ne permettent pas à eux seuls de distinguer les lectures interrégionales d'un réchauffement local du cache froid, car les deux augmentent le volume de lecture à distance juste après un basculement. La latence des requêtes Amazon S3 est ce qui les distingue : un pic de latence par requête indique des lectures entre régions, tandis qu'un cache froid local se réchauffe à une latence normale. Aurora PostgreSQL n'émet pas de métrique de latence de lecture à distance. Pour la mesurer, activez Amazon S3 Request Metrics sur le bucket et TotalRequestLatency surveillez (moyenne et p99) dans l'espace de noms Amazon. AWS/S3 CloudWatch Les métriques de demande Amazon S3 ne sont pas activées par défaut.

Pour résoudre ce problème : Procédez comme suit.

  • Répliquez vos données dans la région cible avant le basculement ou le basculement, par exemple avec Amazon S3 Cross-Region Replication (CRR).

  • Assurez-vous que le réseau de la région cible est prêt (point de terminaison VPC de la passerelle Amazon S3, routage de sous-réseau approprié).

  • Après le basculement ou le basculement, mettez à jour les définitions des tables étrangères pour qu'elles pointent vers le bucket de réplication de la région locale.

    ALTER FOREIGN TABLE ft_orders OPTIONS (SET location 's3://my-bucket-target-region/data/orders/'); ALTER FOREIGN TABLE ft_orders OPTIONS (SET region 'us-west-2');
  • Attendez que la réplication soit terminée avant de vous attendre à des performances optimales sur le nouveau serveur principal.

Note

Une table étrangère est location une définition répliquée unique, sans remplacement par région. region Le fait de rediriger une table étrangère vers la région du nouveau rédacteur fait en sorte que l'ancienne table principale lise interrégions à la place, et aucune configuration ne permet aux deux régions de lire Region-locally en même temps.

Association de rôles IAM manquante dans la région secondaire

Symptôme : les requêtes échouent avec l'erreur suivante.

ERROR: credential to access AWS service is unavailable HINT: Please attach IAM role with proper permission policy to this cluster with the feature name "AuroraAnalytics".

Cause : Le rôle IAM n'a jamais été associé au cluster de cette région.

Solution : associez le rôle IAM au nom de la fonctionnalitéAuroraAnalytics, puis attendez que son statut devienne Active le même.

Le rôle IAM ne dispose d'aucune autorisation dans la région secondaire

Symptôme : pour Parquet dans Amazon S3, les requêtes échouent avec l'erreur suivante.

ERROR: [Aurora Analytics] Executor Error: ... HTTP 403 Forbidden AccessDenied: User: arn:aws:sts::<account>:assumed-role/AuroraAnalyticsRole/... is not authorized to perform: s3:GetObject on resource: "arn:aws:s3:::<bucket>/<key>"

Pour Iceberg through AWS Glue, les requêtes échouent avec l'erreur suivante.

ERROR: [Aurora Analytics] Glue GetTable API failed: User: ... is not authorized to perform: glue:GetTable on resource: arn:aws:glue:<region>:<account>:catalog

Cause : Le rôle est associé, mais sa politique ne dispose pas des autorisations requises.

Solution : attachez une politique qui autorise les actions requises. L'erreur indique le nom exact de l'action et de la ressource qui ont été refusées.

Aucun chemin réseau vers Amazon S3 ou AWS Glue dans la région secondaire

Symptôme : pour Amazon S3, les requêtes échouent avec l'erreur suivante.

ERROR: [Aurora Analytics] Executor Error: ... Timeout was reached error for HTTP HEAD to 'https://<bucket>.s3.<region>.amazonaws.com/<key>'

Car AWS Glue les requêtes échouent avec l'erreur suivante.

ERROR: [Aurora Analytics] Glue GetTable API failed: curlCode: 28, Timeout was reached; Details: Connection timed out after 300 milliseconds

Cause : Il n'y a aucun point de terminaison VPC ni chemin NAT dans le VPC de cette région.

Solution : créez un point de terminaison de passerelle Amazon S3, un point de terminaison d' AWS Glue interface et un point de terminaison d'interface AWS STS.

Note

Les délais d'expiration d'Amazon S3 sont longs, avec quelques minutes de tentatives. Définissez statement_timeout et utilisez la logique des nouvelles tentatives.

Activation de la journalisation détaillée

Pour les problèmes transitoires ou difficiles à reproduire, activez temporairement la journalisation détaillée.

-- As rds_superuser SET aurora_analytics.enable_logging = true; SET aurora_analytics.logging_level = 'DEBUG1'; -- Reproduce the issue SELECT * FROM ft_problematic_table WHERE ...; -- Reset logging level after investigation RESET aurora_analytics.logging_level; RESET aurora_analytics.enable_logging;

Les messages de diagnostic du moteur d'analyse sont écrits dans le journal des erreurs de PostgreSQL. Pour la référence des paramètres et les trois méthodes de récupération du journal, consultezLogging.